Module: Aranha::Parsers::Html::Node::Default::StringSupport

Defined in:
lib/aranha/parsers/html/node/default/string_support.rb

Instance Method Summary collapse

Instance Method Details

#quoted_value(node, xpath) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/aranha/parsers/html/node/default/string_support.rb', line 12

def quoted_value(node, xpath)
  s = string_value(node, xpath)
  return '' unless s

  m = /\"([^\"]+)\"/.match(s)
  return m[1] if m

  ''
end

#regxep(node, xpath, pattern) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/aranha/parsers/html/node/default/string_support.rb', line 22

def regxep(node, xpath, pattern)
  s = string_value(node, xpath)
  m = pattern.match(s)
  return m if m

  raise "Pattern \"#{pattern}\" not found in string \"#{s}\""
end

#string_recursive_optional_value(node, xpath) ⇒ Object



52
53
54
# File 'lib/aranha/parsers/html/node/default/string_support.rb', line 52

def string_recursive_optional_value(node, xpath)
  string_recursive_value(node, xpath, false)
end

#string_recursive_value(node, xpath, required = true) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/aranha/parsers/html/node/default/string_support.rb', line 38

def string_recursive_value(node, xpath, required = true)
  root = node.at_xpath(xpath)
  if root.blank?
    return nil unless required

    raise "No node found (Xpath: #{xpath})"
  end
  result = string_recursive(root)
  return result if result.present?
  return nil unless required

  raise "String blank (Xpath: #{xpath})"
end

#string_value(node, xpath) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/aranha/parsers/html/node/default/string_support.rb', line 30

def string_value(node, xpath)
  if node.at_xpath(xpath)
    sanitize_string(node.at_xpath(xpath).text)
  else
    ''
  end
end