habaki 0.5.7 → 0.5.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0fd0e2139182ac5010a3b35babbcae6c6d72f44ed202073409f18fb176697f6b
4
- data.tar.gz: 8f4c8f57cc5e63a989485a82523c424902179b4717d3df89fd86934afda4ae6f
3
+ metadata.gz: 4369c0894ef6356caa3fbd8121b49f1bb767e7e7cad4b4401f578d7ba2ca8cba
4
+ data.tar.gz: 854420541b988775b68aafed3834359bd9c71881d5b47fc18e4e72683e7470e9
5
5
  SHA512:
6
- metadata.gz: 5432b604be85936b38b166b240b29c1779ffd6ae4ebd3a29376df4b543bca6b66bc9dfa98b0afeb1ceabeed64c612538bf4db23ceb4bf6dbf9046727d3a5574b
7
- data.tar.gz: 7e6487154a87046b8ce1c9cd2e38f7da4dcc909faf8e1930e0264bb1c7606f9de10baefde686ca347061ed2798ad5177bb741cb262d7098b2d56071a913ea62c
6
+ metadata.gz: 1a3f29bd8d7253b88eaf8e1afc48887c69945a73911180e12537590d6430fbb866d87b2e0d081b9700f32e290cd58841d489adf5369da711c2cb2e2eb0810261
7
+ data.tar.gz: 53f3ac7bdce3aa488db1d21f17c04f78881bae5fb45d5342bae44020044ec7d8459278d7b10dd8bdd0b592761b07f951dbcb6fd4f93eb3c229113b71846cbedf
data/lib/habaki/rules.rb CHANGED
@@ -34,20 +34,25 @@ module Habaki
34
34
  end
35
35
 
36
36
  def lookup_rules(args, tag_name, class_name, id_name, &block)
37
- class_or_id = nil
38
- class_or_id = ".#{class_name}" if class_name
39
- class_or_id = "##{id_name}" if id_name
40
-
41
37
  @hash_tree[args].dig(tag_name, nil)&.each do |rule|
42
38
  block.call rule
43
39
  end
44
40
 
45
- @hash_tree[args].dig("*", class_or_id)&.each do |rule|
46
- block.call rule
47
- end
41
+ classes_names = [nil]
42
+ classes_names = class_name.split(" ") if class_name
48
43
 
49
- @hash_tree[args].dig(tag_name, class_or_id)&.each do |rule|
50
- block.call rule
44
+ classes_names.each do |p_class_name|
45
+ class_or_id = nil
46
+ class_or_id = ".#{p_class_name}" if p_class_name
47
+ class_or_id = "##{id_name}" if id_name
48
+
49
+ @hash_tree[args].dig("*", class_or_id)&.each do |rule|
50
+ block.call rule
51
+ end
52
+
53
+ @hash_tree[args].dig(tag_name, class_or_id)&.each do |rule|
54
+ block.call rule
55
+ end
51
56
  end
52
57
  end
53
58
 
@@ -47,7 +47,7 @@ module Habaki
47
47
  end
48
48
  return false unless sub_match
49
49
  else
50
- # STDERR.puts "unknown relation #{current_sub_selector.relation}"
50
+ # STDERR.puts "Habaki: unknown relation #{current_sub_selector.relation}"
51
51
  return false
52
52
  end
53
53
  else
@@ -12,12 +12,12 @@ module Habaki
12
12
  class SubSelector < Node
13
13
  # @return [Symbol]
14
14
  attr_accessor :match
15
- # @return [String]
15
+ # @return [QualifiedName]
16
16
  attr_accessor :tag
17
17
  # @return [Symbol]
18
18
  attr_accessor :pseudo
19
19
 
20
- # @return [String]
20
+ # @return [QualifiedName]
21
21
  attr_accessor :attribute
22
22
  # @return [String]
23
23
  attr_accessor :value
@@ -44,7 +44,7 @@ module Habaki
44
44
  when :tag
45
45
  tag_match?(element.tag_name, specificity)
46
46
  when :class
47
- class_match?(element.class_name, specificity)
47
+ element.class_names.any?{|p_class_name| class_match?(p_class_name, specificity)}
48
48
  when :id
49
49
  id_match?(element.id_name, specificity)
50
50
  when :pseudo_class
@@ -151,7 +151,8 @@ module Habaki
151
151
  when :not_parsed, :unknown
152
152
  true
153
153
  else
154
- # STDERR.puts "unsupported pseudo #{sub_sel.pseudo}"
154
+ # TODO
155
+ # STDERR.puts "Habaki: unsupported pseudo #{@pseudo}"
155
156
  false
156
157
  end, specificity, 10)
157
158
  end
@@ -12,6 +12,12 @@ module Habaki
12
12
  def class_name
13
13
  end
14
14
 
15
+ # element class names array
16
+ # @return [Array<String>]
17
+ def class_names
18
+ []
19
+ end
20
+
15
21
  # element id name
16
22
  # @return [String]
17
23
  def id_name
@@ -15,6 +15,10 @@ module Habaki
15
15
  @element["class"]
16
16
  end
17
17
 
18
+ def class_names
19
+ @element.classes
20
+ end
21
+
18
22
  def id_name
19
23
  @element["id"]
20
24
  end
@@ -37,13 +41,13 @@ module Habaki
37
41
 
38
42
  def children
39
43
  @element.children.map do |child|
40
- child.is_a?(Nokogiri::XML::Element) ? Visitor::NokogiriElement.new(child) : nil
44
+ child.element? ? Visitor::NokogiriElement.new(child) : nil
41
45
  end.compact
42
46
  end
43
47
 
44
48
  def traverse &block
45
49
  @element.traverse do |el|
46
- next unless el.is_a?(Nokogiri::XML::Element)
50
+ next unless el.element?
47
51
  block.call Visitor::NokogiriElement.new(el)
48
52
  end
49
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: habaki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.7
4
+ version: 0.5.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julien Boulnois
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-07 00:00:00.000000000 Z
11
+ date: 2022-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri