Module: MicroMicro::Helpers

Defined in:
lib/micro_micro/helpers.rb

Class Method Summary collapse

Class Method Details

.attribute_value_from(node, attributes_map) ⇒ String?

Parameters:

  • node (Nokogiri::XML::Element)
  • attributes_map (Hash{String => Array})

Returns:

  • (String, nil)


12
13
14
15
16
# File 'lib/micro_micro/helpers.rb', line 12

def self.attribute_value_from(node, attributes_map)
  attributes_map
    .filter_map { |attribute, names| node[attribute] if names.include?(node.name) && node[attribute] }
    .first
end

.ignore_node?(node) ⇒ Boolean

Parameters:

  • node (Nokogiri::XML::Element)

Returns:

  • (Boolean)


20
21
22
# File 'lib/micro_micro/helpers.rb', line 20

def self.ignore_node?(node)
  IGNORED_NODE_NAMES.include?(node.name)
end

.ignore_nodes?(nodes) ⇒ Boolean

Parameters:

  • nodes (Nokogiri::XML::NodeSet)

Returns:

  • (Boolean)


26
27
28
# File 'lib/micro_micro/helpers.rb', line 26

def self.ignore_nodes?(nodes)
  (nodes.map(&:name) & IGNORED_NODE_NAMES).any?
end

.item_node?(node) ⇒ Boolean

Parameters:

  • node (Nokogiri::XML::Element)

Returns:

  • (Boolean)


32
33
34
# File 'lib/micro_micro/helpers.rb', line 32

def self.item_node?(node)
  root_class_names_from(node).any?
end

.item_nodes?(nodes) ⇒ Boolean

Parameters:

  • nodes (Nokogiri::XML::NodeSet)

Returns:

  • (Boolean)


38
39
40
# File 'lib/micro_micro/helpers.rb', line 38

def self.item_nodes?(nodes)
  nodes.filter_map { |node| item_node?(node) }.any?
end

.property_class_names_from(node) ⇒ Array<String>

Parameters:

  • node (Nokogiri::XML::Element)

Returns:

  • (Array<String>)


44
45
46
# File 'lib/micro_micro/helpers.rb', line 44

def self.property_class_names_from(node)
  node.classes.grep(/^(?:dt|e|p|u)(?:-[0-9a-z]+)?(?:-[a-z]+)+$/).uniq
end

.property_node?(node) ⇒ Boolean

Parameters:

  • node (Nokogiri::XML::Element)

Returns:

  • (Boolean)


50
51
52
# File 'lib/micro_micro/helpers.rb', line 50

def self.property_node?(node)
  property_class_names_from(node).any?
end

.root_class_names_from(node) ⇒ Array<String>

Parameters:

  • node (Nokogiri::XML::Element)

Returns:

  • (Array<String>)


56
57
58
# File 'lib/micro_micro/helpers.rb', line 56

def self.root_class_names_from(node)
  Set[*node.classes.grep(/^h(?:-[0-9a-z]+)?(?:-[a-z]+)+$/)].to_a.sort
end

.text_content_from(context) {|context| ... } ⇒ String

Parameters:

  • context (Nokogiri::HTML5::Document, Nokogiri::XML::NodeSet, Nokogiri::XML::Element)

Yields:

  • (context)

Returns:

  • (String)

See Also:



68
69
70
71
72
73
74
# File 'lib/micro_micro/helpers.rb', line 68

def self.text_content_from(context)
  context.css(*IGNORED_NODE_NAMES).unlink

  yield(context) if block_given?

  context.text.strip
end

.value_class_node?(node) ⇒ Boolean

Parameters:

  • node (Nokogiri::XML::Element)

Returns:

  • (Boolean)

See Also:



81
82
83
# File 'lib/micro_micro/helpers.rb', line 81

def self.value_class_node?(node)
  node.classes.include?("value")
end

.value_title_node?(node) ⇒ Boolean

Parameters:

  • node (Nokogiri::XML::Element)

Returns:

  • (Boolean)

See Also:



90
91
92
# File 'lib/micro_micro/helpers.rb', line 90

def self.value_title_node?(node)
  node.classes.include?("value-title")
end