diff options
| author | hallgren <hallgren@chalmers.se> | 2013-04-12 12:47:13 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2013-04-12 12:47:13 +0000 |
| commit | 40e9fe30c32401dc9e00442970b263baa4306417 (patch) | |
| tree | a634c77106f171426f875ab8d6bdd387ad643f19 /src | |
| parent | 59f9f9dd1742e5b50a0f6893fb88325d4e3bc1ea (diff) | |
gfrobust.js: adding a JavaScript API to the GF Robust Parser translation service
Factored out from the Simple Translation Tool.
Diffstat (limited to 'src')
| -rw-r--r-- | src/www/js/gfrobust.js | 35 | ||||
| -rw-r--r-- | src/www/translator/index.html | 3 | ||||
| -rw-r--r-- | src/www/translator/translator.js | 49 |
3 files changed, 62 insertions, 25 deletions
diff --git a/src/www/js/gfrobust.js b/src/www/js/gfrobust.js new file mode 100644 index 000000000..327c77a98 --- /dev/null +++ b/src/www/js/gfrobust.js @@ -0,0 +1,35 @@ + +/* --- GF robust parser interface ------------------------------------------- */ + +var gfrobust = {} + +gfrobust.url="http://www.grammaticalframework.org:41296/robust-parser.cgi" +gfrobust.grammar="Parse" // the name of the grammar +gfrobust.targetlist=[] // do not use, exposed only for debugging + +gfrobust.call=function(querystring,cont) { + http_get_json(gfrobust.url+querystring,cont) +} + +// Translate a sentence to the given target language +gfrobust.translate=function(source,to,cont) { + var enc=encodeURIComponent + gfrobust.call("?sentence="+enc(source)+"&to="+gfrobust.grammar+to,cont) +} + +// Get functions to test which source and target langauges are supports +gfrobust.get_support=function(cont) { + function ssupport(code) { return code=="Eng" } + function tsupport(code) { return gfrobust.targets[code] } + function init2(langstr) { + var ls=langstr.split(" "); // ls probably contains an empty string here + var langs=[], pre=gfrobust.grammar, n=pre.length + for(var i=0;i<ls.length;i++) + if(ls[i].substr(0,n)==pre) langs.push(ls[i].substr(n)) + gfrobust.targetlist=langs + gfrobust.targets=toSet(langs) + cont(ssupport,tsupport) + } + if(gfrobust.target) cont(ssupport,tsupport) + else gfrobust.call("",init2) // retrieve list of supported target languages +} diff --git a/src/www/translator/index.html b/src/www/translator/index.html index 7f61c3c67..b561f0fc3 100644 --- a/src/www/translator/index.html +++ b/src/www/translator/index.html @@ -77,12 +77,13 @@ </div> <hr> <div class=modtime><small>HMTL -<!-- hhmts start -->Last modified: Fri Apr 5 15:09:28 CEST 2013 <!-- hhmts end --> +<!-- hhmts start -->Last modified: Fri Apr 12 14:18:13 CEST 2013 <!-- hhmts end --> </small></div> <a href="about.html">About</a> <script type="text/javascript" src="../js/support.js"></script> <script type="text/javascript" src="../js/pgf_online.js"></script> +<script type="text/javascript" src="../js/gfrobust.js"></script> <script type="text/javascript" src="../js/localstorage.js"></script> <script type="text/javascript" src="../gfse/localstorage.js"></script> <script type="text/javascript" src="../gfse/cloud2.js"></script> diff --git a/src/www/translator/translator.js b/src/www/translator/translator.js index 9115c0cf1..a09286594 100644 --- a/src/www/translator/translator.js +++ b/src/www/translator/translator.js @@ -118,7 +118,8 @@ Translator.prototype.update_language_menus=function() { mark_menus(yes,yes) break; case "GFRobust": - mark_menus(gfrobust_ssupport,gfrobust_tsupport) + if(window.gfrobust) gfrobust.get_support(mark_menus) + else mark_menus(no,no) break; case "Apertium": function ssupport(code) { @@ -139,10 +140,6 @@ Translator.prototype.update_language_menus=function() { } } -function gfrobust_ssupport(code) { return code=="Eng" } -var gfrobust_targets=toSet(["Eng","Ger","Fin","Bul","Hin"]) // !!! Get list from server -function gfrobust_tsupport(code) { return gfrobust_targets[code] } - Translator.prototype.gf_supported=function(grammar,langcode) { var t=this; var concname=t.grammar_info[grammar].name+langcode @@ -218,27 +215,31 @@ Translator.prototype.update_translation=function(i) { upd2(translate_output) } function upd0(source) { - var url="http://www.grammaticalframework.org:41296/robust-parser.cgi" - http_get_json(url+"?sentence="+encodeURIComponent(source)+"&to=Parse"+o.to,upd1) - } - var fls=gfrobust_ssupport(o.from) - var tls=gfrobust_tsupport(o.to) - if(fls && tls) { - var want={from:o.from, to:o.to, method:"GFRobust"} - if(!eq_options(segment.options,want)) { - //console.log("Updating "+i) - lextext(segment.source,upd0) - //upd0(segment.source) - } - //else console.log("No update ",want,segment.options) + gfrobust.translate(source,o.to,upd1) } + if(!window.gfrobust) + upd3(["[GF robust parser is not available]"]) else { - var fn=" from "+concname(o.from) - var tn=" to "+concname(o.to) - var msg="The GF robust translation service: not supported:" - if(!fls) msg+=fn+(tls ? "." : ", ") - if(!tls) msg+=tn+"." - upd3(["["+msg+"]"]) + function check_support(fls,tls) { + if(fls && tls) { + var want={from:o.from, to:o.to, method:"GFRobust"} + if(!eq_options(segment.options,want)) { + //console.log("Updating "+i) + lextext(segment.source,upd0) + //upd0(segment.source) + } + //else console.log("No update ",want,segment.options) + } + else { + var fn=" from "+concname(o.from) + var tn=" to "+concname(o.to) + var msg="The GF robust translation service: not supported:" + if(!fls) msg+=fn+(tls ? "." : ", ") + if(!tls) msg+=tn+"." + upd3(["["+msg+"]"]) + } + } + gfrobust.get_support(check_support) } } |
