Struct regex_syntax::hir::translate::TranslatorBuilder
source · pub struct TranslatorBuilder {
utf8: bool,
line_terminator: u8,
flags: Flags,
}
Expand description
A builder for constructing an AST->HIR translator.
Fields§
§utf8: bool
§line_terminator: u8
§flags: Flags
Implementations§
source§impl TranslatorBuilder
impl TranslatorBuilder
sourcepub fn new() -> TranslatorBuilder
pub fn new() -> TranslatorBuilder
Create a new translator builder with a default c onfiguration.
sourcepub fn build(&self) -> Translator
pub fn build(&self) -> Translator
Build a translator using the current configuration.
sourcepub fn utf8(&mut self, yes: bool) -> &mut TranslatorBuilder
pub fn utf8(&mut self, yes: bool) -> &mut TranslatorBuilder
When disabled, translation will permit the construction of a regular expression that may match invalid UTF-8.
When enabled (the default), the translator is guaranteed to produce an expression that, for non-empty matches, will only ever produce spans that are entirely valid UTF-8 (otherwise, the translator will return an error).
Perhaps surprisingly, when UTF-8 is enabled, an empty regex or even
a negated ASCII word boundary (uttered as (?-u:\B)
in the concrete
syntax) will be allowed even though they can produce matches that split
a UTF-8 encoded codepoint. This only applies to zero-width or “empty”
matches, and it is expected that the regex engine itself must handle
these cases if necessary (perhaps by suppressing any zero-width matches
that split a codepoint).
sourcepub fn line_terminator(&mut self, byte: u8) -> &mut TranslatorBuilder
pub fn line_terminator(&mut self, byte: u8) -> &mut TranslatorBuilder
Sets the line terminator for use with (?u-s:.)
and (?-us:.)
.
Namely, instead of .
(by default) matching everything except for \n
,
this will cause .
to match everything except for the byte given.
If .
is used in a context where Unicode mode is enabled and this byte
isn’t ASCII, then an error will be returned. When Unicode mode is
disabled, then any byte is permitted, but will return an error if UTF-8
mode is enabled and it is a non-ASCII byte.
In short, any ASCII value for a line terminator is always okay. But a non-ASCII byte might result in an error depending on whether Unicode mode or UTF-8 mode are enabled.
Note that if R
mode is enabled then it always takes precedence and
the line terminator will be treated as \r
and \n
simultaneously.
Note also that this doesn’t impact the look-around assertions
(?m:^)
and (?m:$)
. That’s usually controlled by additional
configuration in the regex engine itself.
sourcepub fn case_insensitive(&mut self, yes: bool) -> &mut TranslatorBuilder
pub fn case_insensitive(&mut self, yes: bool) -> &mut TranslatorBuilder
Enable or disable the case insensitive flag (i
) by default.
sourcepub fn multi_line(&mut self, yes: bool) -> &mut TranslatorBuilder
pub fn multi_line(&mut self, yes: bool) -> &mut TranslatorBuilder
Enable or disable the multi-line matching flag (m
) by default.
sourcepub fn dot_matches_new_line(&mut self, yes: bool) -> &mut TranslatorBuilder
pub fn dot_matches_new_line(&mut self, yes: bool) -> &mut TranslatorBuilder
Enable or disable the “dot matches any character” flag (s
) by
default.
sourcepub fn crlf(&mut self, yes: bool) -> &mut TranslatorBuilder
pub fn crlf(&mut self, yes: bool) -> &mut TranslatorBuilder
Enable or disable the CRLF mode flag (R
) by default.
sourcepub fn swap_greed(&mut self, yes: bool) -> &mut TranslatorBuilder
pub fn swap_greed(&mut self, yes: bool) -> &mut TranslatorBuilder
Enable or disable the “swap greed” flag (U
) by default.
sourcepub fn unicode(&mut self, yes: bool) -> &mut TranslatorBuilder
pub fn unicode(&mut self, yes: bool) -> &mut TranslatorBuilder
Enable or disable the Unicode flag (u
) by default.
Trait Implementations§
source§impl Clone for TranslatorBuilder
impl Clone for TranslatorBuilder
source§fn clone(&self) -> TranslatorBuilder
fn clone(&self) -> TranslatorBuilder
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more