javascriptで高度なテキストのソートを行う方法

前回、単純なjavascriptでテキストのソートを行う方法を紹介しましたが、 より高度なソートを行うには、sort()の引数に比較を行う関数を与えます。 例えば、次のHTMLをChromeのアドレスバーに貼り付けると、文字”=”以降の文字列を使ってソートを行うことが出来ます。 (Aipoのpropertiesファイルを値でソートすることが出来ます)

data:text/html, <!DOCTYPE html>
<html contenteditable>
<head>
<title>Do</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<body>
<script language="JavaScript">
function doScript(val){
 var val=val.split(/\r?\n/g).sort(compare).join("\r");
 document.getElementById('result').value =val;
}

function compare(val1, val2){ 
 compStr=document.getElementById('compStr').value;
 cval1=val1.substr(val1.indexOf(compStr));
 cval2=val2.substr(val2.indexOf(compStr));
 if (cval1 < cval2){return -1;} 
 return 1;
}
</script>
<form id="editor" action="/search" method="GET" onsubmit="doScript(this.val.value);return false;">
<textarea name="val" > value</textarea>
<input type="submit" value="DoScript"/>
</form>
<textarea id="compStr">=</textarea>
<textarea id="result">result</textarea>

</body></html>