Widget:A2Event: Unterschied zwischen den Versionen

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
Zeile 30: Zeile 30:
 
  var lines = text.split("\n");
 
  var lines = text.split("\n");
 
  for (var i=0; i<lines.length; i++) {
 
  for (var i=0; i<lines.length; i++) {
  var prefix = String(i);
+
  var prefix = String(i+1);
 
  while (prefix.length < 3)
 
  while (prefix.length < 3)
 
  prefix = " "+prefix;
 
  prefix = " "+prefix;
  
 
  var lineText = document.createTextNode(prefix + ": " + lines[i]+"\n");
 
  var lineText = document.createTextNode(prefix + ": " + lines[i]+"\n");
  if (error.line && i == error.line){
+
  if (error.line && i+1 == error.line){
 
  var $node = $('<span style="color: red;" />').append(lineText);
 
  var $node = $('<span style="color: red;" />').append(lineText);
  $node.append(document.createTextNode(error));
+
var c = "  ";
 +
while (c.length < error.column+4)
 +
c += "";
 +
$node.append(document.createTextNode(c+"^");
 +
  $node.append(document.createTextNode(error.message + "\n");
 
  } else {
 
  } else {
 
  var $node = $(lineText);
 
  var $node = $(lineText);

Version vom 10. Juli 2012, 20:19 Uhr

<script type="text/javascript">

function wait4a2 (f){
	if (window.a2 && window.a2.parser) {
		f();
	} else {
		if (window.importJS) {
			importJS("MediaWiki:Skin/Projekt:Adventure2/lib.js");
			importJS("MediaWiki:Skin/Projekt:Adventure2/parser.js");
		}
		window.setTimeout(function() { wait4a2(f); }, 100);
	}
}

$(function () {
	 wait4a2(function () {
	 
		var text = "";
		var error = "";
		var list = [];
		try {
			list = window.a2.parser.parse(text);
		} catch (e) {
			error = e;
		}
		if ("" != "render"){  
			$pre = $("<pr"+"e/>");
			var lines = text.split("\n");
			for (var i=0; i<lines.length; i++) {
				var prefix = String(i+1);
				while (prefix.length < 3)
					prefix = " "+prefix;
				var lineText = document.createTextNode(prefix + ": " + lines[i]+"\n");
				if (error.line && i+1 == error.line){
					var $node = $('').append(lineText);

var c = " "; while (c.length < error.column+4) c += ""; $node.append(document.createTextNode(c+"^");

					$node.append(document.createTextNode(error.message + "\n");
				} else {
					var $node = $(lineText);
				}
				$pre.append($node);				
			}
			if ($("#wikiPreview").length)
				$cont = $("#wikiPreview");
			else
				$cont = $("#bodyContent");
			$cont.append($pre);
			return;
		}
		if (error)
			return;
		for (var i=0; i<list.length; i++) {
		
			var type = list[i][0];
			var data = list[i][1];
			if (type == "event"){
				a2.registerEventHandler(data);
			} else {
				//FIXME: not yet implemented: declarations for item, page
			}
		}
	 });
});
 
</script>