packages feed

gt-tools-0.1: Gt/Helpers.hs

module Gt.Helpers
    (
        nub_sort
    ,   from_ok
    ,   jarr_to_list
    ,   jstr_to_str
    ,   jlist_to_slist
    ,   shift_lines
    )
where

import Text.JSON

import qualified Data.Set as S

-- nub + sort through Set
nub_sort :: Ord a => [a] -> [a]
nub_sort = S.toList . S.fromList

-- shifts lines for 4 spaces for n times
shift_lines :: Int -> String -> String
shift_lines n = unlines . map (replicate (n*4) ' ' ++) . lines


-- JSON deconstruct helpers
from_ok :: Result a -> a
from_ok (Ok x)    = x
from_ok (Error _) = undefined

jarr_to_list :: JSValue -> [JSValue]
jarr_to_list (JSArray jarr) = jarr
jarr_to_list _              = []

jstr_to_str :: JSValue -> String
jstr_to_str (JSString jstr) = fromJSString jstr
jstr_to_str _               = ""

jlist_to_slist :: JSValue -> [String]
jlist_to_slist (JSArray xs) = map (jstr_to_str) xs
jlist_to_slist _            = undefined