Class: JsTextRails::TextTransformer
- Inherits:
-
Object
- Object
- JsTextRails::TextTransformer
- Defined in:
- lib/js-text-rails/text_transformer.rb
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
-
#escape_js_string(text) ⇒ Object
Make text content safe and correct when evaluated in JS.
-
#initialize(options = {}) ⇒ TextTransformer
constructor
A new instance of TextTransformer.
-
#sanitize_js_string(text) ⇒ Object
Can be overridden by subclasses.
-
#transform(key, data) ⇒ Object
Take ‘data` and store it at a `key` in a JS namespace.
Constructor Details
#initialize(options = {}) ⇒ TextTransformer
Returns a new instance of TextTransformer.
7 8 9 |
# File 'lib/js-text-rails/text_transformer.rb', line 7 def initialize( = {}) @namespace = [:namespace] || self.class.default_namespace end |
Class Method Details
.default_namespace ⇒ Object
3 4 5 |
# File 'lib/js-text-rails/text_transformer.rb', line 3 def self.default_namespace 'this.TEXT' end |
Instance Method Details
#escape_js_string(text) ⇒ Object
Make text content safe and correct when evaluated in JS.
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/js-text-rails/text_transformer.rb', line 27 def escape_js_string(text) text .gsub(/(['\\])/, "\\\\\\1") .gsub(/[\f]/, '\f') .gsub(/[\b]/, '\b') .gsub(/[\n]/, '\n') .gsub(/[\t]/, '\t') .gsub(/[\r]/, '\r') .gsub(/[\u2028]/, '\u2028') .gsub(/[\u2029]/, '\u2029') end |
#sanitize_js_string(text) ⇒ Object
Can be overridden by subclasses.
22 23 24 |
# File 'lib/js-text-rails/text_transformer.rb', line 22 def sanitize_js_string(text) escape_js_string(text) end |
#transform(key, data) ⇒ Object
Take ‘data` and store it at a `key` in a JS namespace.
12 13 14 15 16 17 18 19 |
# File 'lib/js-text-rails/text_transformer.rb', line 12 def transform(key, data) key = sanitize_js_string(key) data = sanitize_js_string(data) "(function() { \#{@namespace} || (\#{@namespace} = {}); \#{@namespace}['\#{key}'] = '\#{data}';\n}).call(this);\n TEXT\nend\n" |