Class: JsRegex::Converter::LiteralConverter
- Inherits:
-
Base
- Object
- Base
- JsRegex::Converter::LiteralConverter
show all
- Defined in:
- lib/js_regex/converter/literal_converter.rb
Overview
Template class implementation.
Instance Attribute Summary
Attributes inherited from Base
#context, #target
Class Method Summary
collapse
Methods inherited from Base
#convert, #initialize
Class Method Details
.convert(data, converter) ⇒ Object
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/js_regex/converter/literal_converter.rb', line 9
def self.convert(data, converter)
utf8_data = data.dup.force_encoding('UTF-8')
if /[\u{10000}-\u{FFFFF}]/ =~ utf8_data
converter.send(:warn_of_unsupported_feature, 'astral plane character')
else
escape_literal_forward_slashes(utf8_data)
ensure_json_compatibility(utf8_data)
utf8_data
end
end
|
.ensure_json_compatibility(data) ⇒ Object
25
26
27
|
# File 'lib/js_regex/converter/literal_converter.rb', line 25
def self.ensure_json_compatibility(data)
data.gsub!(/\\?[\f\n\r\t]/) { |lit| Regexp.escape(lit.delete('\\')) }
end
|
.escape_literal_forward_slashes(data) ⇒ Object
20
21
22
23
|
# File 'lib/js_regex/converter/literal_converter.rb', line 20
def self.escape_literal_forward_slashes(data)
data.gsub!('/', '\\/')
end
|