hiragana { ; Check if the db is open, if not open it! if (!$sqlite_is_valid_conn(%hiragana_db)) { set %hiragana_db $sqlite_open_memory(hiragana.db) } ; Do the magic var %i = 1, %len = $len($1), %jpname while (%i <= %len) { ; Ignore hyphen if ($mid($1,%i,1) == -) { inc %i continue } ; Check for double consonant if ($mid($1,%i,1) == $mid($1,$calc(1+%i),1) && $mid($1,%i,1) !isin aeiouy) { ; Double consonant %jpname = %jpname $+ $+($chr(227),$chr(129),$chr(163)) inc %i } var %sql = SELECT sym, length(seq) AS len FROM hiragana WHERE seq IN ( $sqlite_qt($mid($1,%i,1)) , $sqlite_qt($mid($1,%i,2)) , $sqlite_qt($mid($1,%i,3)) ) ORDER BY len DESC LIMIT 1 var %res = $sqlite_query(%hiragana_db, %sql) if ($sqlite_fetch_row(%res, hiragana)) { %jpname = %jpname $+ $hget(hiragana, sym) inc %i $hget(hiragana, len) ; Check for double vowels while ($mid($1,$calc(-1+%i),1) == $mid($1,%i,1) && $mid($1,%i,1) isin aeiouy) { ; Double vowel %jpname = %jpname $+ $+($chr(227),$chr(131),$chr(188)) inc %i } } else { %jpname = $null } sqlite_free %res if (!%jpname) break } return %jpname }