orgmode-parse 0.1.0 → 0.1.0.1
raw patch · 2 files changed
+50/−42 lines, 2 filesdep ~HUnitdep ~aesondep ~attoparsecPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: HUnit, aeson, attoparsec, base, bytestring, containers, free, hashable, old-locale, tasty, tasty-hunit, text, thyme, unordered-containers
API changes (from Hackage documentation)
+ Data.OrgMode.Parse.Attoparsec.Headings: instance Eq LevelDepth
+ Data.OrgMode.Parse.Attoparsec.Headings: instance Eq TitleMeta
+ Data.OrgMode.Parse.Attoparsec.Headings: instance Num LevelDepth
+ Data.OrgMode.Parse.Attoparsec.Headings: instance Show LevelDepth
+ Data.OrgMode.Parse.Attoparsec.Headings: instance Show TitleMeta
+ Data.OrgMode.Parse.Attoparsec.Time: BracketedDateTime :: YearMonthDay -> Maybe Weekday -> Maybe TimePart -> Maybe Repeater -> Maybe Delay -> Bool -> BracketedDateTime
+ Data.OrgMode.Parse.Attoparsec.Time: TimePart :: (Either AbsoluteTime TimestampRange) -> TimePart
+ Data.OrgMode.Parse.Attoparsec.Time: data BracketedDateTime
+ Data.OrgMode.Parse.Attoparsec.Time: datePart :: BracketedDateTime -> YearMonthDay
+ Data.OrgMode.Parse.Attoparsec.Time: dayNamePart :: BracketedDateTime -> Maybe Weekday
+ Data.OrgMode.Parse.Attoparsec.Time: delayPart :: BracketedDateTime -> Maybe Delay
+ Data.OrgMode.Parse.Attoparsec.Time: instance Eq BracketedDateTime
+ Data.OrgMode.Parse.Attoparsec.Time: instance Eq TimePart
+ Data.OrgMode.Parse.Attoparsec.Time: instance Ord TimePart
+ Data.OrgMode.Parse.Attoparsec.Time: instance Show BracketedDateTime
+ Data.OrgMode.Parse.Attoparsec.Time: instance Show TimePart
+ Data.OrgMode.Parse.Attoparsec.Time: isActive :: BracketedDateTime -> Bool
+ Data.OrgMode.Parse.Attoparsec.Time: newtype TimePart
+ Data.OrgMode.Parse.Attoparsec.Time: repeat :: BracketedDateTime -> Maybe Repeater
+ Data.OrgMode.Parse.Attoparsec.Time: timePart :: BracketedDateTime -> Maybe TimePart
+ Data.OrgMode.Parse.Attoparsec.Time: transformBracketedDateTime :: BracketedDateTime -> (DateTime, Maybe (Hours, Minutes), Bool)
+ Data.OrgMode.Parse.Attoparsec.Time: type AbsoluteTime = (Hours, Minutes)
+ Data.OrgMode.Parse.Attoparsec.Time: type TimestampRange = (AbsoluteTime, AbsoluteTime)
+ Data.OrgMode.Parse.Attoparsec.Time: type Weekday = Text
+ Data.OrgMode.Parse.Types: Level :: Int -> Level
+ Data.OrgMode.Parse.Types: instance Constructor C1_0Level
+ Data.OrgMode.Parse.Types: instance Datatype D1Level
+ Data.OrgMode.Parse.Types: instance Eq Level
+ Data.OrgMode.Parse.Types: instance FromJSON Level
+ Data.OrgMode.Parse.Types: instance Generic Level
+ Data.OrgMode.Parse.Types: instance Num Level
+ Data.OrgMode.Parse.Types: instance Show Level
+ Data.OrgMode.Parse.Types: instance ToJSON Level
+ Data.OrgMode.Parse.Types: newtype Level
- Data.OrgMode.Parse.Attoparsec.Headings: headingBelowLevel :: [Text] -> Int -> Parser Text Heading
+ Data.OrgMode.Parse.Attoparsec.Headings: headingBelowLevel :: [Text] -> LevelDepth -> Parser Text Heading
- Data.OrgMode.Parse.Attoparsec.Headings: headingLevel :: Int -> Parser Text Int
+ Data.OrgMode.Parse.Attoparsec.Headings: headingLevel :: LevelDepth -> Parser Text Level
- Data.OrgMode.Parse.Attoparsec.PropertyDrawer: property :: Parser Text (Text, Text)
+ Data.OrgMode.Parse.Attoparsec.PropertyDrawer: property :: Parser Text (PropertyKey, PropertyVal)
- Data.OrgMode.Parse.Attoparsec.Time: parseBracketedDateTime :: Parser Text (DateTime, Maybe (Hours, Minutes), Bool)
+ Data.OrgMode.Parse.Attoparsec.Time: parseBracketedDateTime :: Parser Text BracketedDateTime
- Data.OrgMode.Parse.Attoparsec.Time: parseTime' :: Parser Text (Either (Hours, Minutes) ((Hours, Minutes), (Hours, Minutes)))
+ Data.OrgMode.Parse.Attoparsec.Time: parseTime' :: Parser Text TimePart
- Data.OrgMode.Parse.Types: Heading :: Int -> Maybe StateKeyword -> Maybe Priority -> Text -> Maybe Stats -> [Tag] -> Section -> [Heading] -> Heading
+ Data.OrgMode.Parse.Types: Heading :: Level -> Maybe StateKeyword -> Maybe Priority -> Text -> Maybe Stats -> [Tag] -> Section -> [Heading] -> Heading
- Data.OrgMode.Parse.Types: level :: Heading -> Int
+ Data.OrgMode.Parse.Types: level :: Heading -> Level
Files
- orgmode-parse.cabal +36/−35
- src/Data/OrgMode/Parse/Types.hs +14/−7
orgmode-parse.cabal view
@@ -1,21 +1,22 @@ Name: orgmode-parse-Version: 0.1.0+Version: 0.1.0.1 Author: Parnell Springmeyer <parnell@digitalmentat.com> Maintainer: Parnell Springmeyer <parnell@digitalmentat.com> License: BSD3 License-File: LICENSE Category: Data-Synopsis: A parser and writer for org-mode flavored documents.+Synopsis: A collection of Attoparsec combinators for parsing org-mode+ flavored documents. Description: <<https://travis-ci.org/digitalmentat/orgmode-parse.svg?branch=master>> .- `orgmode-parse` is a parsing and writing library for the org-mode flavor- of document markup.+ `orgmode-parse` is a parsing library for the org-mode flavor of+ document markup. .- This library parses the human-readable and textual representation- into an AST that can be used for output to another format (HTML?- Markdown?), serialized for storage, etc...+ The provided Attoparsec combinators parse the human-readable and+ textual representation into a simple AST for storage or output to+ another format (HTML? Markdown?). Cabal-Version: >= 1.10 Build-Type: Simple@@ -30,24 +31,24 @@ Default-Language: Haskell2010 HS-Source-Dirs: src Ghc-options:- -Wall -fwarn-tabs -funbox-strict-fields -fno-warn-orphans -fno-warn-unused-do-bind+ -Wall -fwarn-tabs -funbox-strict-fields -fno-warn-orphans -fno-warn-unused-do-bind Exposed-Modules:- Data.OrgMode.Parse- Data.OrgMode.Parse.Types+ Data.OrgMode.Parse+ Data.OrgMode.Parse.Types Build-Depends:- aeson >= 0.8.0.2 && < 0.9- , attoparsec >= 0.12 && < 0.13- , base >= 4.4 && < 5- , bytestring >= 0.10.4 && < 0.11- , containers >= 0.5.5 && < 0.6- , free >= 4.9 && < 5- , hashable >= 1.2 && < 1.3- , old-locale >= 1.0 && < 2.0- , text >= 1.0 && < 2.0- , thyme >= 0.3 && < 0.4- , unordered-containers >= 0.2 && < 0.3+ base >= 4.4 && < 5+ , aeson >= 0.8.0.2+ , attoparsec >= 0.12+ , bytestring >= 0.10.4+ , containers >= 0.5.5+ , free >= 4.9+ , hashable >= 1.2+ , old-locale >= 1.0+ , text >= 1.0+ , thyme >= 0.3+ , unordered-containers >= 0.2 Test-Suite tests Type: exitcode-stdio-1.0@@ -56,22 +57,22 @@ Ghc-Options: -Wall Main-Is: Test.hs Other-Modules:- Data.OrgMode.Parse+ Data.OrgMode.Parse Build-Depends:- base >= 4.4 && < 5,- aeson >= 0.8 && < 0.9,- bytestring >= 0.10 && < 0.11,- text >= 1.0 && < 2.0,- attoparsec >= 0.12 && < 0.13,- hashable >= 1.2 && < 1.3,- unordered-containers >= 0.2 && < 0.3,- thyme >= 0.3 && < 0.4,- old-locale >= 1.0 && < 2.0,- HUnit >= 1.2.5.2 && < 1.3,- tasty >= 0.8 && < 0.11,- tasty-hunit >= 0.8.0.1 && < 0.9,- containers+ base >= 4.4+ , aeson >= 0.8+ , bytestring >= 0.10+ , text >= 1.0+ , attoparsec >= 0.12+ , hashable >= 1.2+ , unordered-containers >= 0.2+ , thyme >= 0.3+ , old-locale >= 1.0+ , HUnit >= 1.2.5.2+ , tasty >= 0.8+ , tasty-hunit >= 0.8.0.1+ , containers Source-Repository head Type: git
src/Data/OrgMode/Parse/Types.hs view
@@ -8,12 +8,14 @@ Types and utility functions. -} -{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE OverloadedStrings #-} module Data.OrgMode.Parse.Types ( Document (..) , Section (..)+, Level (..) , Heading (..) , Priority (..) , Plannings (..)@@ -36,12 +38,12 @@ import Control.Applicative import Control.Monad (mzero)+import Data.Aeson ((.:), (.=)) import qualified Data.Aeson as A-import Data.Aeson ((.=),(.:))-import Data.Hashable (Hashable(..))-import Data.HashMap.Strict (HashMap, fromList, toList, keys)+import Data.Hashable (Hashable (..))+import Data.HashMap.Strict (HashMap, fromList, keys, toList) import Data.Text (Text, pack)-import Data.Thyme.Calendar (YearMonthDay(..))+import Data.Thyme.Calendar (YearMonthDay (..)) import Data.Thyme.LocalTime (Hour, Minute) import Data.Traversable import GHC.Generics@@ -55,7 +57,7 @@ instance A.FromJSON Document where data Heading = Heading- { level :: Int -- ^ Org headline nesting level (1 is at the top)+ { level :: Level -- ^ Org headline nesting level (1 is at the top) , keyword :: Maybe StateKeyword -- ^ State of the headline (e.g. TODO, DONE) , priority :: Maybe Priority -- , title :: Text -- properties@@ -65,6 +67,8 @@ , subHeadings :: [Heading] -- elements } deriving (Show, Eq, Generic) +newtype Level = Level Int deriving (Eq, Show, Num, Generic)+ type Properties = HashMap Text Text type Clock = (Maybe Timestamp, Maybe Duration) @@ -157,6 +161,9 @@ --------------------------------------------------------------------------- --instance A.ToJSON Document where --instance A.FromJSON Document where++instance A.ToJSON Level where+instance A.FromJSON Level where newtype StateKeyword = StateKeyword {unStateKeyword :: Text} deriving (Show, Eq, Generic)