| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Text.AhoCorasick.Replacer
Contents
Description
Implements sequential string replacements based on the Aho-Corasick algorithm.
Synopsis
- type Needle = Text
- data Payload = Payload {
- needlePriority :: !Priority
- needleLength :: !CodeUnitIndex
- needleReplacement :: !Replacement
- type Replacement = Text
- data Replacer = Replacer {}
- build :: CaseSensitivity -> [(Needle, Replacement)] -> Replacer
- compose :: Replacer -> Replacer -> Maybe Replacer
- run :: Replacer -> Text -> Text
- runWithLimit :: Replacer -> CodeUnitIndex -> Text -> Maybe Text
State machine
Constructors
| Payload | |
Fields
| |
Instances
| Eq Payload Source # | |
| Show Payload Source # | |
| Generic Payload Source # | |
| Hashable Payload Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
| ToJSON Payload Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
| FromJSON Payload Source # | |
| NFData 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.
Constructors
| Replacer | |
Instances
| Eq Replacer Source # | |
| Show Replacer Source # | |
| Generic Replacer Source # | |
| Hashable Replacer Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
| ToJSON Replacer Source # | |
Defined in Data.Text.AhoCorasick.Replacer | |
| FromJSON Replacer Source # | |
| NFData 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.0.0.0-AHkhEWrSlE7G50v2ifxOcH" 'False) (C1 ('MetaCons "Replacer" 'PrefixI 'True) (S1 ('MetaSel ('Just "replacerCaseSensitivity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CaseSensitivity) :*: 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.
runWithLimit :: Replacer -> CodeUnitIndex -> Text -> Maybe Text Source #