Module: Erubis::ContextualEscapeEnhancer

Included in:
ContextualEruby
Defined in:
lib/contextual/contextual.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.descObject

:nodoc:



13
14
15
# File 'lib/contextual/contextual.rb', line 13

def self.desc   # :nodoc:
  "switch '<%= %>' to escaped and '<%== %>' to unescaped"
end

Instance Method Details

#add_expr(src, code, indicator) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/contextual/contextual.rb', line 17

def add_expr(src, code, indicator)
  case indicator
  when '='
    @escape ? add_expr_literal(src, code) : add_expr_escaped(src, code)
  when '=='
    @escape ? add_expr_escaped(src, code) : add_expr_literal(src, code)
  when '==='
    add_expr_debug(src, code)
  end
end

#add_expr_escaped(src, code) ⇒ Object



43
44
45
# File 'lib/contextual/contextual.rb', line 43

def add_expr_escaped(src, code)
  src << " #{@bufvar}.write(" << code << ').to_s;'
end

#add_expr_literal(src, code) ⇒ Object



39
40
41
# File 'lib/contextual/contextual.rb', line 39

def add_expr_literal(src, code)
  src << " #{@bufvar}.writeSafe(" << code << ').to_s;'
end

#add_stmt(src, code) ⇒ Object



34
35
36
37
# File 'lib/contextual/contextual.rb', line 34

def add_stmt(src, code)
  src << code
  src << ';' unless code[-1] == ?\n
end

#add_text(src, text) ⇒ Object



28
29
30
31
32
# File 'lib/contextual/contextual.rb', line 28

def add_text(src, text)
  if !text.empty?
    src << " #{@bufvar}.writeSafe '" << text.to_s.gsub("'", "\\\\'") << "';"
  end
end