hlatex 0.3.1 → 0.3.2
raw patch · 11 files changed
+56/−66 lines, 11 filesdep −derivePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: derive
API changes (from Hackage documentation)
+ Language.LaTeX: infixr 0 !$?
+ Language.LaTeX.Builder: infixr 0 $?
+ Language.LaTeX.Builder.MonoidUtils: infixr 6 <>
+ Language.LaTeX.Slicer: infixr 0 ^$
+ Language.LaTeX.Types: instance GHC.Base.Semigroup Language.LaTeX.Types.LatexItm
+ Language.LaTeX.Types: instance GHC.Base.Semigroup Language.LaTeX.Types.LatexLength
+ Language.LaTeX.Types: instance GHC.Base.Semigroup Language.LaTeX.Types.MathItem
+ Language.LaTeX.Types: instance GHC.Base.Semigroup Language.LaTeX.Types.MathItm
+ Language.LaTeX.Types: instance GHC.Base.Semigroup Language.LaTeX.Types.ParItm
+ Language.LaTeX.Types: instance GHC.Base.Semigroup Language.LaTeX.Types.PreambleItm
+ Language.LaTeX.Types: instance GHC.Base.Semigroup Language.LaTeX.Types.Star
+ Language.LaTeX.Types: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Language.LaTeX.Types.LatexM a)
- Language.LaTeX: class Monoid a
+ Language.LaTeX: class Semigroup a => Monoid a
- Language.LaTeX.Builder.MonoidUtils: (<>) :: Monoid m => m -> m -> m
+ Language.LaTeX.Builder.MonoidUtils: (<>) :: Semigroup a => a -> a -> a
- Language.LaTeX.Types: LengthCst :: (Maybe TexUnit) -> Rational -> LatexLength
+ Language.LaTeX.Types: LengthCst :: Maybe TexUnit -> Rational -> LatexLength
Files
- Language/LaTeX.hs +0/−1
- Language/LaTeX/Builder.hs +0/−2
- Language/LaTeX/Builder/Beamer.hs +0/−2
- Language/LaTeX/Builder/Internal.hs +0/−2
- Language/LaTeX/Builder/Math.hs +0/−1
- Language/LaTeX/Builder/MonoidUtils.hs +0/−1
- Language/LaTeX/Builder/QQ.hs +0/−1
- Language/LaTeX/Printer.hs +0/−1
- Language/LaTeX/Slicer.hs +0/−1
- Language/LaTeX/Types.hs +51/−51
- hlatex.cabal +5/−3
Language/LaTeX.hs view
@@ -65,7 +65,6 @@ ,runLatexM ) where-import Data.Monoid (Monoid(..)) import Data.List (intercalate) import Language.LaTeX.Types import Language.LaTeX.Printer (showLaTeX)
Language/LaTeX/Builder.hs view
@@ -55,13 +55,11 @@ import Data.List hiding (sum, and, group, unwords) import qualified Data.List as L import Data.Ratio-import Data.Monoid import Data.Char import Data.Maybe import Data.Foldable (foldMap) import Data.Traversable import Data.String (IsString(..))-import Control.Applicative hiding (optional) import Control.Monad hiding (mapM) import Control.Monad.Error (throwError) import Control.Monad.Writer (Writer, execWriter, tell)
Language/LaTeX/Builder/Beamer.hs view
@@ -8,10 +8,8 @@ import qualified Language.LaTeX.Builder.Internal as BI import qualified Language.LaTeX.Builder as B import Language.LaTeX.Builder.QQ-import Control.Applicative import Data.List (intersperse) import Data.Maybe-import Data.Monoid {- pkg :: PackageName
Language/LaTeX/Builder/Internal.hs view
@@ -5,9 +5,7 @@ sin, cos, succ, sum, pi, mapM) import qualified Data.List as L import Data.Maybe-import Data.Monoid import Data.Traversable (sequenceA, mapM)-import Control.Applicative hiding (optional) import Control.Monad hiding (mapM) import Control.Monad.Error (throwError)
Language/LaTeX/Builder/Math.hs view
@@ -45,7 +45,6 @@ import Data.String import qualified Data.IntMap as IntMap import Control.Arrow-import Control.Applicative import Control.Monad hiding (mapM) import Control.Monad.Error (throwError)
Language/LaTeX/Builder/MonoidUtils.hs view
@@ -1,6 +1,5 @@ module Language.LaTeX.Builder.MonoidUtils (ø, (⊕), (<>), (<||>), (<&&>), mapNonEmpty) where -import Data.Monoid import Data.Monoid.Unicode ((⊕)) ø :: Monoid m => m
Language/LaTeX/Builder/QQ.hs view
@@ -12,7 +12,6 @@ import Data.List import Data.Char-import Data.Functor import Language.Haskell.TH (Q, Exp, Name, appE, varE, stringE, litP, stringL, valD, varP, sigD, mkName, normalB, conE) import Language.Haskell.TH.Quote
Language/LaTeX/Printer.hs view
@@ -1,6 +1,5 @@ module Language.LaTeX.Printer where -import Data.Monoid import Data.List (intersperse) import Data.Ratio (numerator, denominator) import Data.Foldable (foldMap)
Language/LaTeX/Slicer.hs view
@@ -2,7 +2,6 @@ (marknote, mark, marker, (^$), slice) where -import Data.Monoid import Control.Monad.Writer import Language.LaTeX.Types import Language.LaTeX.Builder.MonoidUtils
Language/LaTeX/Types.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE GeneralizedNewtypeDeriving, TemplateHaskell,- DeriveDataTypeable, PatternGuards #-}+ DeriveDataTypeable, PatternGuards,+ DeriveFunctor, DeriveFoldable, DeriveTraversable #-} -- Those extensions are required by the Uniplate instances. --{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}@@ -9,12 +10,10 @@ import Data.Monoid (Monoid(..)) import Data.List (intercalate) import Data.Ratio ((%))-import Data.Traversable import Data.Foldable import Data.String (IsString(..)) -- import Data.Generics.PlateTypeable import Data.Data-import Data.DeriveTH import Control.Applicative import Control.Arrow (second) import Control.Monad.Writer (Writer)@@ -73,12 +72,14 @@ | PreambleNote Key Note PreambleItm deriving (Show, Eq, Typeable, Data) +instance Semigroup PreambleItm where+ PreambleConcat xs <> PreambleConcat ys = PreambleConcat (xs ++ ys)+ PreambleConcat xs <> y = PreambleConcat (xs ++ [y])+ x <> PreambleConcat ys = PreambleConcat (x : ys)+ x <> y = PreambleConcat [x, y]+ instance Monoid PreambleItm where- mempty = PreambleConcat []- PreambleConcat xs `mappend` PreambleConcat ys = PreambleConcat (xs ++ ys)- PreambleConcat xs `mappend` y = PreambleConcat (xs ++ [y])- x `mappend` PreambleConcat ys = PreambleConcat (x : ys)- x `mappend` y = PreambleConcat [x, y]+ mempty = PreambleConcat [] data TexDcl = TexDcl { texDeclName :: String , texDeclArgs :: [Arg AnyItm]@@ -123,18 +124,20 @@ appendAny Length{} _ = Nothing appendAny SaveBin{} _ = Nothing +instance Semigroup LatexItm where+ RawTex xs <> RawTex ys = RawTex (xs ++ ys)+ LatexCast x <> LatexCast y | Just z <- appendAny x y = LatexCast z+ LatexEmpty <> x = x+ x <> LatexEmpty = x+ LatexAppend x y <> z = x <> (y <> z) -- TODO complexity issue?+ x <> LatexAppend y z =+ case x <> y of+ LatexAppend x' y' -> x' `LatexAppend` (y' <> z) -- TODO complexity issue?+ xy -> xy <> z+ x <> y = x `LatexAppend` y+ instance Monoid LatexItm where mempty = LatexEmpty -- LatexConcat []- RawTex xs `mappend` RawTex ys = RawTex (xs ++ ys)- LatexCast x `mappend` LatexCast y | Just z <- appendAny x y = LatexCast z- LatexEmpty `mappend` x = x- x `mappend` LatexEmpty = x- LatexAppend x y `mappend` z = x `mappend` (y `mappend` z) -- TODO complexity issue?- x `mappend` LatexAppend y z =- case x `mappend` y of- LatexAppend x' y' -> x' `LatexAppend` (y' `mappend` z) -- TODO complexity issue?- xy -> xy `mappend` z- x `mappend` y = x `LatexAppend` y {- LatexConcat xs `mappend` LatexConcat ys = LatexConcat (xs ++ ys)@@ -150,7 +153,7 @@ where f = RawTex . concatMap rawhchar . intercalate "\n" . filter (not . null) . lines data Named a = Named String a- deriving (Show, Eq, Typeable, Data)+ deriving (Show, Eq, Typeable, Data, Functor, Foldable, Traversable) data PackageAction = PackageDependency PackageName | ProvidePackage PackageName@@ -166,15 +169,17 @@ | RawArg String | LiftArg a | PackageAction PackageAction- deriving (Show, Eq, Typeable, Data)+ deriving (Show, Eq, Typeable, Data, Functor, Foldable, Traversable) data Star = Star | NoStar deriving (Show, Eq, Typeable, Data) +instance Semigroup Star where+ NoStar <> x = x+ x <> _ = x+ instance Monoid Star where mempty = NoStar- NoStar `mappend` x = x- x `mappend` _ = x data Coord = MkCoord LatexLength LatexLength deriving (Show, Eq, Typeable, Data)@@ -191,12 +196,14 @@ | ParNote Key Note ParItm deriving (Show, Eq, Typeable, Data) +instance Semigroup ParItm where+ ParConcat xs <> ParConcat ys = ParConcat (xs ++ ys)+ ParConcat xs <> y = ParConcat (xs ++ [y])+ x <> ParConcat ys = ParConcat (x : ys)+ x <> y = ParConcat [x, y]+ instance Monoid ParItm where- mempty = ParConcat []- ParConcat xs `mappend` ParConcat ys = ParConcat (xs ++ ys)- ParConcat xs `mappend` y = ParConcat (xs ++ [y])- x `mappend` ParConcat ys = ParConcat (x : ys)- x `mappend` y = ParConcat [x, y]+ mempty = ParConcat [] unParNote :: ParItm -> Maybe (Key, Note, ParItm) unParNote (ParNote k n p) = Just (k, n, p)@@ -222,12 +229,14 @@ | MathNote Key Note MathItm deriving (Show, Eq, Typeable, Data) +instance Semigroup MathItm where+ MathConcat xs <> MathConcat ys = MathConcat (xs ++ ys)+ MathConcat xs <> y = MathConcat (xs ++ [y])+ x <> MathConcat ys = MathConcat (x : ys)+ x <> y = MathConcat [x, y]+ instance Monoid MathItm where- mempty = MathConcat []- MathConcat xs `mappend` MathConcat ys = MathConcat (xs ++ ys)- MathConcat xs `mappend` y = MathConcat (xs ++ [y])- x `mappend` MathConcat ys = MathConcat (x : ys)- x `mappend` y = MathConcat [x, y]+ mempty = MathConcat [] instance Num MathItm where (+) = MathBinOp "+"@@ -305,9 +314,11 @@ signum = error "LatexLength.signum is undefined" fromInteger = LengthCst Nothing . (%1) +instance Semigroup LatexLength where+ (<>) = (+)+ instance Monoid LatexLength where mempty = 0- mappend = (+) instance Fractional LatexLength where x / LengthCst Nothing ry = scaleBy (1/ry) x@@ -323,7 +334,7 @@ | Rr --- ^ Right | Rvline --- ^ A vertical line | Rtext a --- ^ A fixed text column (@-expression in LaTeX parlance)- deriving (Show, Eq, Typeable, Data)+ deriving (Show, Eq, Typeable, Data, Functor, Foldable, Traversable) {- instance Functor RowSpec where@@ -381,7 +392,7 @@ data Row cell = Cells [cell] | Hline | Cline Int Int- deriving (Show, Eq, Typeable, Data)+ deriving (Show, Eq, Typeable, Data, Functor, Foldable, Traversable) {- instance Functor Row where@@ -433,10 +444,12 @@ MonadError ErrorMessage, Show, Eq, Num, Fractional, Typeable, Data) +instance Semigroup a => Semigroup (LatexM a) where+ (<>) = liftM2 (<>)+-- sconcat = liftM sconcat . sequenceA+ instance Monoid a => Monoid (LatexM a) where mempty = pure mempty- mappend = liftM2 mappend- mconcat = liftM mconcat . sequenceA instance IsString a => IsString (LatexM a) where fromString = pure . fromString @@ -447,7 +460,7 @@ newtype AnyItem = AnyItem { anyItmM :: LatexM AnyItm } deriving (Eq, Show, Typeable, Data) newtype MathItem = MathItem { mathItmM :: LatexM MathItm }- deriving (Monoid, Eq, Show, Num, Fractional, Typeable, Data)+ deriving (Semigroup, Monoid, Eq, Show, Num, Fractional, Typeable, Data) type ListItem = LatexM ListItm type PreambleItem = LatexM PreambleItm@@ -483,19 +496,6 @@ -- instance (Integral a, Typeable a, Typeable b, PlateAll a b) => PlateAll (Ratio a) b where -- plateAll r = plate (%) |+ numerator r |+ denominator r--$(derive makeFunctor ''Named)-$(derive makeFoldable ''Named)-$(derive makeTraversable ''Named)-$(derive makeFunctor ''Arg)-$(derive makeFoldable ''Arg)-$(derive makeTraversable ''Arg)-$(derive makeFunctor ''RowSpec)-$(derive makeFoldable ''RowSpec)-$(derive makeTraversable ''RowSpec)-$(derive makeFunctor ''Row)-$(derive makeFoldable ''Row)-$(derive makeTraversable ''Row) {- $(derive makeUniplateTypeable ''SaveBin)
hlatex.cabal view
@@ -1,6 +1,6 @@ name: hlatex-cabal-version: >= 1.8-version: 0.3.1+cabal-version: >= 1.10+version: 0.3.2 license: BSD3 license-File: LICENSE copyright: (c) Nicolas Pouillard@@ -20,7 +20,7 @@ base>=3.0&&<5, containers>=0.1, process, filepath, directory, template-haskell >= 2.5, transformers>=0.2.1&&<1, mtl>2.0, base-unicode-symbols,- uniplate>=1.4&&<1.7, derive, utf8-string+ uniplate>=1.4&&<1.7, utf8-string exposed-modules: Language.LaTeX, Language.LaTeX.Types,@@ -40,12 +40,14 @@ Language.LaTeX.Checker, Language.LaTeX.Unicode ghc-options: -Wall+ default-language: Haskell2010 executable generate_hlatex_user_guide Build-depends: base>=3.0, containers>=0.1, frquotes, transformers, mtl>2.0, base-unicode-symbols main-is: doc/user_guide.hs ghc-options: -Wall+ default-language: Haskell2010 if !flag(build_doc) Buildable: False