fix git ls-tree parser
File mode is octal not decimal. This broke in the conversion to attoparsec. (I've submitted the content of Utility.Attoparsec to the attoparsec developers.) Test suite passes 100% now.
This commit is contained in:
parent
4aaef14c61
commit
f39f018ee0
5 changed files with 59 additions and 3 deletions
21
Utility/Attoparsec.hs
Normal file
21
Utility/Attoparsec.hs
Normal file
|
@ -0,0 +1,21 @@
|
|||
{- attoparsec utility functions
|
||||
-
|
||||
- Copyright 2019 Joey Hess <id@joeyh.name>
|
||||
- Copyright 2007-2015 Bryan O'Sullivan
|
||||
-
|
||||
- License: BSD-3-clause
|
||||
-}
|
||||
|
||||
module Utility.Attoparsec where
|
||||
|
||||
import qualified Data.Attoparsec.ByteString as A
|
||||
import qualified Data.ByteString as B
|
||||
|
||||
-- | Parse and decode an unsigned octal number.
|
||||
--
|
||||
-- This parser does not accept a leading @\"0o\"@ string.
|
||||
octal :: Integral a => A.Parser a
|
||||
octal = B.foldl' step 0 `fmap` A.takeWhile1 isOctDigit
|
||||
where
|
||||
isOctDigit w = w >= 48 && w <= 55
|
||||
step a w = a * 8 + fromIntegral (w - 48)
|
Loading…
Add table
Add a link
Reference in a new issue