*** empty log message ***
authorhanda <handa>
Sat, 20 Mar 2010 07:32:27 +0000 (07:32 +0000)
committerhanda <handa>
Sat, 20 Mar 2010 07:32:27 +0000 (07:32 +0000)
xex.js

diff --git a/xex.js b/xex.js
index c0ba885..19683a1 100644 (file)
--- a/xex.js
+++ b/xex.js
@@ -1,41 +1,99 @@
-// -* coding: utf-8; -*
+// xex.js -- Xex (XML Expression) interpreter
+// Copyright (C) 2010
+//   National Institute of Advanced Industrial Science and Technology (AIST)
+//   Registration Number H15PRO112
+
+// This file is part of the m17n database; a sub-part of the m17n
+// library.
+
+// The m17n library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public License
+// as published by the Free Software Foundation; either version 2.1 of
+// the License, or (at your option) any later version.
+
+// The m17n library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+
+// You should have received a copy of the GNU Lesser General Public
+// License along with the m17n library; if not, write to the Free
+// Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+var Xex = {};
+
+(function () {                 // Tracing
+  // The logging node containing tracing information.
+  var log = null;
+  // Number of lines.
+  var lines;
+  // Style properties of the logging node.
+  var styles = { border: '1px solid black',
+                font: 'normal normal normal small monospace',
+                width: '100%',
+                minHeight: '300px',
+                maxHeight: '300px',
+                overflow: 'auto' };
+  
+  // Toggle logging on and off.  PARENT if non-null specifies the
+  // parent of the log node.  The log node is appended to the parent.
+  // If PARENT is null, 'body' node is assumed.
+  Xex.LogToggle = function (parent)
+  {
+    if (log)
+      {
+       log.parentNode.removeChild (log);
+       log = null;
+       return;
+      }
+    if (! parent)
+      parent = document.getElementsByTagName ('body')[0];
+    log = document.createElement ('ol');
+    for (var prop in styles)
+      log.style[prop] = styles[prop];
+    parent.appendChild (log);
+    lines = 0;
+    return log;
+  }
 
-var Xex = {
-  LogNode: null,
-  LogNodeLen: 0,
-  Log: function (arg, indent, cont)
+  // Log ARG
+  Xex.Log = function (arg, indent)
   {
-    if (! Xex.LogNode)
+    if (! log)
       return;
     if (! arg)
       {
-       while (Xex.LogNode.childNodes.length > 0)
-         Xex.LogNode.removeChild (Xex.LogNode.firstChild);
-       LogNodeLen = 0;
+       while (log.childNodes.length > 0)
+         log.removeChild (log.firstChild);
+       lines = 0;
       }
     else
       {
        var node;
-       if (cont)
-         Xex.LogNode.lastChild.innerText += arg;
+       if (indent == -1)
+         log.lastChild.innerText += arg;
        else
          {
-           LogNodeLen++;
-           if (LogNodeLen >= 1000)
-             node = Xex.LogNode.firstElement ();
+           lines++;
+           if (lines >= 60)
+             {
+               node = log.firstElement ();
+               log.start = lines - 58;
+             }
            else
-             node = document.createElement ('div');
+             node = document.createElement ('li');
            if (indent != undefined)
              node.style.textIndent = (indent + 1) + 'em';
            else
              node.style.textIndent = '0px';
-           node.innerText = LogNodeLen + ': ' + arg;
-           Xex.LogNode.appendChild (node);
-           Xex.LogNode.scrollTop = Xex.LogNode.scrollHeight;
+           node.innerText = arg;
+           log.appendChild (node);
+           log.scrollTop = log.scrollHeight;
          }
       }
   }
-};
+}) ();
 
 Xex.Error = {
   UnknownError: "unknown-error",
@@ -1302,7 +1360,6 @@ Xex.Load = function (server, file)
 {
   var obj = new XMLHttpRequest ();
   var url = server ? server + '/' + file : file;
-  //alert ('loading ' + url);
   obj.open ('GET', url, false);
   obj.overrideMimeType ('text/xml');
   obj.send ('');