| import Parser |
| import Lexer |
| import JQ |
| import Text.JSON |
| import Text.JSON.String |
| import PrettyJSON |
| import System.Environment |
| import Control.Monad |
| import System.IO |
| |
| parseJS :: String -> JSValue |
| parseJS s = case runGetJSON readJSValue s of |
| Left err -> error err |
| Right val -> val |
| |
| |
| main = do |
| [program] <- getArgs |
| stdlib <- openFile "stdlib.jq" ReadMode >>= hGetContents |
| json <- liftM parseJS $ hGetContents stdin |
| case runLexer (stdlib ++ program) >>= runParser of |
| Left err -> putStrLn err |
| Right program -> mapM_ (putStrLn . show . renderJSON) (runJQ program json) |