diff options
Diffstat (limited to 'mkcharacters')
-rwxr-xr-x | mkcharacters | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/mkcharacters b/mkcharacters deleted file mode 100755 index 5d4a2f4..0000000 --- a/mkcharacters +++ /dev/null @@ -1,156 +0,0 @@ -#!/usr/bin/env texlua ------------------------------------------------------------------------ --- FILE: mkcharacters.lua --- USAGE: ./mkcharacters.lua --- DESCRIPTION: import parts of char-def.lua --- REQUIREMENTS: lua, ConTeXt, the lualibs package --- AUTHOR: Philipp Gesang (Phg), <phg42.2a@gmail.com> --- VERSION: 2.4 --- CREATED: 2013-05-17 12:41:39+0200 ------------------------------------------------------------------------ --- we create a stripped-down version of char-def.lua ------------------------------------------------------------------------ - ------------------------------------------------------------------------ --- config ------------------------------------------------------------------------ -local charfile = "./luaotfload-characters.lua" -local chardef = "/home/phg/base/char-def.lua" - ---- for every code point char-def.lua provides a set of fields. they ---- are: ---- ---- * adobename ---- * category ---- * cjkwd ---- * comment ---- * contextname ---- * description ---- * direction ---- * lccode ---- * linebreak ---- * mathclass ---- * mathextensible ---- * mathfiller ---- * mathname ---- * mathspec ---- * mathstretch ---- * mathsymbol ---- * mirror ---- * shcode ---- * specials ---- * textclass ---- * uccode ---- * unicodeslot ---- * variants - -local import = { - "direction", "mirror", --> πολυγλωσσία/uax9 - "category", --> https://gist.github.com/phi-gamma/5812290 - "textclass", --> https://gist.github.com/phi-gamma/6488187 -} - ------------------------------------------------------------------------ --- includes ------------------------------------------------------------------------ - -kpse.set_program_name"luatex" - -for _, lib in next, { "lualibs-lua.lua", - "lualibs-lpeg.lua", - "lualibs-table.lua", } do - local found = assert(kpse.find_file(lib, "lua"), - "Could not locate " .. lib .. ".\n" - .. "Please install the lualibs package.") - require(found) -end - -if not (chardef and lfs.isfile(chardef)) then - --- we could grab the file from contextgarden but as Context is part - --- of TL it’s not worth bothering - chardef = assert(kpse.find_file("char-def.lua", "lua"), - "Could not find ConTeXt.") -end - ------------------------------------------------------------------------ --- functionality ------------------------------------------------------------------------ - -local get_characters = function ( ) - local data - local inchan = io.open(chardef, "r") - if not inchan then - io.write("Could not open file for reading: "..chardef.."\n.") - goto fail - end - data = inchan:read "*all" - inchan:close() - data = loadstring(data) - if data then - data() --> characters.data - data = nil - collectgarbage "collect" - if characters.data and next(characters.data) then - return characters.data - end - io.write "Character table empty.\n" - goto fail - end - io.write(chardef .. " is not a valid Lua file.\n") - ::fail:: - io.write "Emergency exit.\n" - os.exit(1) -end - -local extract_fields_indeed -extract_fields_indeed = function (data, acc, lastidx) - local idx, char = next(data, lastidx) - if idx then - local imported = { } - for i=1, #import do - local field = import[i] - imported[field] = char[field] - end - acc[idx] = imported - return extract_fields_indeed(data, acc, idx) - end - return acc -end - -local extract_fields = function (data) - return extract_fields_indeed(data, {}, nil) -end - -local writedata = function (data) - local outchan = io.open(charfile, "w") - if not outchan then - io.write("Could not open "..charfile.." for writing.\n") - return false - end - outchan:write(data) - outchan:close() - return true -end - -do - local chardata = get_characters() - local stripped = extract_fields(chardata) - local serialized = table.serialize(stripped, true, { - compact = true, - noquotes = true, - hexify = true, --- for consistency with char-def - }) - if writedata(serialized) then - goto done - end - goto fail -end - -::done:: - os.exit(0) - -::fail:: - io.write "Emergency exit.\n" - os.exit(1) - ---- vim:ft=lua:ts=2:et:sw=2 |