js-good-parts 0.0.3 → 0.0.4
raw patch · 5 files changed
+20/−8 lines, 5 filessetup-changedPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Language.JavaScript.Pretty: LeftToRight :: Associativity
- Language.JavaScript.Pretty: OpInfo :: Int -> Associativity -> String -> OpInfo
- Language.JavaScript.Pretty: RightToLeft :: Associativity
- Language.JavaScript.Pretty: add :: JSExpression -> JSExpression -> JSExpression
- Language.JavaScript.Pretty: assoc :: Associativity -> Int -> Fixity
- Language.JavaScript.Pretty: data Associativity
- Language.JavaScript.Pretty: data OpInfo
- Language.JavaScript.Pretty: docParen :: Bool -> Doc -> Doc
- Language.JavaScript.Pretty: endWith :: Pretty a => Doc -> [a] -> Doc
- Language.JavaScript.Pretty: endWith' :: Pretty a => Doc -> NonEmptyList a -> Doc
- Language.JavaScript.Pretty: infixOpInfo :: JSInfixOperator -> OpInfo
- Language.JavaScript.Pretty: leftToRight, rightToLeft :: Int -> Fixity
- Language.JavaScript.Pretty: mul :: JSExpression -> JSExpression -> JSExpression
- Language.JavaScript.Pretty: n :: Double -> JSExpression
- Language.JavaScript.Pretty: prettyBlock :: Pretty a => [a] -> Doc
- Language.JavaScript.Pretty: prettyInfixOpApp :: (PrettyPrec a, PrettyPrec b) => Int -> OpInfo -> a -> b -> Doc
- Language.JavaScript.Pretty: prettyPrefixOpApp :: PrettyPrec a => Int -> OpInfo -> a -> Doc
- Language.JavaScript.Pretty: sepWith :: Pretty a => Doc -> [a] -> Doc
- Language.JavaScript.Pretty: sepWith' :: Pretty a => Doc -> NonEmptyList a -> Doc
- Language.JavaScript.Pretty: test1 :: JSExpression
- Language.JavaScript.Pretty: test2 :: JSExpression
- Language.JavaScript.Pretty: test2' :: JSExpression
- Language.JavaScript.Pretty: test3 :: JSExpressionStatement
- Language.JavaScript.Pretty: test4 :: JSStatement
- Language.JavaScript.Pretty: test5 :: JSProgram
- Language.JavaScript.Pretty: test6 :: JSFunctionLiteral
- Language.JavaScript.Pretty: type Fixity = (Associativity, Int)
+ Language.JavaScript.AST: JSLiteralBool :: Bool -> JSLiteral
+ Language.JavaScript.Pretty: class Pretty a
+ Language.JavaScript.Pretty: pretty :: Pretty a => a -> Doc
+ Language.JavaScript.Pretty: prettyList :: Pretty a => [a] -> Doc
Files
- Setup.hs +0/−2
- Setup.lhs +3/−0
- js-good-parts.cabal +2/−2
- src/Language/JavaScript/AST.hs +8/−0
- src/Language/JavaScript/Pretty.hs +7/−4
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
+ Setup.lhs view
@@ -0,0 +1,3 @@+#!/usr/bin/env runhaskell+> import Distribution.Simple+> main = defaultMain
js-good-parts.cabal view
@@ -1,10 +1,10 @@ Name: js-good-parts-Version: 0.0.3+Version: 0.0.4 Cabal-Version: >= 1.6 Synopsis: Javascript: The Good Parts -- AST & Pretty Printer Category: Language, Javascript Description:- An AST for the "the good parts" of Javascript (as defined by Douglas Crockford) + An AST for the \"the good parts\" of Javascript (as defined by Douglas Crockford) and a pretty printer for that AST. Designed to be the target of a code generator. Does not include a parser.
src/Language/JavaScript/AST.hs view
@@ -561,8 +561,16 @@ = JSProperty JSName | JSSubscript JSExpression +--+-- | Interestingly, the syntax diagrams presented in the book don't include+-- boolean literals. I can only assume this is an oversight as they+-- are used throughout the book.+--++ data JSLiteral = JSLiteralNumber JSNumber -- ^ @\<JSNumber\>@+ | JSLiteralBool Bool -- ^ @\<true | false\>@ | JSLiteralString JSString -- ^ @\<JSString\>@ | JSLiteralObject JSObjectLiteral -- ^ @\<JSObjectLiteral\>@ | JSLiteralArray JSArrayLiteral -- ^ @\<JSArrayLiteral\>@
src/Language/JavaScript/Pretty.hs view
@@ -1,4 +1,7 @@-module Language.JavaScript.Pretty where+module Language.JavaScript.Pretty (+ -- | This module just defines and exports 'Pretty' and 'PrettyPrec' instances+ Pretty(..)+) where -- System libraries import Text.PrettyPrint.Leijen@@ -102,7 +105,7 @@ instance PrettyPrec JSNumber -- default instance Pretty JSVarStatement where- pretty (JSVarStatement varDecls) = sepWith' (text ", ") varDecls+ pretty (JSVarStatement varDecls) = sepWith' (comma <+> empty) varDecls instance PrettyPrec JSVarStatement -- default @@ -274,7 +277,7 @@ prettyPrec = error "we never print an operator by itself" instance Pretty JSInvocation where- pretty = error "undefined"+ pretty (JSInvocation es) = lparen <> sepWith (comma <+> empty) es <> rparen instance PrettyPrec JSInvocation -- default @@ -308,7 +311,7 @@ instance PrettyPrec JSObjectField -- default instance Pretty JSArrayLiteral where- pretty (JSArrayLiteral es) = sepWith (comma <+> empty) es+ pretty (JSArrayLiteral es) = lbracket <> sepWith (comma <+> empty) es <> rbracket instance PrettyPrec JSArrayLiteral -- default