packages feed

authoring 0.1.0.0 → 0.2.3

raw patch · 7 files changed

+79/−18 lines, 7 filesdep +data-default

Dependencies added: data-default

Files

authoring.cabal view
@@ -2,9 +2,9 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                authoring-version:             0.1.0.0+version:             0.2.3 synopsis:            A library for writing papers-description:         This package is parser combinator library for writing papers.+description:         This package is a combinator library for writing papers. homepage:            http://github.com/nushio3/authoring bug-reports:         http://github.com/nushio3/authoring/issues license:             BSD3@@ -23,7 +23,9 @@ library   hs-source-dirs:    src/   exposed-modules:     +    Text.Authoring     Text.Authoring.Bibliography+    Text.Authoring.Class     Text.Authoring.Combinator     Text.Authoring.Combinator.Cite     Text.Authoring.Combinator.Meta@@ -37,6 +39,7 @@       base ==4.*     , citation-resolve >= 0.4.2     , containers >= 0.5+    , data-default     , HaTeX >= 3.8     , lens     , mtl
+ src/Text/Authoring.hs view
@@ -0,0 +1,14 @@+module Text.Authoring (++module Text.Authoring.Class,+module Text.Authoring.Combinator,+module Text.Authoring.Bibliography,+module Text.Authoring.Label,+  +                      )+where++import Text.Authoring.Bibliography+import Text.Authoring.Class+import Text.Authoring.Combinator+import Text.Authoring.Label
src/Text/Authoring/Bibliography.hs view
@@ -1,4 +1,4 @@-module Text.Authoring.Bibliography where+module Text.Authoring.Bibliography (bibliographyContent, withDatabaseFile) where  import           Control.Lens (use) import           Control.Monad@@ -6,7 +6,7 @@ import           Control.Monad.IO.Class import qualified Data.Set as Set import qualified Data.Text as Text-import           Text.CSL.Input.Identifier (toBibTeXItem, HasDatabase)+import           Text.CSL.Input.Identifier (toBibTeXItem, HasDatabase, withDatabaseFile)  import Text.Authoring.State 
+ src/Text/Authoring/Class.hs view
@@ -0,0 +1,29 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE TemplateHaskell #-}++module Text.Authoring.Class where++import           Control.Lens+import           Control.Monad.RWS+import           Control.Monad.State+import           Control.Monad.Writer+import           Data.Default (def)+import           Text.Authoring.Document+import           Text.Authoring.State+import           Text.LaTeX (LaTeX)+import qualified Text.CSL.Input.Identifier.Internal as Citation++-- | The all-in-one environ for writing paper.  +type MonadAuthoring s w m = (MonadState s m, HasAuthorState s, Citation.HasDatabase s, MonadWriter w m, HasDocument w, MonadIO m)  ++-- | An example of monad transformer that can provide full (but IO) authoring environment.++type AuthoringT = RWST () Document AuthorState +++-- | Run an authoring monad, returns the triple (monad return value, final author state, generated latex)++runAuthoringT :: Monad m => AuthoringT m a -> m (a, AuthorState, LaTeX)+runAuthoringT prog = do +  (a,s,w) <- runRWST prog () def+  return (a,s,w ^. latexSrc)
src/Text/Authoring/Combinator/Cite.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE OverloadedStrings #-}  module Text.Authoring.Combinator.Cite where@@ -10,30 +11,27 @@ import qualified Data.Text as Text import Text.CSL.Input.Identifier (resolve, HasDatabase) -+import Text.Authoring.Class import Text.Authoring.Combinator.Meta import Text.Authoring.Combinator.Writer import Text.Authoring.Document import Text.Authoring.State  -citet, citep :: (MonadState s m, HasAuthorState s, HasDatabase s, -          MonadWriter w m, HasDocument w, MonadIO m) => [String] -> m ()+citet, citep :: MonadAuthoring s w m => [String] -> m ()  citet = citationGen "citet" citep = citationGen "citep" -citet1, citep1 :: (MonadState s m, HasAuthorState s, HasDatabase s, -          MonadWriter w m, HasDocument w, MonadIO m) => String -> m ()+citet1, citep1 :: MonadAuthoring s w m => String -> m ()  citet1 = citationGen "citet" . (:[]) -- + ---<===   I am a long man lying citep1 = citationGen "citep" . (:[]) -- + ---<===   We are long men lying  -- | make a citation to a document(s).-citationGen :: (MonadState s m, HasAuthorState s, HasDatabase s, -          MonadWriter w m, HasDocument w, MonadIO m) => Text.Text -> [String] -> m ()+citationGen :: MonadAuthoring s w m => Text.Text -> [String] -> m () citationGen cmdName  urls = do   forM_ urls $ \url -> do-    _ <- resolve url+    resolve url     citedUrlSet %= Set.insert url    command1 cmdName $ braces $ raw $ Text.intercalate "," $ map Text.pack urls
src/Text/Authoring/Combinator/Writer.hs view
@@ -21,17 +21,28 @@ -- | Scribe a LaTeX syntax into the target document.  latex :: (MonadWriter t m, HasDocument t) => LaTeX -> m ()-latex x = scribe latexSrc x+latex = scribe latexSrc  -- | Scribe a raw text (unescaped) into the target.  raw :: (MonadWriter t m, HasDocument t) => Text -> m ()-raw x = latex $ LTX.raw x+raw = latex . LTX.raw  +-- | Scribe a raw text (escaped) into the target. --- | Shows objects of type 'a' using Show interface---   Escapes LaTeX special characters.+esc :: (MonadWriter t m, HasDocument t) => Text -> m ()+esc = raw . LTX.protectText  -esc :: (MonadWriter t m, HasDocument t, Show a) => a -> m ()-esc x = raw $ LTX.protectText $ pack $ Prelude.show x+-- | Shows objects of type 'a' using Show interface,+--   without escaping LaTeX special characters.++rawShow :: (MonadWriter t m, HasDocument t, Show a) => a -> m ()+rawShow = raw . pack . Prelude.show ++-- | Shows objects of type 'a' using Show interface,+--   escaping LaTeX special characters.++escShow :: (MonadWriter t m, HasDocument t, Show a) => a -> m ()+escShow = esc . pack . Prelude.show + 
src/Text/Authoring/State.hs view
@@ -1,9 +1,12 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE RankNTypes #-} {-# LANGUAGE TemplateHaskell #-}  module Text.Authoring.State where  import           Control.Lens import           Control.Lens.TH+import           Data.Default import qualified Data.Map as Map import qualified Data.Set as Set import           Data.Text (Text)@@ -22,3 +25,6 @@  instance Citation.HasDatabase AuthorState where   database = citationDB+  +instance Default AuthorState where+  def = AuthorState def def def