mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 08:32:50 -06:00
Minibar: PGF server API: pass callback functions directly instead of passing function names as strings.
This commit is contained in:
@@ -31,40 +31,40 @@ var server = {
|
|||||||
this.current_grammar_url=options.grammars_url+grammar_name;
|
this.current_grammar_url=options.grammars_url+grammar_name;
|
||||||
},
|
},
|
||||||
|
|
||||||
get_grammarlist: function(cont_name) {
|
get_grammarlist: function(cont) {
|
||||||
jsonp(options.grammars_url+"grammars.cgi",cont_name);
|
jsonpf(options.grammars_url+"grammars.cgi",cont);
|
||||||
},
|
},
|
||||||
get_languages: function(cont_name) {
|
get_languages: function(cont) {
|
||||||
jsonp(this.current_grammar_url,cont_name);
|
jsonpf(this.current_grammar_url,cont);
|
||||||
},
|
},
|
||||||
get_random: function(cont_name) {
|
get_random: function(cont) {
|
||||||
jsonp(this.current_grammar_url+"?command=random&random="+Math.random(),cont_name);
|
jsonpf(this.current_grammar_url+"?command=random&random="+Math.random(),cont);
|
||||||
},
|
},
|
||||||
linearize: function(tree,to,cont_name) {
|
linearize: function(tree,to,cont) {
|
||||||
jsonp(this.current_grammar_url+"?command=linearize&tree="
|
jsonpf(this.current_grammar_url+"?command=linearize&tree="
|
||||||
+encodeURIComponent(tree)+"&to="+to,cont_name)
|
+encodeURIComponent(tree)+"&to="+to,cont)
|
||||||
},
|
},
|
||||||
complete: function(from,input,cont_name) {
|
complete: function(from,input,cont) {
|
||||||
jsonp(this.current_grammar_url
|
jsonpf(this.current_grammar_url
|
||||||
+"?command=complete"
|
+"?command=complete"
|
||||||
+"&from="+encodeURIComponent(from)
|
+"&from="+encodeURIComponent(from)
|
||||||
+"&input="+encodeURIComponent(input),
|
+"&input="+encodeURIComponent(input),
|
||||||
cont_name);
|
cont);
|
||||||
|
|
||||||
},
|
},
|
||||||
translate: function(from,input,cont_name) {
|
translate: function(from,input,cont) {
|
||||||
jsonp(this.current_grammar_url
|
jsonpf(this.current_grammar_url
|
||||||
+"?command=translate"
|
+"?command=translate"
|
||||||
+"&from="+encodeURIComponent(from)
|
+"&from="+encodeURIComponent(from)
|
||||||
+"&input="+encodeURIComponent(input),
|
+"&input="+encodeURIComponent(input),
|
||||||
cont_name)
|
cont)
|
||||||
},
|
},
|
||||||
translategroup: function(from,input,cont_name) {
|
translategroup: function(from,input,cont) {
|
||||||
jsonp(this.current_grammar_url
|
jsonpf(this.current_grammar_url
|
||||||
+"?command=translategroup"
|
+"?command=translategroup"
|
||||||
+"&from="+encodeURIComponent(from)
|
+"&from="+encodeURIComponent(from)
|
||||||
+"&input="+encodeURIComponent(input),
|
+"&input="+encodeURIComponent(input),
|
||||||
cont_name)
|
cont)
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -88,7 +88,7 @@ function start_minibar(opts) {
|
|||||||
append_extra_buttons(extra);
|
append_extra_buttons(extra);
|
||||||
if(!options.grammars_url) options.grammars_url=options.server+"/grammars/";
|
if(!options.grammars_url) options.grammars_url=options.server+"/grammars/";
|
||||||
if(options.grammar_list) show_grammarlist(options.grammar_list);
|
if(options.grammar_list) show_grammarlist(options.grammar_list);
|
||||||
else server.get_grammarlist("show_grammarlist");
|
else server.get_grammarlist(show_grammarlist);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ function new_grammar(menu) {
|
|||||||
|
|
||||||
function select_grammar(grammar_name) {
|
function select_grammar(grammar_name) {
|
||||||
server.switch_grammar(grammar_name);
|
server.switch_grammar(grammar_name);
|
||||||
server.get_languages("show_languages");
|
server.get_languages(show_languages);
|
||||||
}
|
}
|
||||||
|
|
||||||
function langpart(conc,abs) { // langpart("FoodsEng","Food") == "Eng"
|
function langpart(conc,abs) { // langpart("FoodsEng","Food") == "Eng"
|
||||||
@@ -231,7 +231,7 @@ function complete_typed(inp) {
|
|||||||
var c=menu.current;
|
var c=menu.current;
|
||||||
if(!inp.completing || inp.completing!=inp.value) {
|
if(!inp.completing || inp.completing!=inp.value) {
|
||||||
inp.completing=inp.value;
|
inp.completing=inp.value;
|
||||||
server.complete(c.from,c.input+inp.value,"show_completions");
|
server.complete(c.from,c.input+inp.value,show_completions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,13 +246,13 @@ function finish_typed(inp) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function generate_random() {
|
function generate_random() {
|
||||||
server.get_random("lin_random");
|
server.get_random(lin_random);
|
||||||
}
|
}
|
||||||
|
|
||||||
function lin_random(abs) {
|
function lin_random(abs) {
|
||||||
var menu=element("language_menu");
|
var menu=element("language_menu");
|
||||||
var lang=menu.current.from;
|
var lang=menu.current.from;
|
||||||
server.linearize(abs[0].tree,lang,"show_random");
|
server.linearize(abs[0].tree,lang,show_random);
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_random(random) {
|
function show_random(random) {
|
||||||
@@ -266,7 +266,7 @@ function show_random(random) {
|
|||||||
|
|
||||||
function get_completions(menu) {
|
function get_completions(menu) {
|
||||||
var c=menu.current;
|
var c=menu.current;
|
||||||
server.complete(c.from,c.input,"show_completions");
|
server.complete(c.from,c.input,show_completions);
|
||||||
}
|
}
|
||||||
|
|
||||||
function word(s) {
|
function word(s) {
|
||||||
@@ -322,9 +322,9 @@ function show_completions(complete_output) {
|
|||||||
function get_translations(menu) {
|
function get_translations(menu) {
|
||||||
var c=menu.current;
|
var c=menu.current;
|
||||||
if(options.show_grouped_translations)
|
if(options.show_grouped_translations)
|
||||||
server.translategroup(c.from,c.input,"show_groupedtranslations");
|
server.translategroup(c.from,c.input,show_groupedtranslations);
|
||||||
else
|
else
|
||||||
server.translate(c.from,c.input,"show_translations");
|
server.translate(c.from,c.input,show_translations);
|
||||||
}
|
}
|
||||||
|
|
||||||
function tdt(tree_btn,txt) {
|
function tdt(tree_btn,txt) {
|
||||||
|
|||||||
@@ -25,6 +25,18 @@ function jsonp(url,callback)
|
|||||||
document.body.appendChild(script);
|
document.body.appendChild(script);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var json = {next:0};
|
||||||
|
|
||||||
|
// Like jsonp, but instead of passing the name of the ballback function, you
|
||||||
|
// pass the callback function directly, making it possible to use anonymous
|
||||||
|
// functions.
|
||||||
|
function jsonpf(url,callback)
|
||||||
|
{
|
||||||
|
var name="callback"+(json.next++);
|
||||||
|
json[name]=function(x) { delete json[name]; callback(x); }
|
||||||
|
jsonp(url,"json."+name);
|
||||||
|
}
|
||||||
|
|
||||||
/* --- HTML construction ---------------------------------------------------- */
|
/* --- HTML construction ---------------------------------------------------- */
|
||||||
function text(s) { return document.createTextNode(s); }
|
function text(s) { return document.createTextNode(s); }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user