diff --git a/R2H2.lua b/R2H2.lua deleted file mode 100644 index 3611212..0000000 --- a/R2H2.lua +++ /dev/null @@ -1,244 +0,0 @@ ---functions -function CopyToClipboard(textString) - outClipFile, err = io.open("clipboardTempFile",'w') - if err then - print("[Error Opening Clipboard Temporary File for Writing]") - return - end - outClipFile:write(textString,'\n') - outClipFile:close() - command = 'cat "' .. "clipboardTempFile" .. '" | xclip -selection clipboard &' - os.execute(command) - os.execute("rm clipboardTempFile") -end - -function PrintPosition(string) - local print_text = "" - for i = 1, string.len(string) do - while i >= 10 do i = i - 10 end - print_text = print_text .. tostring(i) - end - print("pos: " .. print_text) - print_text = "" - for i = 1, string.len(string) do - i = math.floor(i/10) - while i >= 10 do i = i - 10 end - if i == 0 then i = " " end - print_text = print_text .. tostring(i) - end - print(" " ..print_text) -end - --- DATA --- vowels -vowel_table = {"a","e","i","o","u"} -symbol_vowel = {"","","","",""} -symbol_extending_vowel = {"","","","",""} --- consonants -consonant_table = {"g","sh","r","ny","ch","n","y","f","t","k","w","l","p","b","d","h","m"} -symbol_consonant = {"","","","","","","","","","","","","","","","",""} -symbol_extending_consonant = {"","","","","","","","","","","","","","","","",""} --- composites -composing_consonant_table = {"g","sh","r","ny","ch","m","y","f","t","k","w","l","p","b","d","h"} -symbol_composite = { - {"","","","","","","","","","","","","","","",""}, - {"","","","","","","","","","","","","","","",""}, - {"","","","","","","","","","","","","","","",""}, - {"","","","","","","","","","","","","","","",""}, - {"","","","","","","","","","","","","","","",""} -} - --- program start -function convertToHeonian(text) - local step = true -- this is set to false when a conclusion has been reached - local transcribed = false - local transcribed_text = "" - - local debug = false - local autocopy = false - - for _, v in pairs(arg) do - if v == "-v" or v == "--verbose" then debug = true end - if v == "-c" or v == "--copy" then autocopy = true end - end - - -- if its necessary to run the script, then we continue :D - if step then - -- prepare text - -- 1. add syllable marker at start if it isn't already present. - if string.sub(text,1,1) ~= "." then text = "." .. text end - -- 2. turn [x] into [ksh] - text = string.gsub(text,"x","ksh") - -- 3. turn [z] into [dsh] - text = string.gsub(text,"z","d.sh") - -- 4. turn [j] into [y] - text = string.gsub(text,"j","y") - - -- read input and transcribe - -- debug log - if debug then print("") end - if debug then print("src: ".. text) end - if debug then PrintPosition(text) end - - -- sort through all the letters - local i = 1 - while i < string.len(text)+1 do - local pos = i - -- know current pos, since we will be modifying i but still evaluating from the position - local char_step = true - -- this is false when a conclusion has been reached about what symbol does the next segment correspond to - local debug_s = "" - -- debug string - local new_syllable = false - -- this is true when a new syllable begins, and is used to distinguish normal vowels and consonants from trailing ones - - if i == 1 then new_syllable = true end - - if string.sub(text,i,i) == "\t" - or string.sub(text,i,i) == "-" then -- check if its an unsupported symbol to skip it. - -- adjust i - i = i + 1 - pos = i - char_step = false - end - -- init checkup - if string.sub(text,i,i) == "." - or string.sub(text,i,i) == "'" - or string.sub(text,i,i) == " " - or string.sub(text,i,i) == "’" then -- this forces the new syllable, since . is the syllable separator, also skips the symbol and repositions - if string.sub(text,i,i) == " " then -- spaces are exception - transcribed_text = transcribed_text .. " " - new_syllable = true - end - -- debug log - if debug then print("") end - if debug then print(" @[".. tostring(i).."]"..debug_s.." new syllable MARKER found") end - -- start syllable - new_syllable = true - debug_s = "" - -- adjust i - i = i + 1 - -- debug log - if debug then print(" >>> adjusting by (1) from [".. pos .. "] to [".. i .. "]" ) end - -- adjust pos - pos = i - end - - -- debug log - if debug then print("") end - if debug then print(" @[".. tostring(i).."]"..debug_s.." checking string: ".. string.sub(text,i,i)) end -- debug print positional info - - -- lets check if it is a composite - if char_step == true then - local cons_id = 0 - local length = 0 - -- check if its valid consonant for a composite - for _, consonant in pairs(composing_consonant_table) do - cons_id = cons_id + 1 - -- get consonant length its checking against, so we can properly compare. - length = string.len(consonant) - -- debug log - --if debug then print(" checking composite consonant: " .. composing_consonant_table[cons_id]) end - if string.sub(text,i,i+length-1) == consonant then - -- debug log - if debug then print(" (!) valid consonant: " .. composing_consonant_table[cons_id]) end - -- check if its a valid vowel AFTER the valid consonant, while sorting through all vowels - local vowel_id = 0 - for _, vowel in pairs(vowel_table) do - vowel_id = vowel_id + 1 - --if debug then print(" checking composite: " .. composing_consonant_table[cons_id]..vowel_table[vowel_id]) end - if string.sub(text,i+length,i+length) == vowel then - -- adjust by consonant length + vowel - i = i + string.len(consonant) + 1 - -- debug log - if debug then print(" (!) valid composite: " .. consonant .. vowel ..", length: "..length+1) end - if debug then print(" >>> adjusting by (" .. tostring(length+1) .. ") from [".. pos .. "] to [".. i .. "]" ) end - -- transcribe; conclude; - transcribed_text = transcribed_text .. symbol_composite[vowel_id][cons_id] - char_step = false - break - end - end - -- no need to check for more consonants if one is valid - break - end - end - if debug then if char_step ~= false then print(" [!] invalid composite") end end - end - - -- lets check if it is a non composite vowel - if char_step == true then - local id = 0 - local length = 0 - for _, vowel in pairs(vowel_table) do - id = id+ 1 - -- get vowel length its checking against, so we can properly compare. - length = string.len(vowel) - -- debug log - --if debug then print(" checking standalone vowel: " .. vowel_table[id]) end - if string.sub(text,i,i+length-1) == vowel then - i = i + string.len(vowel) - -- debug log - if debug then print(" (!) valid vowel: " .. vowel_table[id]) end - if debug then print(" >>> adjusting by (" .. tostring(length) .. ") from [".. pos .. "] to [".. i .. "]" ) end - -- transcribe; conclude; - local table = nil - if new_syllable then - table = symbol_vowel - else - table = symbol_extending_vowel - end - transcribed_text = transcribed_text .. table[id] - char_step = false - break - end - end - end - - - -- lets check if it is a non composite consonant - if char_step == true then - local id = 0 - local length = 0 - for _, consonant in pairs(consonant_table) do - id = id+ 1 - -- get consonant length its checking against, so we can properly compare. - length = string.len(consonant) - -- debug log - --if debug then print(" checking standalone consonant: " .. consonant_table[id]) end - if string.sub(text,i,i+length-1) == consonant then - i = i + string.len(consonant) - -- debug log - if debug then print(" (!) valid consonant: " .. consonant_table[id]) end - if debug then print(" >>> adjusting by (" .. tostring(length) .. ") from [".. pos .. "] to [".. i .. "]" ) end - -- transcribe; conclude; - local table = nil - if new_syllable then - table = symbol_consonant - else - table = symbol_extending_consonant - end - transcribed_text = transcribed_text .. table[id] - char_step = false - break - end - end - end - - -- if no idea, move on, and just be confused. prints ? - if char_step == true then - -- debug log - if debug then print(" [!] no idea; moving on to next [".. pos + 1 .."]") end - -- no idea - transcribed_text = transcribed_text .. string.sub(text,i,i) - i = i + 1 - -- debug log - if debug then print(" >>> adjusting by (1) from [".. pos .. "] to [".. i .. "]" ) end - end - end - - -- output - if autocopy then CopyToClipboard(string.sub(transcribed_text,0,-1)) end - return transcribed_text - end -end \ No newline at end of file