Class: Serialbench::Serializers::Html::BaseHtmlSerializer

Inherits:
BaseSerializer
  • Object
show all
Defined in:
lib/serialbench/serializers/html/base_html_serializer.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseSerializer

#get_version, #initialize, #parse, #require_library, #stream_parse, #supports?

Constructor Details

This class inherits a constructor from Serialbench::Serializers::BaseSerializer

Class Method Details

.formatObject



9
10
11
# File 'lib/serialbench/serializers/html/base_html_serializer.rb', line 9

def self.format
  :html
end

Instance Method Details

#capabilitiesObject



13
14
15
# File 'lib/serialbench/serializers/html/base_html_serializer.rb', line 13

def capabilities
  super | Set.new(%i[dom parse generate])
end

#featuresObject



17
18
19
20
21
22
# File 'lib/serialbench/serializers/html/base_html_serializer.rb', line 17

def features
  {
    html5: supports?(:html5),
    xpath: supports?(:xpath)
  }
end

#from_hash(hash) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/serialbench/serializers/html/base_html_serializer.rb', line 28

def from_hash(hash)
  rows = hash.flat_map do |key, value|
    case value
    when Hash then value.map { |k, v| "<tr><td>#{k}</td><td>#{v}</td></tr>" }
    else ["<tr><td>#{key}</td><td>#{value}</td></tr>"]
    end
  end
  serialize_document(parse("<html><body><table>#{rows.join}</table></body></html>"))
end

#generate(data) ⇒ Object



24
25
26
# File 'lib/serialbench/serializers/html/base_html_serializer.rb', line 24

def generate(data)
  data.is_a?(Hash) ? from_hash(data) : serialize_document(data)
end