packages feed

tibetan-utils 0.1.0.4 → 0.1.1.0

raw patch · 4 files changed

+17/−11 lines, 4 filesdep ~tibetan-utilsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: tibetan-utils

API changes (from Hackage documentation)

+ Text.Megaparsec.Char.Tibetan: digitCharBo :: Parser Char
- Text.Megaparsec.Lexer.Tibetan: parseNumber :: Parser Integer
+ Text.Megaparsec.Lexer.Tibetan: parseNumber :: (Integral a, MonadParsec e s m, Token s ~ Char) => m a
- Text.Megaparsec.Lexer.Tibetan: readBo :: String -> Maybe Integer
+ Text.Megaparsec.Lexer.Tibetan: readBo :: (Integral a) => String -> Maybe a

Files

src/Text/Megaparsec/Char/Tibetan.hs view
@@ -7,3 +7,7 @@ -- consonantCharBo :: Parser Char consonantCharBo = oneOf ("ཨཅཆརཏཡཕཙཚཛའསདབངམགལཞཟཤཀཁཔནཐཇཉཝཧ" :: String)++-- | Parse a digit as a char. +digitCharBo :: Parser Char+digitCharBo = oneOf ("༠༡༢༣༤༥༦༧༨༩" :: String) <?> "digit char"
src/Text/Megaparsec/Lexer/Tibetan.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE TypeFamilies #-}  -- | Parser to parse Tibetan numerals module Text.Megaparsec.Lexer.Tibetan@@ -10,7 +11,7 @@ import Data.Either.Combinators import qualified Data.Text as T import Text.Megaparsec-import Text.Megaparsec.Text+import Text.Megaparsec.String import Text.Megaparsec.Prim import System.Environment @@ -18,21 +19,21 @@ -- -- > λ > readBo "༣༢༠༥" -- > 3205-readBo :: String -> Maybe Integer-readBo = rightToMaybe . (runParser parseNumber "") . T.pack+readBo :: (Integral a) => String -> Maybe a+readBo = fmap fromIntegral . rightToMaybe . (runParser (parseNumber :: Parser Integer) "")  -- | Parse Tibetan numerals, returning a positive integer-parseNumber :: Parser Integer+parseNumber :: (Integral a, MonadParsec e s m, Token s ~ Char) => m a parseNumber = do     digits <- reverse <$> some parseNumeral     (pure . (`div` 10) $ foldr ((*10) .* (+)) 0 digits) <?> "tibetan integer"  -- | Parse a single digit-parseNumeral :: Parser Integer+parseNumeral :: (Integral a, MonadParsec e s m, Token s ~ Char) => m a parseNumeral = foldr (<|>) (parseDigit '༠' 0) $ zipWith parseDigit "༠༡༢༣༤༥༦༧༨༩" (0:[1..9]) --- | Parser a given char as a given integer-parseDigit :: Char -> Integer -> Parser Integer+-- | m a given char as a given integer+parseDigit :: (Integral a, MonadParsec e s m, Token s ~ Char) => Char -> a -> m a parseDigit c i = do     char c     pure i
test/Spec.hs view
@@ -4,6 +4,7 @@ import Test.Hspec.Megaparsec import Text.Megaparsec.Lexer.Tibetan import Text.Megaparsec+import Text.Megaparsec.Text import TextShow.Data.Integral.Tibetan import qualified Data.Text as T @@ -11,9 +12,9 @@ main = hspec $ do     describe "parseNumber" $ do         it "parses Tibetan numerals as an Int" $ do-            (runParser parseNumber "") tibStr `shouldParse` 6320+            (runParser (parseNumber :: Parser Integer) "") tibStr `shouldParse` 6320         it "fails when given a character that isn't a tibetan numeral" $ do-            (runParser parseNumber "") `shouldFailOn` otherStr+            (runParser (parseNumber :: Parser Integer) "") `shouldFailOn` otherStr     describe "showBo" $ do         it "displays a positive integer using tibetan numerals" $ do             showBo 15 `shouldBe` Just ("༡༥")
tibetan-utils.cabal view
@@ -1,5 +1,5 @@ name: tibetan-utils-version: 0.1.0.4+version: 0.1.1.0 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -40,7 +40,7 @@     main-is: Spec.hs     build-depends:         base >=4.9.0.0 && <4.10,-        tibetan-utils >=0.1.0.4 && <0.2,+        tibetan-utils >=0.1.1.0 && <0.2,         hspec >=2.2.4 && <2.3,         hspec-megaparsec >=0.2.1 && <0.3,         text >=1.2.2.1 && <1.3,