module YamlUnscrambler.AsciiAtto where

import Data.Attoparsec.ByteString.Char8
import YamlUnscrambler.Model
import YamlUnscrambler.Prelude

integralScalar :: (Integral a, Bits a) => Signed -> NumeralSystem -> Parser a
integralScalar :: forall a.
(Integral a, Bits a) =>
Signed -> NumeralSystem -> Parser a
integralScalar (Signed Bool
isSigned) NumeralSystem
numeralSystem =
  if Bool
isSigned
    then forall a. Num a => Parser a -> Parser a
signed Parser a
numeralParser
    else Parser a
numeralParser
  where
    numeralParser :: Parser a
numeralParser =
      case NumeralSystem
numeralSystem of
        NumeralSystem
DecimalNumeralSystem ->
          forall a. Integral a => Parser a
decimal
        NumeralSystem
HexadecimalNumeralSystem ->
          forall a. (Integral a, Bits a) => Parser a
hexadecimal