hjsmin 0.1.4.2 → 0.1.4.3
raw patch · 3 files changed
+33/−24 lines, 3 files
Files
- README.markdown +2/−0
- Text/Jasmine/Pretty.hs +30/−23
- hjsmin.cabal +1/−1
README.markdown view
@@ -30,6 +30,8 @@ Changes ------- +0.1.4.3 - make sure all missing cases are covered+ 0.1.4.2 - minify octal literals too 0.1.4.1 - Bump upper bound for containers to < 0.6 for the tests as well as the library
Text/Jasmine/Pretty.hs view
@@ -4,9 +4,9 @@ ) where import Data.Char-import Data.List+-- import Data.List import Data.Monoid (Monoid, mappend, mempty, mconcat)-import Language.JavaScript.Parser (JSNode(..),Node(..),tokenPosnEmpty,readJs,CommentAnnotation(..),TokenPosn(..))+import Language.JavaScript.Parser (JSNode(..),Node(..),tokenPosnEmpty) import qualified Blaze.ByteString.Builder as BB import qualified Blaze.ByteString.Builder.Char.Utf8 as BS import qualified Data.ByteString.Lazy as LB@@ -32,11 +32,11 @@ char :: Char -> BB.Builder char c = BS.fromChar c -comma :: BB.Builder-comma = BS.fromChar ','+-- comma :: BB.Builder+-- comma = BS.fromChar ',' -punctuate :: a -> [a] -> [a]-punctuate p xs = intersperse p xs+-- punctuate :: a -> [a] -> [a]+-- punctuate p xs = intersperse p xs -- --------------------------------------------------------------------- @@ -85,25 +85,30 @@ rn (JSBlock lb xs rb) = (rJS lb) <> (rJS xs) <> (rJS rb) -rn (JSIf _i _lb c _rb [(NT (JSLiteral ";") _ _)] []) = (text "if") <> (text "(") <> (renderJS c) <> (text ")")---rn (JSIf _i _lb c _rb t []) = (text "if") <> (text "(") <> (renderJS c) <> (text ")") <> (renderJS $ fixBlock t) -rn (JSIf _i _lb c _rb t []) = (text "if") <> (text "(") <> (renderJS c) <> (text ")") <> (rJS $ fixSourceElements $ map fixBlock t) -rn (JSIf _i _lb c _rb t [_e,(NT (JSLiteral ";") _ _)]) = (text "if") <> (text "(") <> (renderJS c) <> (text ")") <> (rJS $ fixIfBlock t)- <> (text "else")-rn (JSIf _i _lb c _rb t [_e,e]) = (text "if") <> (text "(") <> (renderJS c) <> (text ")") <> (rJS $ fixIfElse $ fixSourceElements t)+rn (JSIf _i _lb c _rb [(NT (JSLiteral ";") _ _)] []) = (text "if") <> (text "(") <> (renderJS c) <> (text ")")++rn (JSIf _i _lb c _rb t []) = (text "if") <> (text "(") <> (renderJS c) <> (text ")")+ <> (rJS $ fixSourceElements $ map fixBlock t)++rn (JSIf _i _lb c _rb t [_e,(NT (JSLiteral ";") _ _)]) = (text "if") <> (text "(") <> (renderJS c) <> (text ")")+ <> (rJS $ fixIfBlock t) <> (text "else")+rn (JSIf _i _lb c _rb t [_e,e]) = (text "if") <> (text "(") <> (renderJS c) <> (text ")")+ <> (rJS $ fixIfElse $ fixSourceElements t) <> (text "else") <> (spaceOrBlock $ fixBlock e)+rn (JSIf _i _lb _c _rb _t _xs) = error $ "malformed JSIf, else clause should be either [] or [else,expr]" + rn (JSMemberDot xs _d y) = (rJS $ fixLiterals xs) <> (text ".") <> (renderJS y) rn (JSMemberSquare xs _lb x _rb) = (rJS $ fixLiterals xs) <> (text "[") <> (renderJS x) <> (text "]") rn (JSUnary l _s ) = text l rn (JSArrayLiteral _lb xs _rb) = (text "[") <> (rJS xs) <> (text "]") -rn (JSBreak _b [] as) = (text "break") -- <> (renderJS as)-rn (JSBreak _b is as) = (text "break") <+> (rJS $ fixSourceElements $ map fixFnBlock is) -- <> (renderJS as)+rn (JSBreak _b [] _as) = (text "break") -- <> (renderJS as)+rn (JSBreak _b is _as) = (text "break") <+> (rJS $ fixSourceElements $ map fixFnBlock is) -- <> (renderJS as) rn (JSCallExpression "()" _os xs _cs) = (rJS xs) rn (JSCallExpression t _os xs _cs) = (char $ head t) <> (rJS xs) <> (if ((length t) > 1) then (char $ last t) else empty)@@ -124,7 +129,7 @@ rn (JSContinue _c is _as) = (text "continue") <> (rJS is) -- <> (char ';') rn (JSDefault _d _c xs) = (text "default") <> (char ':') <> (rJS $ fixSourceElements xs) -rn (JSDoWhile _d s _w _lb e _rb as) = (text "do") <> (renderJS $ fixFnBlock s) <> (text "while") <> (char '(') <> (renderJS e) <> (char ')') -- <> (renderJS as)+rn (JSDoWhile _d s _w _lb e _rb _as) = (text "do") <> (renderJS $ fixFnBlock s) <> (text "while") <> (char '(') <> (renderJS e) <> (char ')') -- <> (renderJS as) --rn (JSElementList xs) = rJS xs@@ -155,7 +160,7 @@ rn (JSReturn _r [] _as) = (text "return") rn (JSReturn _r [(NT (JSLiteral ";") _ _)] _as) = (text "return;++foobar+will_never_happen++") -- ++AZ++ get rid of this-rn (JSReturn _r xs as) = (text "return") <> (if (spaceNeeded xs) then (text " ") else (empty)) <> (rJS $ fixSourceElements xs) -- <> (renderJS as)+rn (JSReturn _r xs _as) = (text "return") <> (if (spaceNeeded xs) then (text " ") else (empty)) <> (rJS $ fixSourceElements xs) -- <> (renderJS as) rn (JSThrow _t e) = (text "throw") <+> (renderJS $ fixBlock e) @@ -177,9 +182,9 @@ rJS :: [JSNode] -> BB.Builder rJS xs = hcat $ map renderJS xs -commaList :: [JSNode] -> BB.Builder-commaList [] = empty-commaList xs = rJS xs+-- commaList :: [JSNode] -> BB.Builder+-- commaList [] = empty+-- commaList xs = rJS xs extractNode :: JSNode -> Node extractNode (NT x _ _) = x@@ -188,8 +193,8 @@ --commaListList :: [[JSNode]] -> BB.Builder --commaListList xs = (hcat $ punctuate comma $ map rJS xs) -toDoc :: [JSNode] -> [BB.Builder]-toDoc xs = map renderJS xs+-- toDoc :: [JSNode] -> [BB.Builder]+-- toDoc xs = map renderJS xs spaceOrBlock :: JSNode -> BB.Builder spaceOrBlock (NN (JSBlock lb xs rb)) = rn (JSBlock lb xs rb)@@ -326,11 +331,13 @@ fixIfBlock :: [JSNode] -> [JSNode] fixIfBlock xs = case xs' of- [(NT (JSLiteral ";") p cs)] -> [] -- rely on fixSemis to add this again [(NT (JSLiteral ";") p cs)]- [(NN (JSBlock lb [] rb))] -> [] -- rely on fixSemis to add this again [(NT (JSLiteral ";") tokenPosnEmpty [])]+ [(NT (JSLiteral ";") _p _cs)] -> [] -- rely on fixSemis to add this again [(NT (JSLiteral ";") p cs)]+ [(NN (JSBlock _lb [] _rb))] -> [] -- rely on fixSemis to add this again [(NT (JSLiteral ";") tokenPosnEmpty [])] -- [(NN (JSBlock lb [y] rb))] -> [fixBlock y] [(NN (JSBlock lb x2s rb))] -> [(NN (JSBlock lb ((fixSourceElements $ map fixBlock x2s)) rb))] [x] -> fixSourceElements [x]+ [] -> []+ xs'' -> fixSourceElements xs'' where xs' = stripSemis xs -- Remove extraneous braces around blocks
hjsmin.cabal view
@@ -1,5 +1,5 @@ name: hjsmin-version: 0.1.4.2+version: 0.1.4.3 license: BSD3 license-file: LICENSE author: Alan Zimmerman <alan.zimm@gmail.com>