module Text.HJson.Pretty (toString) where
import Data.List
import qualified Data.Map as Map
import qualified Text.HJson as JSON
import Text.HJson (Json(..))
toString :: String -> Json -> String
toString s j = toString' s 0 j
toString' :: String -> Integer -> Json -> String
toString' indenter levels (JArray xs) = "[" ++ (intercalate ", " $ map (toString' indenter levels) xs) ++ "]"
toString' indenter levels (JObject mp) = let
currentIndent = (concat (genericReplicate levels indenter))
in intercalate "\n" $ ["{", intercalate ",\n" (map (((currentIndent ++ indenter) ++) . (\(key, value) -> toString' indenter levels (JString key) ++ ": " ++ toString' indenter (levels + 1) value)) $ Map.toList mp), currentIndent ++ "}"]
toString' _ _ a = JSON.toString a