<head></head>
<body>
<pre id='test'></pre>
<script>
"use strict";
fetch('PropertyValueAliases.txt').then((response1) => { //Get file from https://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt
let aliases = ' aliases = {<br>';
let aliases_temp = ;
let alias = ;
let aliasOf = ;
response1.text().then((text1) => {
aliases_temp = text1.split("\n").filter((filter) => {
return filter.startsWith("sc ;");
});
for (let i = 0; i < aliases_temp.length; i++) {
aliases_temp = aliases_temp.replace(/ +(?= )/g,'').replace("sc ; ", "").replace(" ; Qaai", "").replace(" ; Qaac", "").split(' ; ');
alias.push(aliases_temp);
aliasOf.push(aliases_temp);
aliases_temp = aliases_temp.replaceAll('_', ' ');
aliases += ' ' + aliases_temp + ' = "' + aliases_temp + '",<br>';
}
aliases += '<br> },<br>}<br><br>-- For binary searching, because the length operator doesn\'t work on tables<br>-- loaded with mw.loadData.<br>data.ranges.length = #data.ranges<br><br>return data';
});
fetch('Scripts.txt').then((response2) => { //Get file from https://www.unicode.org/Public/UNIDATA/Scripts.txt
function replaceLetters(replace1, replace2, string) {
const index = replace1.indexOf(string);
if (index !== -1) {
string = string.replace(replace1, replace2);
}
return string;
}
let ranges = ' ranges = {<br>';
let ranges_temp = ;
let singles = '--]).<br>--]=]<br><br>';
let singles_temp = ;
response2.text().then((text2) => {
singles += 'local data = {<br> singles = {<br>';
singles_temp = text2.split("\n").filter((filter) => {
return (filter.startsWith("#") === false && filter !== '');
});
for (let i = 0; i < singles_temp.length; i++) {
singles_temp = singles_temp.substring(0, singles_temp.indexOf('#')).replace(/ +(?= )/g,'').split(' ; ');
singles_temp = singles_temp + ' ' + replaceLetters(aliasOf, alias, singles_temp.slice(0, -1));
if (singles_temp.includes("..")) {
ranges_temp.push(singles_temp);
singles_temp.splice(i, 1);
i--;
}
}
for (let i = 0; i < singles_temp.length; i++) {
singles_temp = singles_temp.split(' ');
if (singles_temp.length === 4) {
singles_temp = '0x0' + singles_temp;
}
else if (singles_temp.length === 5) {
singles_temp = '0x' + singles_temp;
}
singles_temp = singles_temp + ' ' + singles_temp
}
singles_temp.sort();
for (let i = 0; i < singles_temp.length; i++) {
singles_temp = singles_temp.split(' ');
singles += ' + '] = "' + singles_temp + '",<br>';
}
for (let i = 0; i < ranges_temp.length; i++) {
ranges_temp = ranges_temp.split(' ');
ranges_temp = ranges_temp.split('..');
for (let j = 0; j < ranges_temp.length; j++) {
if (ranges_temp.length === 4) {
ranges_temp = '0x0' + ranges_temp;
}
else if (ranges_temp.length === 5) {
ranges_temp = '0x' + ranges_temp;
}
}
ranges_temp = ranges_temp + '..' + ranges_temp
ranges_temp = ranges_temp + ' ' + ranges_temp
}
ranges_temp.sort();
for (let i = 0; i < ranges_temp.length; i++) {
ranges_temp = ranges_temp.split(' ');
ranges_temp = ranges_temp.split('..');
ranges += ' { ' + ranges_temp + ', ' + ranges_temp + ', "' + ranges_temp + '" },<br>'
}
singles += ' },<br><br>';
ranges += ' },<br> -- Scripts.txt gives full names; here we consider them aliases to save space.<br>';
document.getElementById('test').innerHTML = singles + ranges + aliases;
});
});
});
</script>
</body>