*** empty log message ***
[m17n/m17n-lib-js.git] / mim.js
diff --git a/mim.js b/mim.js
index 09d7587..25d59e4 100644 (file)
--- a/mim.js
+++ b/mim.js
@@ -74,6 +74,23 @@ MIM.im = function (lang, name, filename)
     for (var keystring in mapdef)
       add_keystring (this.keymap, keystring, mapdef[keystring]);
   }
+
+  this.load_map_node = function ()
+  {
+    this.keymap = new Array ();
+    var maps = this.body.getElementsByTagName ('map');
+    var map = maps[0];
+    var rules = map.getElementsByTagName ('rule');
+    for (var i = 0; i < rules.length; i++)
+      {
+       var rule = rules[i];
+       var keyseq_elm = MIM.first_element (rule);
+       var keystring = keyseq_elm.attributes[0].nodeValue;
+       var insert_elm = MIM.next_element (rule);
+       var str = insert_elm.attributes[0].nodeValue;
+       add_keystring (this.keymap, keystring, str);
+      }
+  }
 };
 
 MIM.error_return = function (msg, ret)
@@ -148,6 +165,7 @@ MIM.parse = function (im)
   for (var i = 0; i < states.length; i++)
     if (! MIM.check_state (im, states[i]))
       MIM.error_return ('Unsupported directive in state', false);
+  im.load_map_node ();
   return true;
 }
 
@@ -204,42 +222,15 @@ MIM.load_sync = function (im)
 
   if (! obj)
     alert ("XMLHttpRequest not supported");
-  if (true)
-    {
-  obj.open ('GET', im.url, false);
-  im.status = 1; /* loading */
+  obj.open ('GET', 'latn-post.mimx', false);
+  obj.overrideMimeType ('text/xml');
   obj.send ("");
-  try {
-    eval (obj.responseText);
-    im.status = 2; /* loaded */
-  } catch (e) {
-    alert ("load error:" + e.message + " at " + e.lineNumber
-          + " " + obj.responseText);
-    im.status = -1; /* load fail */
-  };
-    }
-
-  if (true) {
-    obj.open ('GET', 'latn-post.mimx', false);
-    obj.overrideMimeType ('text/xml');
-    obj.send ("");
-    im.body = obj.responseXML;
-    document.AnXml = im.body;
-    if (! MIM.parse (im))
-      {
-       alert (im.parse_error);
-       return false;
-      }
-  } else {
-    var doc = document.implementation.createDocument ("", "", null);
-    doc.async = false;
-    doc.contentType = "text/xml";
-    doc.load ('latn-post.mimx');
-    document.AnXml = doc;
-    im.body = doc;
-    MIM.parse (im);
-  }
-  return im;
+  im.body = obj.responseXML;
+  document.AnXml = im.body;
+  if (MIM.parse (im))
+    return im;
+  alert (im.parse_error);
+  return false;
 };
 
 MIM.load = function (im)