-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | library for querying from JSON -- -- library(HXT-like) for querying from JSON @package hjson-query @version 1.0.2 module Text.HJson.Query type Jsons = [Json] type JFilter = Json -> Jsons -- | Create empty JSON object. emptyObj :: Json -- | Create single JSON object. (-->) :: String -> Json -> Json -- | Merge two JSON Objects. (<>) :: Json -> Json -> Json -- | Recursive merge two JSON Objects. (<.>) :: Json -> Json -> Json -- | Merge list JSON Objects. merges :: [Json] -> Json -- | recursive merge lists JSON Objects -- -- Example: -- --
--   j1 = jParse "{\"Europa\": {\"Ukraine\": [\"Kiyv\", \"Gitomir\", \"Lviv\"]}}"
--   j2 = jParse "{\"Asia\": {\"Japan\": [\"Tokyo\"]}}"
--   j3 = jParse "{\"Europa\": {\"UnitedKingdom\": [\"London\", \"Glasgow\"]}}"
--   j4 = jParse "{\"Europa\": {\"Germany\": [\"Berlin\", \"Bonn\"]}}"
--   j5 = jParse "{\"Africa\": {}}"
--   j6 = jParse"{\"America\": {\"USA\": [], \"Canada\": [\"Toronto\"]}}"
--   j7 = jParse "{\"Australia\": [\"Melburn\", \"Adelaida\"]}"
--   merg = mergsRec [j1, j2, j3, j4, j5, j6, j7]
--   ex0 = pputJson merg
--   
-- -- Result: -- --
--   {
--      "Africa": {
--      },
--      "America": {
--         "Canada": ["Toronto"],
--         "USA": []
--      },
--      "Asia": {
--         "Japan": ["Tokyo"]
--      },
--      "Australia": ["Melburn", "Adelaida"],
--      "Europa": {
--         "Germany": ["Berlin", "Bonn"],
--         "Ukraine": ["Kiyv", "Gitomir", "Lviv"],
--         "UnitedKingdom": ["London", "Glasgow"]
--      }
--   }
--   
mergesRec :: [Json] -> Json -- | Filter JSON objects . isObj :: JFilter -- | Filter JSON arrays. isArr :: JFilter -- | Filter JSON strings. isStr :: JFilter -- | Predicative filter JSON strings. isStrBy :: (String -> Bool) -> JFilter -- | Filter JSON numbers. isNum :: JFilter -- | Predicative filter JSON numbers. isNumBy :: Fractional a => (a -> Bool) -> JFilter -- | Filter JSON Bool. isBool :: JFilter -- | Filter JSON null. isNull :: JFilter -- | Filter primitive types. isPrimitive :: JFilter -- | Get elements from object with keys. -- -- Example: -- --
--   query1 = getFromKeys ["Europa", "America", "Africa"] 
--   json1 = query1 merg 
--   ex1 = pputJsons json1
--   
-- -- Result: -- --
--   {
--      "Germany": ["Berlin", "Bonn"],
--      "Ukraine": ["Kiyv", "Gitomir", "Lviv"],
--      "UnitedKingdom": ["London", "Glasgow"]
--   }
--   {
--      "Canada": ["Toronto"],
--      "USA": []
--   }
--   {
--   
--   }
--   
getFromKeys :: [String] -> JFilter -- | Get all elements from object. getFromObj :: JFilter -- | Get all elements from array. getFromArr :: JFilter -- | Get element from array with index. getFromIndex :: Int -> JFilter -- | Get elements from array with indexes. getFromIndexes :: [Int] -> JFilter -- | Get all elements from object and array. getChildern :: JFilter -- | Get elements from object with key. getFromKey :: String -> JFilter -- | (f >>> g) - Apply filter f, later filter g . -- -- Example: -- --
--   query2 = query1 >>> getFromObj 
--   json2 = query2 merg
--   ex2 = pputJsons json2
--   
-- -- Result: -- --
--   ["Berlin", "Bonn"]
--   ["Kiyv", "Gitomir", "Lviv"]
--   ["London", "Glasgow"]
--   ["Toronto"]
--   []
--   
(>>>) :: JFilter -> JFilter -> JFilter -- | Concat result two filters. (<+>) :: JFilter -> JFilter -> JFilter -- | (f orElse g) - Apply f, if f returned -- null apply g. orElse :: JFilter -> JFilter -> JFilter -- | (f when g) - When g returned not -- null, apply f. when :: JFilter -> JFilter -> JFilter -- | (f guards g ) - If f returned null then -- null else apply g. guards :: JFilter -> JFilter -> JFilter -- | Tree traversal filter for object. deepObj :: JFilter -> JFilter -- | Tree traversal filter for array. deepArr :: JFilter -> JFilter -- | Tree traversal filter for objects and arrays. -- -- Example: -- --
--   -- Qwery:  All city Europa, America, Australia and Africa
--   -- q31, q32, q33 is equal
--   
--   q31 = getFromKeys ["Europa", "America", "Africa", "Australia"] 
--     >>> (getFromArr `orElse`  getFromObj)
--     >>> (isStr `orElse` getFromArr)
--   
--   q32 = getFromKeys ["Europa", "America", "Africa", "Australia"] 
--     >>> (getFromObj `when` isObj)
--     >>> getFromArr
--   
--   q33 = getFromKeys ["Europa", "America", "Africa", "Australia"] 
--     >>> 
--   deep getFromArr
--   
-- -- See also: -- http://www.haskell.org/haskellwiki/HXT#The_concept_of_filters deep :: JFilter -> JFilter