Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Implements sequential string replacements based on the Aho-Corasick algorithm.
Synopsis
- type Needle = Text
- data Payload = Payload {
- needlePriority :: !Priority
- needleLengthBytes :: !CodeUnitIndex
- needleLengthCodePoints :: !Int
- needleReplacement :: !Replacement
- type Replacement = Text
- data Replacer = Replacer {}
- replacerCaseSensitivity :: Replacer -> CaseSensitivity
- build :: CaseSensitivity -> [(Needle, Replacement)] -> Replacer
- compose :: Replacer -> Replacer -> Maybe Replacer
- mapReplacement :: (Replacement -> Replacement) -> Replacer -> Replacer
- run :: Replacer -> Text -> Text
- runWithLimit :: Replacer -> CodeUnitIndex -> Text -> Maybe Text
- setCaseSensitivity :: CaseSensitivity -> Replacer -> Replacer
State machine
Payload | |
|
Instances
FromJSON Payload Source # | |
ToJSON Payload Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
Generic Payload Source # | |
Show Payload Source # | |
NFData Payload Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
Eq Payload Source # | |
Hashable Payload Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
type Rep Payload Source # | |
Defined in Data.Text.AhoCorasick.Replacer |
type Replacement = Text Source #
Descriptive type alias for replacements.
A state machine used for efficient replacements with many different needles.
Instances
FromJSON Replacer Source # | |
ToJSON Replacer Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
Generic Replacer Source # | |
Show Replacer Source # | |
NFData Replacer Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
Eq Replacer Source # | |
Hashable Replacer Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
type Rep Replacer Source # | |
Defined in Data.Text.AhoCorasick.Replacer type Rep Replacer = D1 ('MetaData "Replacer" "Data.Text.AhoCorasick.Replacer" "alfred-margaret-2.1.0.0-GaLGdvCW2mGJuL9TH52qO1" 'False) (C1 ('MetaCons "Replacer" 'PrefixI 'True) (S1 ('MetaSel ('Just "replacerSearcher") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Searcher Payload)))) |
build :: CaseSensitivity -> [(Needle, Replacement)] -> Replacer Source #
Build an Aho-Corasick automaton that can be used for performing fast sequential replaces.
Case-insensitive matching performs per-letter language-agnostic lower-casing. Therefore, it will work in most cases, but not in languages where lower-casing depends on the context of the character in question.
We need to revisit this algorithm when we want to implement full Unicode support.
compose :: Replacer -> Replacer -> Maybe Replacer Source #
Return the composition replacer2
after replacer1
, if they have the same
case sensitivity. If the case sensitivity differs, Nothing is returned.
mapReplacement :: (Replacement -> Replacement) -> Replacer -> Replacer Source #
Modify the replacement of a replacer. It doesn't modify the needles.
runWithLimit :: Replacer -> CodeUnitIndex -> Text -> Maybe Text Source #
setCaseSensitivity :: CaseSensitivity -> Replacer -> Replacer Source #
Updates the case sensitivity of the replacer. Does not change the capitilization of the needles. The caller should be certain that if IgnoreCase is passed, the needles are already lower case.