Sha256: faf7352692e28e4b6199a30cf691c79354f9916d837d72c03fff73eeb390b68a

Contents?: true

Size: 951 Bytes

Versions: 1

Compression:

Stored size: 951 Bytes

Contents

module ExvoGlobalize
  module Helpers

    # Prints nested Hash as a nested <ul> and <li> tags
    # - keys are wrapped in <strong> tags
    # - values are wrapped in <span> tags
    def HashToHTML(hash, opts = {})
      return if !hash.is_a?(Hash)

      indent_level = opts.fetch(:indent_level) { 0 }

      out = " " * indent_level + "<ul>\n"

      hash.each do |key, value|
        out += " " * (indent_level + 2) + "<li><strong>#{key}:</strong>"

        if value.is_a?(Hash)
          out += "\n" + HashToHTML(value, :indent_level => indent_level + 2) + " " * (indent_level + 2) + "</li>\n"
        elsif value.is_a?(Array)
          out += " <span>[ #{value.join(', ')} ]</span></li>\n"
        elsif value.is_a?(Proc)
          out += " <span>" + CGI::escapeHTML(value.to_s) + "</span></li>\n"
        else
          out += " <span>#{value}</span></li>\n"
        end
      end

      out += " " * indent_level + "</ul>\n"
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
exvo_globalize-0.3.2 lib/exvo_globalize/helpers.rb