summaryrefslogtreecommitdiff
path: root/src/www/js
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2014-02-11 16:43:29 +0000
committerhallgren <hallgren@chalmers.se>2014-02-11 16:43:29 +0000
commit44ee072331424dae6a7918835bd15c51f56307e8 (patch)
tree3f71d0855d9cc26a7ab706e9adbfc7c9a10d887f /src/www/js
parent23dc22cea49b7dde812882cff8e77b27e1b6382f (diff)
Work on web api & apps based on the C run-time system
+ PGFService.hs: add command c-grammar, include probability in parse results + js/gftranslation.js: add start position and limit parameters, return more info to applications + Simple Translator: show two wide coverage translations + Wide coverage demo: show parse tree and probability (intended as grammar debugging aids)
Diffstat (limited to 'src/www/js')
-rw-r--r--src/www/js/gftranslate.js32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/www/js/gftranslate.js b/src/www/js/gftranslate.js
index 0043fce61..cf85a28e3 100644
--- a/src/www/js/gftranslate.js
+++ b/src/www/js/gftranslate.js
@@ -5,30 +5,36 @@ var gftranslate = {}
gftranslate.jsonurl="/robust/Translate8.pgf"
gftranslate.grammar="Translate" // the name of the grammar
-gftranslate.languages="Bul Chi Eng Fin Fre Ger Hin Swe".split(" ")
- // hardwired for now
gftranslate.call=function(querystring,cont) {
http_get_json(gftranslate.jsonurl+querystring,cont)
}
-// Translate a sentence to the given target language
-gftranslate.translate=function(source,from,to,cont) {
+// Translate a sentence
+gftranslate.translate=function(source,from,to,start,limit,cont) {
var encsrc=encodeURIComponent(source)
var g=gftranslate.grammar
- function extract(result) {
- cont(result[0].translations[0].linearizations[0].text)
- }
+ function extract(result) { cont(result[0].translations) }
if(encsrc.length<200) // match limit in runtime/c/utils/pgf-server.c
gftranslate.call("?command=c-translate&input="+encsrc
- +"&from="+g+from+"&to="+g+to+"&limit=1",extract)
- else cont("[GF robust parser: sentence too long]")
+ +"&from="+g+from+"&to="+g+to
+ +"&start="+start+"&limit="+limit,extract)
+ else cont([{error:"sentence too long"}])
}
// Get functions to test which source and target langauges are supported
gftranslate.get_support=function(cont) {
- if(!gftranslate.targets) gftranslate.targets=toSet(gftranslate.languages)
- function ssupport(code) { return gftranslate.targets[code] }
- function tsupport(code) { return gftranslate.targets[code] }
- cont(ssupport,tsupport)
+ function support(code) { return gftranslate.targets[code] }
+ function init2(grammar_info) {
+ var ls=grammar_info.languages
+ gftranslate.grammar=grammar_info.name
+ var langs=[], pre=gftranslate.grammar, n=pre.length
+ for(var i=0;i<ls.length;i++)
+ if(ls[i].name.substr(0,n)==pre) langs.push(ls[i].name.substr(n))
+ gftranslate.targetlist=langs
+ gftranslate.targets=toSet(langs)
+ cont(support,support)
+ }
+ if(gftranslate.targets) cont(support,support)
+ else gftranslate.call("?command=c-grammar",init2)
}