Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
  • Loading branch information
ZwerOxotnik committed May 27, 2024
1 parent 9e9cc12 commit 63ba28e
Show file tree
Hide file tree
Showing 8 changed files with 121 additions and 32 deletions.
1 change: 0 additions & 1 deletion languages/sitelen_pona/nasin-nanpa/lexicon.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
-- Created for "nasin-nanpa" font (https://github.com/ETBCOR/nasin-nanpa)

---@class SitelenPona: string
-- TODO: use preprocess

---@type table<string, SitelenPona>
Expand Down
1 change: 0 additions & 1 deletion languages/sitelen_pona/sitelenselikiwen/lexicon.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
-- Created for "sitelen seli kiwen" font (https://www.kreativekorp.com/software/fonts/sitelenselikiwen/)

---@class SitelenPona: string
-- TODO: use preprocess

---@type table<string, SitelenPona>
Expand Down
43 changes: 43 additions & 0 deletions languages/tuki_tiki/UCSUR/romanized_lexicon.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
-- Created for (https://www.kreativekorp.com/ucsur/charts/titi-pula.html)

---@type table<string, TitiPula>
return {
a = "󱱀",
ala = "󱱁",
i = "󱱂",
iku = "󱱃",
ilu = "󱱄",
ka = "󱱅",
kati = "󱱆",
ki = "󱱇",
kiku = "󱱈",
ku = "󱱉",
la = "󱱊",
lapi = "󱱋",
li = "󱱌",
lika = "󱱍",
lili = "󱱎",
lu = "󱱏",
lupa = "󱱐",
mi = "󱱑",
muku = "󱱒",
paka = "󱱔",
pali = "󱱕",
puka = "󱱖",
pula = "󱱗",
taka = "󱱘",
tama = "󱱙",
tiki = "󱱚",
tiku = "󱱛",
tila = "󱱜",
tilu = "󱱝",
timi = "󱱞",
tipi = "󱱟",
titi = "󱱠",
tu = "󱱡",
tuki = "󱱢",
tula = "󱱣",
tulu = "󱱤",
uli = "󱱥",
upi = "󱱦",
}
6 changes: 3 additions & 3 deletions languages/tuki_tiki/sitelenselikiwen/cyrillization.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ for k, v in pairs(full_latin_lexicon) do
end


---@type table<string, SitelenPona>
---@type table<string, TitiPula>
local cyrillic_lexicon = {}

-- Я знаю что это неправильно, но хуже иметь не правильное отображение
Expand Down Expand Up @@ -36,7 +36,7 @@ local latin2_to_cyrillic = {


-- It has some mistakes and it can be optimized
for word, sitelen_pona in pairs(latin_lexicon) do
for word, titi_pula in pairs(latin_lexicon) do
---@param _word string
local function parse_word(_word)
local new_words = {}
Expand Down Expand Up @@ -81,7 +81,7 @@ for word, sitelen_pona in pairs(latin_lexicon) do

-- Add words
for _, new_word in pairs(new_words) do
cyrillic_lexicon[new_word] = sitelen_pona
cyrillic_lexicon[new_word] = titi_pula
end
for k in pairs(new_words) do
new_words[k] = nil
Expand Down
6 changes: 3 additions & 3 deletions languages/tuki_tiki/sitelenselikiwen/greek_transcription.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ for k, v in pairs(full_latin_lexicon) do
end


---@type table<string, SitelenPona>
---@type table<string, TitiPula>
local greek_lexicon = {}

-- It's probably wrong!
Expand All @@ -27,12 +27,12 @@ local latin_to_greek = {
}

-- It's probably wrong!
for word, sitelen_pona in pairs(latin_lexicon) do
for word, titi_pula in pairs(latin_lexicon) do
local new_word = ""
for l in word:gmatch(".") do
new_word = new_word .. (latin_to_greek[l] or l)
end
greek_lexicon[new_word] = sitelen_pona
greek_lexicon[new_word] = titi_pula
end

return greek_lexicon
5 changes: 2 additions & 3 deletions languages/tuki_tiki/sitelenselikiwen/lexicon.lua
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
-- Created for "sitelen seli kiwen" font (https://github.com/ETBCOR/nasin-nanpa)

---@class SitelenPona: string
-- TODO: use preprocess

---@type table<string, SitelenPona>
---@type table<string, TitiPula>
local __lexicon = {}
do
package.loaded.romanized_lexicon = nil
package.loaded.cyrillization = nil
package.loaded.greek_transcription = nil

---@type table<string, SitelenPona>[]
---@type table<string, TitiPula>[]
local lexicons = {
require("romanized_lexicon"),
require("cyrillization"),
Expand Down
2 changes: 1 addition & 1 deletion languages/tuki_tiki/sitelenselikiwen/romanized_lexicon.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
-- Created for "sitelen seli kiwen" font (https://github.com/ETBCOR/nasin-nanpa)

---@type table<string, SitelenPona>
---@type table<string, TitiPula>
return {
a = "󱱀",
ala = "󱱁",
Expand Down
89 changes: 69 additions & 20 deletions sitelen_pona.lua → main.lua
Original file line number Diff line number Diff line change
@@ -1,32 +1,39 @@
-- Library to simplify text interactions with sitelen pona
-- sitelen pona: https://sona.pona.la/wiki/languages/sitelen_pona/en
-- toki pona: https://tokipona.org
-- Library to simplify text interactions with logographic writing systems.
-- Maintainer: ZwerOxotnik
-- License: MIT


---@class SitelenPonaPart : table
---@field result_text SitelenPona?
---@field original string?
---@field is_add_space true?
---@field is_new_line boolean?
--[[
M.transcribe(language: string, font: string, _text: string, new_line_pattern="[^\r\n]+"): ConScriptPart[], boolean
M.ligature(language: string, font: string, parts: ConScriptPart[]): ConScriptPart[], boolean
M.ConScriptParts_to_string(parts: ConScriptPart[], new_line_characters="\r\n"): string
--[[
M.transcribe(language: string, font: string, _text: string, new_line_pattern="[^\r\n]+"): SitelenPonaPart[], boolean
M.ligature(language: string, font: string, parts: SitelenPonaPart[]): SitelenPonaPart[], boolean
]]


---@class SitelenPonaModule : module
---@class SitelenPona: string # https://sona.pona.la/wiki/languages/sitelen_pona/en
---@class TitiPula: string
---@class ConScript: SitelenPona, TitiPula


---@class ConScriptPart : table
---@field result_text ConScript?
---@field original string?
---@field is_add_space true?
---@field is_new_line boolean?


---@class ConScriptModule : module
local M = {
_VERSION = "0.1.0",
_VERSION = "0.2.0",
_LICENSE = "MIT",
_SOURCE = "https://github.com/ZwerOxotnik/sitelen_pona_lua",
_URL = "https://github.com/ZwerOxotnik/sitelen_pona_lua"
}


---@type table<string, table<string, table<string, ConScript|ConScript[]>>>
M.__full_lexicon = {
sitelen_pona = {
sitelenselikiwen = require("languages/sitelen_pona/sitelenselikiwen/lexicon"),
Expand All @@ -36,7 +43,7 @@ M.__full_lexicon = {
sitelenselikiwen = require("languages/tuki_tiki/sitelenselikiwen/lexicon"),
},
}
---@type table<string, table<string, table<string, SitelenPona>[]>>

local __lexicon = {}
for language, font_data in pairs(M.__full_lexicon) do
__lexicon[language] = {}
Expand All @@ -47,21 +54,24 @@ for language, font_data in pairs(M.__full_lexicon) do
end
end
end
---@cast __lexicon table<string, table<string, table<string, ConScript>>>
M.__lexicon = __lexicon

---@type table<string, SitelenPona>[]

local __characters_lexicon = {
---@type table<string, table<string, SitelenPona|SitelenPona[]>>
sitelen_pona = {
sitelenselikiwen = require("languages/sitelen_pona/sitelenselikiwen/characters"),
["nasin-nanpa"] = require("languages/sitelen_pona/nasin-nanpa/characters"),
},
---@type table<string, table<string, TitiPula|TitiPula[]>>
tuki_tiki = {
sitelenselikiwen = require("languages/tuki_tiki/sitelenselikiwen/characters"),
},
}
M.__characters_lexicon = __characters_lexicon

---@type table<string, SitelenPona>[]
---@type table<string, table<string, table<string, table>>>
local __ligature_lexicon = {
sitelen_pona = {
sitelenselikiwen = require("languages/sitelen_pona/sitelenselikiwen/ligature"),
Expand Down Expand Up @@ -128,7 +138,7 @@ __special_char_expr = __special_char_expr .. "])"
---@param font string
---@param _text string
---@param new_line_pattern string? # new_line_pattern
---@return SitelenPonaPart[], boolean # string[], is sitelen pona?
---@return ConScriptPart[], boolean # string[], is sitelen pona?
function M.transcribe(language, font, _text, new_line_pattern)
new_line_pattern = new_line_pattern or "[^\r\n]+"
_text = _text:lower()
Expand Down Expand Up @@ -333,8 +343,8 @@ end

---@param language string
---@param font string
---@param parts SitelenPonaPart[]
---@return SitelenPonaPart[], boolean # is ligatured?
---@param parts ConScriptPart[]
---@return ConScriptPart[], boolean # is ligatured?
function M.ligature(language, font, parts)
local parts_copy = {}
for i = 1, #parts do
Expand Down Expand Up @@ -387,7 +397,7 @@ function M.ligature(language, font, parts)
ligature_length = ligature_length + 1

original_text = original_text .. part.original .. " "
if type(ligature_lexicon) == "table" then
if type(ligature_lexicon) ~= "table" then
goto skip
end

Expand All @@ -407,4 +417,43 @@ function M.ligature(language, font, parts)
end


---@param parts ConScriptPart[]
---@param new_line_characters string? # Default: "\r\n"
---@return string
function M.ConScriptParts_to_string(parts, new_line_characters)
local results = {}
local r_i = 0
new_line_characters = new_line_characters or "\r\n"

local is_ConScript_part = false
for i=1, #parts do
local part = parts[i]

if part.is_new_line then
r_i = r_i + 1
results[r_i] = new_line_characters
goto continue
end

r_i = r_i + 1
if part.result_text then
results[r_i] = part.result_text
is_ConScript_part = true
else
results[r_i] = part.original
is_ConScript_part = false
end

if not is_ConScript_part and part.is_add_space then
r_i = r_i + 1
results[r_i] = " "
end

::continue::
end

return table.concat(results, "")
end


return M

0 comments on commit 63ba28e

Please sign in to comment.