diff --git a/src-3.0/GF/Command/Commands.hs b/src-3.0/GF/Command/Commands.hs index 3e6543819..5514a0596 100644 --- a/src-3.0/GF/Command/Commands.hs +++ b/src-3.0/GF/Command/Commands.hs @@ -545,6 +545,7 @@ stringOpOptions = [ ("lexcode","code-like lexer"), ("lexmixed","mixture of text and code (code between $...$)"), ("to_devanagari","from GF Devanagari transliteration to unicode"), + ("to_html","wrap in a html file with linebreaks"), ("to_thai","from GF Thai transliteration to unicode"), ("to_utf8","encode to utf8"), ("unlextext","text-like unlexer"), diff --git a/src-3.0/GF/Text/Lexing.hs b/src-3.0/GF/Text/Lexing.hs index beabf217b..1ac2eb498 100644 --- a/src-3.0/GF/Text/Lexing.hs +++ b/src-3.0/GF/Text/Lexing.hs @@ -4,6 +4,7 @@ import GF.Text.Transliterations import GF.Text.UTF8 import Data.Char +import Data.List (intersperse) -- lexers and unlexers - they work on space-separated word strings @@ -20,6 +21,7 @@ stringOp name = case name of "unlexcode" -> Just $ appUnlexer unlexCode "unlexmixed" -> Just $ appUnlexer unlexMixed "unwords" -> Just $ appUnlexer unwords + "to_html" -> Just wrapHTML "to_utf8" -> Just encodeUTF8 "from_utf8" -> Just decodeUTF8 _ -> transliterate name @@ -30,6 +32,10 @@ appLexer f = unwords . filter (not . null) . f appUnlexer :: ([String] -> String) -> String -> String appUnlexer f = unlines . map (f . words) . lines +wrapHTML :: String -> String +wrapHTML = unlines . tag . intersperse "
" . lines where + tag ss = "":"" : ss ++ ["",""] + lexText :: String -> [String] lexText s = case s of c:cs | isPunct c -> [c] : lexText cs