Refactor field range parsing
This commit is contained in:
parent
d73e5f5972
commit
3d161e090e
32
src/Field.hs
32
src/Field.hs
@ -17,28 +17,22 @@ data Field = Field Range Step
|
|||||||
|
|
||||||
parseField :: String -> Constraint -> Maybe Field
|
parseField :: String -> Constraint -> Maybe Field
|
||||||
parseField text constraint
|
parseField text constraint
|
||||||
| isAll = Just (Field All Every)
|
| isJust range = Just (Field (fromJust range) Every)
|
||||||
| isNumber = Just (Field (Range number number) Every)
|
|
||||||
| isRange = Just (Field (Range leftBound rightBound) Every)
|
|
||||||
| isSequence = Just (Field (Sequence numbers) Every)
|
|
||||||
| otherwise = Nothing
|
| otherwise = Nothing
|
||||||
where
|
where
|
||||||
-- All
|
range = parseFieldRange text constraint
|
||||||
|
|
||||||
|
parseFieldRange :: String -> Constraint -> Maybe Range
|
||||||
|
parseFieldRange text constraint
|
||||||
|
| isAll = Just All
|
||||||
|
| isJust number = Just (Range (fromJust number) (fromJust number))
|
||||||
|
| isJust range = Just (Range (fst $ fromJust range) (snd $ fromJust range))
|
||||||
|
| isJust sequence = Just (Sequence (fromJust sequence))
|
||||||
|
where
|
||||||
isAll = parseAll text
|
isAll = parseAll text
|
||||||
-- Number
|
number = parseNumber text constraint
|
||||||
numberParseResult = parseNumber text constraint
|
range = parseRange text constraint
|
||||||
isNumber = isJust numberParseResult
|
sequence = parseSequence text constraint
|
||||||
number = fromJust numberParseResult
|
|
||||||
-- Range
|
|
||||||
rangeParseResult = parseRange text constraint
|
|
||||||
isRange = isJust rangeParseResult
|
|
||||||
rangeValues (Just p) = p
|
|
||||||
leftBound = fst (rangeValues rangeParseResult)
|
|
||||||
rightBound = snd (rangeValues rangeParseResult)
|
|
||||||
-- Sequence
|
|
||||||
sequenceParseResult = parseSequence text constraint
|
|
||||||
isSequence = isJust sequenceParseResult
|
|
||||||
numbers = fromJust sequenceParseResult
|
|
||||||
|
|
||||||
parseAll :: String -> Bool
|
parseAll :: String -> Bool
|
||||||
parseAll "*" = True
|
parseAll "*" = True
|
||||||
|
Loading…
Reference in New Issue
Block a user