module Erubis::Generator

def self.supported_properties() # :nodoc:

:nodoc:
def self.supported_properties()  # :nodoc:
  return [
          [:escapefunc,    nil,    "escape function name"],
        ]
end

def add_expr_debug(src, code)

# (abstract) add expression code to src for debug. this is called by add_expr().
def add_expr_debug(src, code)
  not_implemented
end

def add_expr_escaped(src, code)

# (abstract) add escaped expression code to src. this is called by add_expr().
def add_expr_escaped(src, code)
  not_implemented
end

def add_expr_literal(src, code)

# (abstract) add expression literal code to src. this is called by add_expr().
def add_expr_literal(src, code)
  not_implemented
end

def add_postamble(src)

# (abstract) add @postamble to src
def add_postamble(src)
  not_implemented
end

def add_preamble(src)

# (abstract) add @preamble to src
def add_preamble(src)
  not_implemented
end

def add_stmt(src, code)

# (abstract) add statement code to src
def add_stmt(src, code)
  not_implemented
end

def add_text(src, text)

# (abstract) add text string to src
def add_text(src, text)
  not_implemented
end

def escape_text(text)

# end
# # or return "'" + text.gsub(/['\\]/, '\\\\\&') + "'"
# return text.dump
# def escape_text(text)
# ex.
#
# (abstract) escape text string
def escape_text(text)
  not_implemented
end

def escaped_expr(code)

# return escaped expression code (ex. 'h(...)' or 'htmlspecialchars(...)')
def escaped_expr(code)
  code.strip!
  return "#{@escapefunc}(#{code})"
end

def init_generator(properties={})

def init_generator(properties={})
  @escapefunc = properties[:escapefunc]
end