packages feed

lhs2TeX-hl 0.1.1.1 → 0.1.2.0

raw patch · 8 files changed

+68/−58 lines, 8 filesdep −Agda

Dependencies removed: Agda

Files

README view
@@ -27,7 +27,7 @@   USAGE   -----   -  > lhs2TeX-hl INPUTFILE -o OUTPUTFILE+  > lhs2TeX-hl -o OUTPUTFILE INPUTFILE      For more details see:   @@ -38,21 +38,36 @@   In your .tex files add %include OUTPUFILE to tell lhs2tex to use the generated   formatting directives. You'll need to provide the following commands yourself:   +  * \lhsCHsyntax   * \lhsCHkeyword   * \lhsCHprelude   * \lhsCHtype-  * \lhsCHlitNumber   * \lhsCHconstructor   * \lhsCHfunction   * \lhsCHinfixoperator+  * \lhsCHclass   +  This only generates formatting directives for keywords for you. If you want to+  change the formatting of characters, strings or literal numbers add the+  following directives:+  +  > %subst char a    	= "\color{char}\text{\tt ''" a "''}"+  > %subst string a  	= "\color{string}\text{\tt \char34 " a "\char34}"+  > %subst numeral a =  "\color{numeral}{ " a " }"+     KNOWN ISSUES   ------------      * Infix operators may not work that great, or normal functions that are used-    `infix`.-  * It doesn't do literal string and char highlighting yet.+    `infix`. Sometimes you might get an `ambiguous infix operator' error.   * AGDA isn't supported yet unfortunately.   * Errors aren't that informative. :)+  +  CHANGES+  -------+  1.2.0:  * Hopefully the ``ambiguous infix operator'' error shouldn't occur +            that often anymore.+          * Removed the AGDA dependency for until it actually works.+          * Classes are now detected.      
examples/theme1.tex view
@@ -1,17 +1,22 @@-% usepackage color-\definecolor{datatype}{RGB}{42,0,217}-\definecolor{class}{RGB}{197,11,16}+% use package color+\definecolor{syntax}{RGB}{0, 0, 0}+\definecolor{datatype}{RGB}{196, 6, 11}+\definecolor{class}{RGB}{168,37,39} \definecolor{fieldname}{RGB}{0,0,162} \definecolor{prelude}{RGB}{64,80,117} \definecolor{numeral}{RGB}{0,0,205}-\definecolor{infixoperator}{RGB}{42,0,217}-\definecolor{constructor}{RGB}{0,161,0}-\definecolor{keyword}{RGB}{229,120,0}+\definecolor{infixoperator}{RGB}{19, 19, 168}+\definecolor{constructor}{RGB}{196, 6, 11}+\definecolor{keyword}{RGB}{4, 58, 252} \definecolor{special1}{RGB}{159,138,0}+\definecolor{string}{RGB}{3, 106, 7}+\definecolor{char}  {RGB}{3, 106, 7} -\newcommand{\lhsCHfunction}[1]{\color{infixoperator}{\mathbf{#1}}}+\newcommand{\lhsCHsyntax}[1]{\color{syntax}{{#1}}}+\newcommand{\lhsCHfunction}[1]{\color{infixoperator}{{#1}}}+\newcommand{\lhsCHinfixoperator}[1]{\color{infixoperator}{{#1}}} \newcommand{\lhsCHprelude}[1]{\color{prelude}{\mathbf{#1}}} \newcommand{\lhsCHkeyword}[1]{\color{keyword}{\textbf{#1}}}-\newcommand{\lhsCHconstructor}[1]{\color{constructor}{{#1}}}+\newcommand{\lhsCHconstructor}[1]{\color{constructor}{\textbf{#1}}} \newcommand{\lhsCHlitNumber}[1]{\color{numeral}{{#1}}} \newcommand{\lhsCHtype}[1]{\color{datatype}{{#1}}}
lhs2TeX-hl.cabal view
@@ -1,15 +1,15 @@ Name:               lhs2TeX-hl-Version:            0.1.1.1+Version:            0.1.2.0 Cabal-Version:      >= 1.6 License:            MIT Author:             Alessandro Vermeulen <me@alessandrovermeulen.me> Maintainer:         Alessandro Vermeulen <me@alessandrovermeulen.me> Synopsis:           Literate highlighter preprocessor for lhs2tex  Description:        A helper executable for highlighting code with lhs2tex. It-										parses any haskell file and outputs a format file to be used-										with lhs2tex. Currently no recursion is supported.+										parses any Haskell file and outputs a format file to be used+										with lhs2TeX. Currently no recursion is supported. Build-Type:         Simple-Stability:          Expirimental+Stability:          Experimental category:           Development, Language Data-files:         README examples/theme1.tex License-file:       LICENSE@@ -23,7 +23,6 @@                   , MissingH >= 1.1.0.3                   , syb >= 0.1.0.1                   , cmdargs >= 0.1-                  , Agda >= 2.2.6   hs-source-dirs:   src   Other-Modules:    Language.LaTeX, Literate.Agda, Literate.Haskell,                     Literate.SimpleInfo, Base.CLI, Base.Common
src/Base/Common.hs view
@@ -1,4 +1,4 @@ module Base.Common where   -programVersion = "0.1.1.1"+programVersion = "0.1.2.0" programName    = "lhs2TeX-hl"
src/Literate/Agda.hs view
@@ -27,13 +27,11 @@                    mod <- parseFile' moduleParser abpath                    return simpleinfo{ functions = []                                     , operators = listOperators mod-                                    , literalNumbers = listLiteralNumbers mod                                     }  mapping :: [(String, SimpleInfo -> [(String,String)])] mapping = [ -            ("litNumber",     mnumbers)-          , ("infixoperator", moperators)+            ("infixoperator", moperators)           ]                                  listOperators :: Module -> [String]@@ -42,13 +40,5 @@         listOperator (OpApp _ n _) = [show n]         listOperator (_)  = []         -listLiteralNumbers :: Module -> [String]-listLiteralNumbers =  nub . everything (++) ([] `mkQ` listLiteralNumber)- where  listLiteralNumber :: Literal -> [String]-        listLiteralNumber (LitInt   _ v) = [show v]-        listLiteralNumber (LitFloat _ v) = [show v]-        listLiteralNumber (_)  = []-        -mnumbers SimpleInfo{literalNumbers} = map dp literalNumbers moperators SimpleInfo{operators} = map (\ a -> (a, "\\ "++ makeLatexSafe a++"\\ "))                                         operators
src/Literate/Haskell.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE NamedFieldPuns #-}-module Literate.Haskell (runHaskell, mapping) where+module Literate.Haskell (runHaskell, mapping, listClasses, fromParse) where  import Data.List (nub) import Data.Data@@ -15,7 +15,8 @@   runHaskell :: FilePath -> IO SimpleInfo-runHaskell fp = do mod <- parseFile fp+runHaskell fp = do mod <- parseFileWithMode (defaultParseMode { fixities = baseFixities } ) +                                            fp                    case mod of                      (ParseOk m)           -> return $ getSimpleInfo m                      (ParseFailed loc err) -> error $ @@ -34,19 +35,6 @@     getData (TyCon n) = [n]     getData _         = [] --listLitNumbers ::  Module -> [String]-listLitNumbers =  nub . everything (++) ([] `mkQ` listLitNumber)- where  listLitNumber :: Literal -> [String]-        listLitNumber (Char   _) = []-        listLitNumber (String _) = []-        listLitNumber (Int v)  = [show v]-        listLitNumber (Frac v)  = [show v]-        listLitNumber (PrimInt v)  = [show v]-        listLitNumber (PrimFloat v)  = [show v]-        listLitNumber (PrimDouble v)  = [show v]-        listLitNumber (_)  = []- listConstructors ::  Module -> [String] listConstructors =  nub . everything (++) ([] `mkQ` listConstructor)  where  listConstructor :: ConDecl -> [String]@@ -68,12 +56,25 @@         operatorUse (InfixApp _ qop _)  = [prettyPrint qop]         operatorUse _                   = [] +listClasses ::  Module -> [String]+listClasses =  nub . everything (++) ([] `mkQ` listClassDeriving+                                         `extQ` listClassDecl+                                         `extQ` listClassContext)+ where  listClassDeriving :: Deriving -> [String] +        listClassDeriving (name , _)  = [prettyPrint name]+        listClassDecl :: Decl -> [String]+        listClassDecl (ClassDecl _ _ name _ _ _) = [prettyPrint name]+        listClassDecl _ = []+        listClassContext :: Asst -> [String]+        listClassContext (ClassA name _) = [prettyPrint name]+        listClassContext _               = [] + getSimpleInfo m = simpleinfo{ types          = listTypes m-                            , literalNumbers = listLitNumbers m                             , constructors   = listConstructors m                             , functions      = listFunctions m                             , operators      = listOperators m+                            , classes        = listClasses   m                             }  @@ -84,7 +85,6 @@           , ("prelude",      prelude)           , ("applicative",  applicative )           , ("type",         mtypes) -          , ("litNumber",    mnumbers)           , ("constructor",  mconstructors)           , ("function",  mfunctions)           , ("infixoperator", moperators)@@ -94,7 +94,6 @@ mtypes SimpleInfo{types} = map dp types moperators SimpleInfo{operators} = map (\ a -> (a, "\\ "++ makeLatexSafe a++"\\ "))                                         operators-mnumbers SimpleInfo{literalNumbers} = map dp literalNumbers mconstructors SimpleInfo{constructors} = map (dp) constructors mfunctions SimpleInfo{functions   } = map (dp) functions @@ -154,6 +153,9 @@  (<++>) :: a -> b -> a (<++>) a b = a++tid :: Typeable a => a -> a+tid = id   fromParse (ParseOk m) = m
src/Literate/SimpleInfo.hs view
@@ -7,9 +7,9 @@   constructors    :: [String],   functions       :: [String],   operators       :: [String],-  literalNumbers  :: [String],-  literalChars    :: [Char],-  literalStrings  :: [String]+  classes         :: [String]++   } deriving Show  simpleinfo = SimpleInfo{ fileName = ""@@ -18,7 +18,5 @@                        , constructors = []                        , functions = []                        , operators = []-                       , literalNumbers = []-                       , literalChars   = []-                       , literalStrings = []+                       , classes   = []                        }
src/LiterateHighlighter.hs view
@@ -13,7 +13,7 @@ import Base.CLI import System.Console.CmdArgs -import Literate.Agda+-- import Literate.Agda import Literate.Haskell  import Literate.SimpleInfo @@ -26,16 +26,17 @@           hSetEncoding stdout utf8           hSetEncoding stderr utf8          -          hOutput <- openFile  (output args) WriteMode+          hOutput <- openFile (output args) WriteMode           hSetEncoding hOutput utf8            let writer = writeOutput hOutput                                       if (agda_mode args)             then-              mapM_ (\file -> runAgda file-                     >>= (flip writer) Literate.Agda.mapping)-                    (input args)+              error "Agda mode is currently not supported."+              -- mapM_ (\file -> runAgda file+              --                      >>= (flip writer) Literate.Agda.mapping)+              --                     (input args)             else               mapM_ (\file -> runHaskell file                      >>= (flip writer) Literate.Haskell.mapping)