Данный модуль возвращает данные о символах Юникода по их десятеричному или шестнадцатеричному представлению.
Использование
правитьlocal unicodeData = require('Module:Unicode/data').getData
unicodeData(3807) -- работает с десятеричным вводом
unicodeData('0EDF') -- если используете шестнадцатеричный ввод, то в строке должно быть минимум 4 символа (`0EDF` вместо `EDF`).
В результате вы получите данные о символе в виде таблицы.
Генерация данных
правитьДля генерации данных можете воспользоваться следующим JS-скриптом и данными из этой ссылки: https://www.unicode.org/Public/15.0.0/ucd/UnicodeData.txt:
const fs = require('fs');
const input = `
<здесь вставьте текст и ссылки выше>
`.trim();
function transformToLuaTable(text) {
const lines = text.split('\n');
const result = [];
lines.forEach(line => {
const parts = line.split(';');
const key = parts[0];
const luaTable = {};
for (let i = 0; i < 13; i++) {
luaTable[i + 1] = parts[i + 1] !== undefined && parts[i + 1] !== '' ? parts[i + 1] : null;
}
result.push({ key, luaTable });
});
return result;
}
function formatLuaTable(luaTable) {
let result = '{\n';
luaTable.forEach(entry => {
result += ` ["${entry.key}"] = {\n`;
const entries = entry.luaTable;
for (const index in entries) {
result += ` [${index}] = ${entries[index] === null ? 'nil' : `"${entries[index]}"`},\n`;
}
result += ' },\n';
});
result += '}';
return result;
}
const luaTable = transformToLuaTable(input);
const formattedLuaTable = formatLuaTable(luaTable);
fs.writeFile('unicode_data.lua', formattedLuaTable, 'utf8', (err) => {
if (err) {
console.error('Error writing file:', err);
} else {
console.log('File has been saved as unicode_data.lua');
}
});
Полученную таблицу нужно разделить на несколько частей и записать их в подстраницы данного модуля. Также не забудьте задать границы в функции getModuleIndex()
. Например в Модуль:Unicode/data/1 последним символом является 0EDF
, поэтому в функции прописано следующее:
if number <= tonumber('0x0EDF') then
return 1
Это страница документации Модуль:Unicode/data.