packages feed

hledger-iadd 1.3.1 → 1.3.2

raw patch · 10 files changed

+70/−33 lines, 10 filesdep −text-formatdep ~basedep ~brickdep ~megaparsecPVP ok

version bump matches the API change (PVP)

Dependencies removed: text-format

Dependency ranges changed: base, brick, megaparsec

API changes (from Hackage documentation)

+ Brick.Widgets.Border.Utils: borderLeft :: Widget n -> Widget n
+ DateParser: instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (DateParser.IncompleteDate a)

Files

ChangeLog.md view
@@ -1,3 +1,10 @@+# 1.3.2++  - Highlight currently constructed transaction+  - Fix build with GHC 8.4+  - Support new dependencies+  - Drop dependency on text-format+ # 1.3.1    - Support brick <= 0.32
hledger-iadd.cabal view
@@ -1,5 +1,5 @@ name:                hledger-iadd-version:             1.3.1+version:             1.3.2 synopsis:            A terminal UI as drop-in replacement for hledger add description:         This is a terminal UI as drop-in replacement for hledger add.                      .@@ -30,7 +30,7 @@ category:            Finance, Console build-type:          Simple cabal-version:       >=1.10-tested-with:         GHC==7.10.3, GHC==8.0+tested-with:         GHC==8.0, GHC==8.2, GHC==8.4                       extra-source-files:   doc/screencast.gif@@ -54,11 +54,12 @@                      , Brick.Widgets.BetterDialog                      , Brick.Widgets.WrappedText                      , Brick.Widgets.Edit.EmacsBindings+                     , Brick.Widgets.Border.Utils                      , Text.Megaparsec.Compat   default-language:    Haskell2010-  build-depends:       base >= 4.8 && < 5+  build-depends:       base >= 4.9 && < 5                      , hledger-lib >= 1.0 && < 1.6-                     , brick >= 0.17 && < 0.33+                     , brick >= 0.17                      , vty >= 5.4                      , text                      , microlens@@ -71,7 +72,6 @@                      , containers                      , optparse-applicative                      , directory-                     , text-format                      , xdg-basedir                      , unordered-containers                      , free >= 4.12.4@@ -83,10 +83,10 @@   main-is:             Main.hs   other-modules:       Paths_hledger_iadd   default-language:    Haskell2010-  build-depends:       base >= 4.8 && < 5+  build-depends:       base >= 4.9 && < 5                      , hledger-iadd                      , hledger-lib >= 1.0 && < 1.6-                     , brick >= 0.17 && < 0.33+                     , brick >= 0.17                      , vty >= 5.4                      , text                      , microlens@@ -96,7 +96,6 @@                      , vector                      , optparse-applicative                      , directory-                     , text-format                      , xdg-basedir                      , unordered-containers                      , free >= 4.12.4@@ -112,7 +111,7 @@                     , AmountParserSpec                     , ModelSpec   default-language:   Haskell2010-  build-depends:      base >= 4.8 && < 5+  build-depends:      base >= 4.9 && < 5                     , hledger-iadd                     , hledger-lib >= 1.0 && < 1.6                     , text@@ -121,7 +120,6 @@                     , vector                     , hspec                     , QuickCheck-                    , text-format                     , free >= 4.12.4                     , megaparsec >= 5.0 && <6.5                     , text-zipper >= 0.10
+ src/Brick/Widgets/Border/Utils.hs view
@@ -0,0 +1,22 @@+-- | Extensions to "Brick.Widgets.Border"+module Brick.Widgets.Border.Utils (borderLeft) where++import Brick+import Brick.Widgets.Border+import Graphics.Vty++import Lens.Micro++-- | Draw a vertical border on the left side of a widget.+borderLeft :: Widget n -> Widget n+borderLeft wrapped = Widget (hSize wrapped) (vSize wrapped) $ do+  c <- getContext++  wrappedRes <- render $ hLimit (c^.availWidthL - 1)+                       $ wrapped++  let withBorder = vBorder <+> (Widget Fixed Fixed $ return wrappedRes)+      width = wrappedRes^.imageL.to imageWidth + 1+      height = wrappedRes^.imageL.to imageHeight++  render $ hLimit width $ vLimit height $ withBorder
src/Brick/Widgets/CommentDialog.hs view
@@ -9,7 +9,7 @@   , handleCommentEvent   ) where -import           Data.Monoid+import           Data.Semigroup ((<>))  import           Brick import           Brick.Widgets.Dialog
src/Brick/Widgets/HelpMessage.hs view
@@ -15,7 +15,7 @@ import Brick.Widgets.Border import Graphics.Vty import Data.Text (Text)-import Data.Monoid+import Data.Monoid ((<>)) import Data.List import Lens.Micro 
src/ConfigParser.hs view
@@ -48,7 +48,7 @@ import           Control.Applicative.Free import           Control.Monad import           Data.Functor.Identity-import           Data.Monoid+import           Data.Semigroup ((<>)) import           Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.IO as T
src/DateParser.hs view
@@ -21,16 +21,18 @@ import           Control.Applicative hiding (many, some) import           Data.Maybe import           Data.Monoid+import qualified Data.Semigroup as Sem import           Data.Text (Text) import qualified Data.Text as T-import           Data.Text.Buildable (Buildable,build)-import           Data.Text.Format hiding (build) import qualified Data.Text.Lazy as TL import           Data.Text.Lazy.Builder (Builder, toLazyText)+import qualified Data.Text.Lazy.Builder as Build+import qualified Data.Text.Lazy.Builder.Int as Build import           Data.Time hiding (parseTime) import           Data.Time.Calendar.WeekDate import qualified Hledger.Data.Dates as HL import           Text.Megaparsec.Compat+import           Text.Printf (printf, PrintfArg)  newtype DateFormat = DateFormat [DateSpec]                    deriving (Eq, Show)@@ -111,7 +113,7 @@  -- (y, m, d) newtype IncompleteDate a = IDate (a, a, a)-                       deriving (Monoid, Functor, Show)+                       deriving (Sem.Semigroup, Monoid, Functor, Show)  data Direction = Future | Past deriving (Eq,Show) -- find a date that matches the incomplete date and is as near as possible to@@ -205,7 +207,7 @@ printDate' :: [DateSpec] -> Day -> Builder printDate' [] _ = "" printDate' (DateYear:ds) day@(toGregorian -> (y,_,_)) =-  build y <> printDate' ds day+  Build.decimal y <> printDate' ds day printDate' (DateYearShort:ds) day@(toGregorian -> (y,_,_))   | y > 2000  = twoDigits (y-2000) <> printDate' ds day   | otherwise = twoDigits y <> printDate' ds day@@ -214,9 +216,9 @@ printDate' (DateDay:ds) day@(toGregorian -> (_,_,d)) =   twoDigits d <> printDate' ds day printDate' (DateString s:ds) day =-  build s <> printDate' ds day+  Build.fromText s <> printDate' ds day printDate' (DateOptional opt:ds) day =   printDate' opt day <> printDate' ds day -twoDigits :: Buildable a => a -> Builder-twoDigits = left 2 '0'+twoDigits :: (Integral a, PrintfArg a) => a -> Builder+twoDigits = Build.fromString . printf "%02d"
src/View.hs view
@@ -11,7 +11,7 @@ import           Brick import           Brick.Widgets.List import           Brick.Widgets.WrappedText-import           Data.Monoid+import           Data.Semigroup ((<>)) import           Data.Text (Text) import qualified Data.Text as T import           Data.Time hiding (parseTime)@@ -26,13 +26,11 @@   T.pack (formatTime defaultTimeLocale "%Y/%m/%d" date)   <> viewComment comment viewState (AccountQuestion trans comment) = txt $-  T.pack (HL.showTransactionUnelided trans)-  <> viewComment comment+  showTransaction trans <> viewComment comment viewState (AmountQuestion acc trans comment) = txt $-  T.pack (HL.showTransactionUnelided trans) <> "  " <> acc-  <> viewComment comment-viewState (FinalQuestion trans _) = str $-  HL.showTransactionUnelided trans+  showTransaction trans <> "\n    " <> acc <> viewComment comment+viewState (FinalQuestion trans _) = txt $+  showTransaction trans  viewQuestion :: Step -> Widget n viewQuestion (DateQuestion _) = txt "Date"@@ -69,3 +67,7 @@ viewComment comment   | T.null comment = ""   | otherwise      = T.unlines $ map ("  ; " <>) $ T.lines comment+++showTransaction :: HL.Transaction -> Text+showTransaction = T.stripEnd . T.pack . HL.showTransactionUnelided
src/main/Main.hs view
@@ -9,10 +9,11 @@ import Brick   ( Widget, App(..), AttrMap, BrickEvent(..), Next, EventM   , (<=>), (<+>), txt, continue, halt, attrMap, on, fg-  , defaultMain, showFirstCursor, padBottom, Padding(Max)+  , defaultMain, showFirstCursor, padBottom, Padding(Max,Pad)+  , vLimit, padTopBottom, vSize, Size(Fixed), padAll, padLeft   ) import Brick.Widgets.BetterDialog (dialog)-import Brick.Widgets.Border (hBorder)+import Brick.Widgets.Border (hBorder, vBorder) import Brick.Widgets.Edit.EmacsBindings   ( Editor, renderEditor, handleEditorEvent, getEditContents, editContentsL   , editorText@@ -32,6 +33,7 @@ import Data.Functor.Identity (Identity(..), runIdentity) import Data.Maybe (fromMaybe, fromJust) import Data.Monoid ((<>), First(..), getFirst)+import qualified Data.Semigroup as Sem import Data.Text (Text) import qualified Data.Text as T import qualified Data.Text.IO as T@@ -55,6 +57,7 @@  import Brick.Widgets.CommentDialog import Brick.Widgets.HelpMessage+import Brick.Widgets.Border.Utils (borderLeft) import ConfigParser hiding (parseConfigFile) import DateParser import Model@@ -128,7 +131,8 @@   CommentDialog _ c -> [renderCommentWidget c, ui]   NoDialog -> [ui] -  where ui =  viewState (asStep as)+  where ui =  (txt "New Transaction:")+          <=> padAll 1 (borderLeft $ padLeft (Pad 1) $ viewState (asStep as))           <=> hBorder           <=> (viewQuestion (asStep as)                <+> viewSuggestion (asSuggestion as)@@ -355,8 +359,8 @@   , optMatchAlgo  :: f MatchAlgo   } -instance Monoid (CommonOptions Maybe) where-  mappend opt1 opt2 =+instance Sem.Semigroup (CommonOptions Maybe) where+  (<>) opt1 opt2 =     let opt1' = optNatTrans First opt1         opt2' = optNatTrans First opt2     in optNatTrans getFirst $ CommonOptions@@ -365,6 +369,8 @@        , optMatchAlgo = optMatchAlgo opt1' <> optMatchAlgo opt2'        } +instance Monoid (CommonOptions Maybe) where+  mappend = (Sem.<>)   mempty = CommonOptions Nothing Nothing Nothing  optNatTrans :: (forall a. f a -> g a) -> CommonOptions f -> CommonOptions g
tests/ModelSpec.hs view
@@ -6,7 +6,7 @@  import           Control.Monad import           Data.List-import           Data.Monoid+import           Data.Semigroup ((<>))  import           Data.Text (Text) import qualified Data.Text as T