# File lib/kwartz/defun.rb, line 75
    def build_ruby_code(basename, ruby_code, properties)
      basename = basename.gsub(/[^\w]/, '_')
      module_name = properties.key?(:module) ? properties[:module] : 'View'
      method_verb = properties[:verb] || 'expand'
      method_name = properties[:method] || "#{method_verb}_#{basename}"
      s = ''
      s << "module #{module_name}\n" if module_name
      s << "\n"
      s << "  (@@proc_table ||= {})['#{basename}'] = proc do\n"
      s << ruby_code << (!ruby_code.empty? && ruby_code[-1] != ?\n ? "\n" : '')
      s << "  end#proc\n"
      s << "\n"
      s << "  module_function\n" if module_name
      s << "  def #{method_name}(context={})\n"
      s << "    if context.is_a?(Hash)\n"
      s << "      hash = context\n"
      s << "      context = Object.new\n"
      s << "      hash.each { |key, val| context.instance_variable_set(\"@\#{key}\", val) }\n"
      s << "    end\n"
      s << "    proc_obj = @@proc_table['#{basename}']\n"
      s << "    context.instance_eval(&proc_obj)\n"
      s << "  end\n"
      s << "\n"
      s << "end\n" if module_name
      return s
    end