Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- getMarking :: (ContainsMarking s, MonadError Text m, Complementary (Element s)) => s -> Marking s -> m (NonEmpty [Element s])
- unsafeGetMarking :: (ContainsMarking s, Complementary (Element s)) => s -> Marking s -> NonEmpty [Element s]
- toMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s', MonadError Text m) => s -> [(mk, Range)] -> m s'
- unsafeToMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s') => s -> [(mk, Range)] -> s'
- addMarkings :: (ContainsMarking s, Marking s ~ mk, MonadError Text m) => s -> [(mk, Range)] -> m s
- unsafeAddMarkings :: (ContainsMarking s, Marking s ~ mk) => s -> [(mk, Range)] -> s
- listMarkings :: ContainsMarking s => s -> [Marking s]
Documentation
getMarking :: (ContainsMarking s, MonadError Text m, Complementary (Element s)) => s -> Marking s -> m (NonEmpty [Element s]) Source #
Function that retrieves all elements in IsSequence
s
that are covered by given Marking'
s
.
Returns NonEmpty
list, because if Marking
is present in s
, then list of
all Marking
s for s
can't be empty. If given 'Marking is not found in s
, an
error will be thrown.
sequ = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4)), ("Letter B", (2, 3))] mempty getMarking sequ "Letter A" == ['a', 'a'] :| [['a']]
unsafeGetMarking :: (ContainsMarking s, Complementary (Element s)) => s -> Marking s -> NonEmpty [Element s] Source #
toMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s', MonadError Text m) => s -> [(mk, Range)] -> m s' Source #
Converts IsBareSequence
s
to IsMarkedSequence
s'
that is marked using provided list
of Marking
s. If at least one of ranges in given list of Marking
s is out of
bounds, an error will be thrown.
sequBare = Sequence ['a', 'a', 'b', 'a'] mempty mempty :: BareSequence Char toMarked sequ [("Letter A", (0, 2)), ("Letter A", (3, 4))] :: MarkedSequence String Char
unsafeToMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s') => s -> [(mk, Range)] -> s' Source #
addMarkings :: (ContainsMarking s, Marking s ~ mk, MonadError Text m) => s -> [(mk, Range)] -> m s Source #
Adds new Marking
s to given IsSequence
s
. Type of new Marking
s must
match type of Marking
s that s
is already marked with. If at least one of ranges
in given list of Marking
s is out of bounds, an error will be thrown.
sequ = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4)), ("Letter B", (2, 3))] mempty sequ' = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4))] mempty addMarkings sequ' [("Letter B", (2, 3))] == sequ
unsafeAddMarkings :: (ContainsMarking s, Marking s ~ mk) => s -> [(mk, Range)] -> s Source #
listMarkings :: ContainsMarking s => s -> [Marking s] Source #
Retrieves all Marking
s from given sequence that ContainsMarking
.
Result is list of Marking
s without dublicates.
sequ = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4)), ("Letter B", (2, 3))] mempty listMarkings sequ == ["Letter A", "Letter B"]