From d43f3e7f5d547fa5f925dd0b4e880baab0fff634 Mon Sep 17 00:00:00 2001 From: bjorn Date: Tue, 12 Aug 2008 20:13:41 +0000 Subject: [PATCH] Add language selectors to JavaScript translator. --- lib/javascript/gflib.js | 20 +++++++++++++++----- lib/javascript/translator.html | 14 ++++++++++---- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/lib/javascript/gflib.js b/lib/javascript/gflib.js index ee96edbab..4e8b8223d 100644 --- a/lib/javascript/gflib.js +++ b/lib/javascript/gflib.js @@ -7,17 +7,27 @@ function GFGrammar(abstract, concretes) { /* Translates a string from any concrete syntax to all concrete syntaxes. Uses the start category of the grammar. */ -GFGrammar.prototype.translate = function (input) { - var outputs = new Array(); - for (var c1 in this.concretes) { +GFGrammar.prototype.translate = function (input, fromLang, toLang) { + var outputs = new Object(); + var fromConcs = this.concretes; + if (fromLang) { + fromConcs = new Object(); + fromConcs[fromLang] = this.concretes[fromLang]; + } + var toConcs = this.concretes; + if (toLang) { + toConcs = new Object(); + toConcs[toLang] = this.concretes[toLang]; + } + for (var c1 in fromConcs) { var p = this.concretes[c1].parser; if (p) { var trees = p.parseString(input, this.abstract.startcat); if (trees.length > 0) { outputs[c1] = new Array(); for (var i in trees) { - outputs[c1][i] = new Array(); - for (var c2 in this.concretes) { + outputs[c1][i] = new Object(); + for (var c2 in toConcs) { outputs[c1][i][c2] = this.concretes[c2].linearize(trees[i]); } } diff --git a/lib/javascript/translator.html b/lib/javascript/translator.html index b17b4bfea..65f815f72 100644 --- a/lib/javascript/translator.html +++ b/lib/javascript/translator.html @@ -8,10 +8,16 @@ Web-based GF Translator - -
- - + + +

+ +

+

+ From: + To: + +