Shammer's Philosophy

My private adversaria

JavaScript 二重配列

JavaScriptによるソースコード整形表示 - Shammerismでは、エスケープ文字を一つ一つ if 文で判定していたが、エスケープ文字をまとめて二重配列として定義。

<script type="text/javascript">
var escapeChars = [
  [" ","&nbsp;"],
  ["<","&lt;"],
  [">","&gt;"],
  ["\"","&quot;"],
  ["&","&amp;"]
];
var array = document.getElementById("sample-source").innerHTML.split("\n");
var lineLength = array.length;
replaced = "<table border=\"0\">";
for( i = 0 ; i < lineLength ; i++ ){
  replaced = replaced + "<tr><td>" + (i + 1) + "</td>";
  if( i == 0 ) {
    replaced = replaced + "<td rowspan=\"" + lineLength + "\" ";
    replaced = replaced + "style=\"width: 1pm; height: 12px; ";
    replaced = replaced + "background-color:green;\"></td>";
  }
  replaced = replaced + "<td>";
  var charLength = array[i].length;
  jloop:
  for( j = 0 ; j < charLength ; j++ ){
    var c = array[i].charAt(j);
    for( z = 0 ; z < escapeChars.length ; z++ ){
      if( c == escapeChars[z][0] ){
        replaced = replaced + escapeChars[z][1];
	continue jloop;
      }
    }
    replaced = replaced + c;
  }
  replaced = replaced + "</td></tr>";
}
replaced = replaced + "</table>";
document.getElementById("sample-source").innerHTML = replaced;
</script>