-// -* 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",
{
var obj = new XMLHttpRequest ();
var url = server ? server + '/' + file : file;
- //alert ('loading ' + url);
obj.open ('GET', url, false);
obj.overrideMimeType ('text/xml');
obj.send ('');