Sha256: 0769a2483aec12487c83e35252f848582a09b975c24ad33192bd77ccbf7675a5

Contents?: true

Size: 1.06 KB

Versions: 18

Compression:

Stored size: 1.06 KB

Contents

# This module is extracted from Rails to provide reliable javascript escaping.
#
# @see https://github.com/rails/rails/blob/master/actionview/lib/action_view/helpers/javascript_helper.rb
module Rack::Tracker::JavaScriptHelper

  JS_ESCAPE_MAP = {
      '\\' => '\\\\',
      '</' => '<\/',
      "\r\n" => '\n',
      "\n" => '\n',
      "\r" => '\n',
      '"' => '\\"',
      "'" => "\\'"
  }

  JS_ESCAPE_MAP["\342\200\250".force_encoding(Encoding::UTF_8).encode!] = '&#x2028;'
  JS_ESCAPE_MAP["\342\200\251".force_encoding(Encoding::UTF_8).encode!] = '&#x2029;'

  # Escapes carriage returns and single and double quotes for JavaScript segments.
  #
  # Also available through the alias j(). This is particularly helpful in JavaScript
  # responses, like:
  #
  #   $('some_element').replaceWith('<%=j render 'some/element_template' %>');
  def escape_javascript(javascript)
    if javascript
      javascript.to_s.gsub(/(\\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"'])/u) { |match| JS_ESCAPE_MAP[match] }
    else
      ''
    end
  end

  alias_method :j, :escape_javascript
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
rack-tracker-1.13.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.12.1 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.12.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.11.2 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.11.1 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.11.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.10.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.9.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.8.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.7.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.6.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.5.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.4.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.3.1 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.3.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.2.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.1.0 lib/rack/tracker/javascript_helper.rb
rack-tracker-1.0.2 lib/rack/tracker/javascript_helper.rb