class JsRegex::Converter::TypeConverter
Template class implementation.
Constants
- ES2018_HEX_EXPANSION
- ES2018_NONHEX_EXPANSION
- ES2018_XGRAPHEME_EXPANSION
- HEX_EXPANSION
- I_MODE_HEX_EXPANSION
- I_MODE_NONHEX_EXPANSION
- LINEBREAK_EXPANSION
- NONHEX_EXPANSION
Public Class Methods
Source
# File lib/js_regex/converter/type_converter.rb, line 18 def self.directly_compatible?(expression, _context = nil) case expression.token when :space, :nonspace !expression.ascii_classes? when :digit, :nondigit, :word, :nonword !expression.unicode_classes? end end
Private Instance Methods
Source
# File lib/js_regex/converter/type_converter.rb, line 80 def character_set CharacterSet.of_expression(expression) end
Source
# File lib/js_regex/converter/type_converter.rb, line 29 def convert_data case subtype when :hex then hex_expansion when :nonhex then nonhex_expansion when :linebreak then linebreak_expansion when :xgrapheme then xgrapheme when :digit, :space, :word return pass_through if self.class.directly_compatible?(expression) set_substitution when :nondigit, :nonspace, :nonword return pass_through if self.class.directly_compatible?(expression) negative_set_substitution else warn_of_unsupported_feature end end
Source
# File lib/js_regex/converter/type_converter.rb, line 46 def hex_expansion if context.es_2018_or_higher? && context.enable_u_option ES2018_HEX_EXPANSION elsif context.case_insensitive_root I_MODE_HEX_EXPANSION else HEX_EXPANSION end end
Source
# File lib/js_regex/converter/type_converter.rb, line 66 def linebreak_expansion wrap_in_backrefed_lookahead(LINEBREAK_EXPANSION) end
Source
# File lib/js_regex/converter/type_converter.rb, line 70 def negative_set_substitution # ::of_expression returns an inverted set for negative expressions, # so we need to un-invert before wrapping in [^ and ]. Kinda lame. "[^#{character_set.inversion.bmp_part}]" end
Source
# File lib/js_regex/converter/type_converter.rb, line 56 def nonhex_expansion if context.es_2018_or_higher? && context.enable_u_option ES2018_NONHEX_EXPANSION elsif context.case_insensitive_root I_MODE_NONHEX_EXPANSION else NONHEX_EXPANSION end end
Source
# File lib/js_regex/converter/type_converter.rb, line 76 def set_substitution character_set.bmp_part.to_s(in_brackets: true) end
Source
# File lib/js_regex/converter/type_converter.rb, line 84 def xgrapheme if context.es_2018_or_higher? && context.enable_u_option wrap_in_backrefed_lookahead(ES2018_XGRAPHEME_EXPANSION) else warn_of_unsupported_feature end end