Escape names properly
This commit is contained in:
parent
2d5a8ece55
commit
e4e5c801f3
1 changed files with 21 additions and 2 deletions
|
|
@ -8,14 +8,33 @@ module Propa.Prolog.Display
|
||||||
, displayResult
|
, displayResult
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
import Data.Char
|
||||||
|
import Data.List
|
||||||
|
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
|
|
||||||
import Propa.Prolog.Types
|
import Propa.Prolog.Types
|
||||||
|
|
||||||
|
displayName :: T.Text -> T.Text
|
||||||
|
displayName name
|
||||||
|
| T.all isLower name = name
|
||||||
|
| otherwise = "\"" <> escaped <> "\""
|
||||||
|
where
|
||||||
|
escaped = foldl' (\s (a, b) -> T.replace a b s) name
|
||||||
|
[ ("\\", "\\\\")
|
||||||
|
, ("\n", "\\n")
|
||||||
|
, ("\r", "\\r")
|
||||||
|
, ("\t", "\\t")
|
||||||
|
]
|
||||||
|
|
||||||
displayStat :: T.Text -> [Term T.Text] -> T.Text
|
displayStat :: T.Text -> [Term T.Text] -> T.Text
|
||||||
displayStat name [] = name
|
displayStat name [] = displayName name
|
||||||
displayStat name args = name <> "(" <> T.intercalate ", " (map displayTerm args) <> ")"
|
displayStat name args
|
||||||
|
= displayName name
|
||||||
|
<> "("
|
||||||
|
<> T.intercalate ", " (map displayTerm args)
|
||||||
|
<> ")"
|
||||||
|
|
||||||
displayList :: Term T.Text -> T.Text
|
displayList :: Term T.Text -> T.Text
|
||||||
displayList (Stat "[|]" [a, b]) = "," <> displayTerm a <> displayList b
|
displayList (Stat "[|]" [a, b]) = "," <> displayTerm a <> displayList b
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue