lib/erubi.rb in erubi-1.5.0 vs lib/erubi.rb in erubi-1.6.0
- old
+ new
@@ -1,30 +1,43 @@
# frozen_string_literal: true
module Erubi
- ESCAPE_TABLE = {'&' => '&'.freeze, '<' => '<'.freeze, '>' => '>'.freeze, '"' => '"'.freeze, "'" => '''.freeze}.freeze
+ VERSION = '1.6.0'
RANGE_ALL = 0..-1
if RUBY_VERSION >= '1.9'
RANGE_FIRST = 0
RANGE_LAST = -1
TEXT_END = RUBY_VERSION >= '2.1' ? "'.freeze;" : "';"
-
- # Escape the following characters with their HTML/XML
- # equivalents.
- def self.h(value)
- value.to_s.gsub(/[&<>"']/, ESCAPE_TABLE)
- end
else
# :nocov:
RANGE_FIRST = 0..0
RANGE_LAST = -1..-1
TEXT_END = "';"
+ end
+ begin
+ require 'cgi/escape'
+ unless CGI.respond_to?(:escapeHTML) # work around for JRuby 9.1
+ CGI = Object.new
+ CGI.extend(::CGI::Util)
+ end
def self.h(value)
- value.to_s.gsub(/[&<>"']/){|s| ESCAPE_TABLE[s]}
+ CGI.escapeHTML(value.to_s)
end
- # :nocov:
+ rescue LoadError
+ ESCAPE_TABLE = {'&' => '&'.freeze, '<' => '<'.freeze, '>' => '>'.freeze, '"' => '"'.freeze, "'" => '''.freeze}.freeze
+ if RUBY_VERSION >= '1.9'
+ # Escape the following characters with their HTML/XML
+ # equivalents.
+ def self.h(value)
+ value.to_s.gsub(/[&<>"']/, ESCAPE_TABLE)
+ end
+ else
+ def self.h(value)
+ value.to_s.gsub(/[&<>"']/){|s| ESCAPE_TABLE[s]}
+ end
+ end
end
class Engine
# The frozen ruby source code generated from the template, which can be evaled.
attr_reader :src