summaryrefslogtreecommitdiff
path: root/src/runtime/javascript/minibar/pgf_online.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/javascript/minibar/pgf_online.js')
-rw-r--r--src/runtime/javascript/minibar/pgf_online.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/runtime/javascript/minibar/pgf_online.js b/src/runtime/javascript/minibar/pgf_online.js
new file mode 100644
index 000000000..d100f8bf9
--- /dev/null
+++ b/src/runtime/javascript/minibar/pgf_online.js
@@ -0,0 +1,51 @@
+
+/* --- Grammar access object ------------------------------------------------ */
+
+function pgf_online(options) {
+ var server = {
+ // State variables (private):
+ grammars_url: "/grammars/",
+ grammar_list: null,
+ current_grammar_url: null,
+
+ // Methods:
+ switch_grammar: function(grammar_url,cont) {
+ this.current_grammar_url=this.grammars_url+grammar_url;
+ cont();
+ },
+ get_grammarlist: function(cont) {
+ http_get_json(this.grammars_url+"grammars.cgi",cont);
+ },
+ pgf_call: function(cmd,args,cont) {
+ var url=this.current_grammar_url+"?command="+cmd;
+ for(var arg in args) url+="&"+arg+"="+encodeURIComponent(args[arg]);
+ http_get_json(url,cont);
+ },
+
+ get_languages: function(cont) {
+ this.pgf_call("grammar",{},cont);
+ },
+
+ get_random: function(cont) {
+ this.pgf_call("random",{random:Math.random()},cont);
+ },
+ linearize: function(tree,to,cont) {
+ this.pgf_call("linearize",{tree:tree,to:to},cont);
+ },
+ complete: function(from,input,cont) {
+ this.pgf_call("complete",{from:from,input:input},cont);
+ },
+ parse: function(from,input,cont) {
+ this.pgf_call("parse",{from:from,input:input},cont);
+ },
+ translate: function(from,input,cont) {
+ this.pgf_call("translate",{from:from,input:input},cont);
+ },
+ translategroup: function(from,input,cont) {
+ this.pgf_call("translategroup",{from:from,input:input},cont);
+ }
+
+ };
+ for(var o in options) server[o]=options[o];
+ return server;
+} \ No newline at end of file