Class: XML::Element

Inherits:
Object
  • Object
show all
Defined in:
lib/lazy/check/Nokogiri_extension.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#errorsObject (readonly)

Liste [Array] des erreurs rencontrées au cours d’un check Il faut penser initialiser (@errors = []) cette valeur au début d’un check



11
12
13
# File 'lib/lazy/check/Nokogiri_extension.rb', line 11

def errors
  @errors
end

Instance Method Details

#add_error(err) ⇒ Object



133
134
135
136
# File 'lib/lazy/check/Nokogiri_extension.rb', line 133

def add_error(err)
  @errors ||= []
  @errors << err
end

#attributes?(attrs) ⇒ Array

par rapport à attrs

Returns:

  • (Array)

    Liste des attributs qui manque à l’élément



113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/lazy/check/Nokogiri_extension.rb', line 113

def attributes?(attrs)
  miss_attrs = []
  attrs.each do |attr_name, attr_value|
    attr_name = attr_name.to_s
    if self.key?(attr_name) 
      # L'attribut existe
      if self.attr(attr_name) == attr_value
        # … et sa valeur est la bonne
        next
      else
        # … mais sa valeur est différente
        miss_attrs << "attribut #{attr_name} existe, mais avec la valeur #{self.attr(attr_name).inspect}, pas #{attr_value.inspect}."
      end
    else
      miss_attrs << "pas d'attribut #{attr_name.inspect}"
    end
  end
  return miss_attrs
end

#children?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/lazy/check/Nokogiri_extension.rb', line 22

def children?
  elements && elements.count > 0
end

#contains?(requireds) ⇒ Boolean

Test du contenu

dans required

Parameters:

  • required (String|Hash|Array)

    les choses qu’on doit trouver dans le noeud. Ça peut être un simple texte définissant soit un texte soit une balise, une table définissant une balise ou une liste de ces différentes choses.

Returns:

  • (Boolean)

    true si le node courant contient tout ce qui est défini



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/lazy/check/Nokogiri_extension.rb', line 44

def contains?(requireds)
  @errors = []
  @ok     = true
  requireds = [requireds] unless requireds.is_a?(Array)

  #
  # Recherche sur tous les éléments requis
  # 
  # On ne s'arrête pas, même si une erreur a été trouvée, pour
  # pouvoir les relever toutes.
  # 
  requireds.each do |required|
    # 
    # Qu'est-ce qu'on doit chercher ?
    # 
    case required
    when String
      if required.match?(/[^ ]/) && required.match?(/[#.]/)
        contains_as_tag?({tag: required})
      else
        contains_as_string?(required)
      end
    when Hash
      contains_as_tag?(required)
    else
      # Erreur d'implémentation, je dois m'arrêter
      raise CheckCaseError.new(Lazy::ERRORS[2000] % {c: required.class.name})
    end
  end

  return @errors.empty? # true si OK
end

#contains_as_string?(searched) ⇒ Boolean Also known as: match?

Note:

alias #match?

(mais ce retour ne sert pas à grand-chose, en fait, et même

à rien)

Surtout : ajoute une erreur à @errors si une erreur est rencontrées.

Returns:

  • (Boolean)

    true si le node contient le texte searched



88
89
90
91
92
93
94
95
# File 'lib/lazy/check/Nokogiri_extension.rb', line 88

def contains_as_string?(searched)
  if text.include?(searched)
    return true
  else
    add_error(Lazy::ERRORS[5020] % {e: searched})
    return false
  end
end

#contains_as_tag?(dtag) ⇒ Boolean

une erreur dans @errors

Returns:

  • (Boolean)

    true si le node contient le node dtag ou produit



101
102
103
104
105
106
107
108
109
# File 'lib/lazy/check/Nokogiri_extension.rb', line 101

def contains_as_tag?(dtag)
  ctag = Lazy::Checker::CheckedTag.new(dtag)
  if ctag.is_in?(self)
    return true
  else
    add_error(Lazy::ERRORS[5021] % {e: dtag.inspect})
    return false
  end
end

#empty?Boolean

Returns true si le node est vraiment vide.

Returns:

  • (Boolean)

    true si le node est vraiment vide



18
19
20
# File 'lib/lazy/check/Nokogiri_extension.rb', line 18

def empty?
  not(children?) && content.strip.empty?
end

#has_no_text?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/lazy/check/Nokogiri_extension.rb', line 30

def has_no_text?
  text.strip.empty?
end

#has_text?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/lazy/check/Nokogiri_extension.rb', line 26

def has_text?
  not(text.strip.empty?)
end

#idObject



138
139
140
# File 'lib/lazy/check/Nokogiri_extension.rb', line 138

def id
  @id ||= self['id']
end

#lengthInteger

Returns La longueur du texte.

Returns:

  • (Integer)

    La longueur du texte



143
144
145
# File 'lib/lazy/check/Nokogiri_extension.rb', line 143

def length
  @length ||= text.strip.length
end

#traverse_children(&block) ⇒ Object



13
14
15
# File 'lib/lazy/check/Nokogiri_extension.rb', line 13

def traverse_children(&block)
  children.each { |ch| ch.traverse(&block) }
end