hpaco 0.16.2.0 → 0.18.0.0
raw patch · 2 files changed
+39/−13 lines, 2 filesdep ~hpaco-lib
Dependency ranges changed: hpaco-lib
Files
- Main.hs +37/−11
- hpaco.cabal +2/−2
Main.hs view
@@ -2,12 +2,14 @@ import CommandArgs import Control.Monad (liftM, when)+import Control.Applicative ( (<|>) ) import Data.List import Data.Maybe import Prelude hiding (getContents) import System.FilePath import System.IO (withFile, IOMode (ReadMode, WriteMode), hPutStr, hPutStrLn, stdout) import System.IO.Strict+import Text.HPaco.Reader (Reader) import Text.HPaco.Readers.Paco import Text.HPaco.Optimizer import Text.HPaco.Writer as W@@ -22,7 +24,7 @@ argStruct <- parseArgs let optimizationLevel = caOptimizationLevel argStruct when (optimizationLevel > 1) $- hPutStrLn stdout $ "Warning: Optimization level " ++ show optimizationLevel ++ " requested, using 1 instead"+ putStrLn $ "Warning: Optimization level " ++ show optimizationLevel ++ " requested, using 1 instead" let filenames = caInputFiles argStruct if null filenames@@ -47,7 +49,7 @@ process :: CommandArgs -> String -> FilePath -> String -> IO String process cmdargs templateName filename src = do- let reader = readPaco filename+ let reader = getReader cmdargs filename filename write = getWriter cmdargs templateName rundata = caRunData cmdargs pre = "{%with " ++ rundata ++ " %}\n"@@ -62,11 +64,11 @@ ast <- reader src' case caOutputFormat cmdargs of RunInterpreted -> runInterpreted (opt ast) cmdargs templateName >> return "\n"- ListDependencies -> return . (getWriter cmdargs filename) $ ast+ ListDependencies -> return . getWriter cmdargs filename $ ast otherwise -> return . write . opt $ ast where runInterpreted ast cmdargs templateName = let opts = Run.defaultOptions- { Run.roTemplateName = templateName `fromMaybe` (caTemplateName cmdargs)+ { Run.roTemplateName = templateName `fromMaybe` caTemplateName cmdargs } in Run.run opts ast @@ -77,6 +79,27 @@ outputFormatExtension RunInterpreted = "" outputFormatExtension ListDependencies = "dep" +getReader :: CommandArgs -> FilePath -> Reader+getReader cmdargs filePath =+ case getEffectiveInputLanguage cmdargs filePath of+ Paco -> readPaco+ Capo -> readCapo++getEffectiveInputLanguage :: CommandArgs -> FilePath -> InputLanguage+getEffectiveInputLanguage cmdargs filePath =+ let Just effectiveInputLanguage =+ caInputLanguage cmdargs+ <|> inputLanguageFromFilename filePath+ <|> Just Paco+ in effectiveInputLanguage+ +inputLanguageFromFilename :: FilePath -> Maybe InputLanguage+inputLanguageFromFilename fn =+ case takeExtension fn of+ ".paco" -> Just Paco+ ".capo" -> Just Capo+ otherwise -> Nothing+ getWriter :: CommandArgs -> String -> Writer getWriter cmdargs templateName = go (caOutputFormat cmdargs) cmdargs templateName@@ -89,15 +112,18 @@ JsonLisp.writeJsonLisp go OutputJavascript cmdargs templateName = JS.writeJavascript $ JS.defJsWriterOptions- { woPrettyPrint = caJsPretty cmdargs- , woTemplateName = templateName `fromMaybe` (caTemplateName cmdargs)- , woWrapMode = caJsWrapMode cmdargs+ { woPrettyPrint = caPretty cmdargs+ , woTemplateName = templateName `fromMaybe` caTemplateName cmdargs+ , woIncludePreamble = not . caNoPreamble $ cmdargs+ , woWrapMode = caWrapMode cmdargs+ , woSourcePositionComments = caSourcePositions cmdargs } go OutputPHP cmdargs templateName = PHP.writePHP $ PHP.defPHPWriterOptions- { woPrettyPrint = caPhpPretty cmdargs- , woTemplateName = templateName `fromMaybe` (caTemplateName cmdargs)- , woIncludePreamble = not . caPhpNoPreamble $ cmdargs- , woWrapMode = caPhpWrapMode cmdargs+ { woPrettyPrint = caPretty cmdargs+ , woTemplateName = templateName `fromMaybe` caTemplateName cmdargs+ , woIncludePreamble = not . caNoPreamble $ cmdargs+ , woWrapMode = caWrapMode cmdargs , woExposeAllFunctions = caPhpExposeAllFunctions cmdargs+ , woSourcePositionComments = caSourcePositions cmdargs }
hpaco.cabal view
@@ -1,5 +1,5 @@ name: hpaco-version: 0.16.2.0+version: 0.18.0.0 synopsis: Modular template compiler description: CLI front-end to the hpaco-lib library. Compiles Paco template source code to JavaScript or PHP, or interprets@@ -20,7 +20,7 @@ build-depends: base == 4.* , filepath >= 1.1 && < 1.4 , cmdargs >= 0.9 && < 0.10- , hpaco-lib == 0.16.2.0+ , hpaco-lib == 0.18.0.0 , strict == 0.3.* -- , split >= 0.1 && < 0.2 -- , safe >= 0.3.3 && < 0.4