class JsRegex::Converter::TypeConverter
Template class implementation.
Constants
- HEX_EXPANSION
- LINEBREAK_EXPANSION
- NONHEX_EXPANSION
Public Class Methods
directly_compatible?(expression)
click to toggle source
# File lib/js_regex/converter/type_converter.rb, line 13 def self.directly_compatible?(expression) case expression.token when :space, :nonspace !expression.ascii_classes? when :digit, :nondigit, :word, :nonword !expression.unicode_classes? end end
Private Instance Methods
character_set()
click to toggle source
# File lib/js_regex/converter/type_converter.rb, line 50 def character_set CharacterSet.of_expression(expression) end
convert_data()
click to toggle source
# File lib/js_regex/converter/type_converter.rb, line 24 def convert_data case subtype when :hex then HEX_EXPANSION when :nonhex then NONHEX_EXPANSION when :linebreak then LINEBREAK_EXPANSION 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
negative_set_substitution()
click to toggle source
# File lib/js_regex/converter/type_converter.rb, line 40 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
set_substitution()
click to toggle source
# File lib/js_regex/converter/type_converter.rb, line 46 def set_substitution character_set.bmp_part.to_s(in_brackets: true) end