elementor 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,40 @@
1
1
  module Elementor
2
+
3
+ module NodeSet
4
+ def self.included(base)
5
+ base.class_eval do
6
+ attr_accessor :node_set
7
+ end
8
+ end
9
+
10
+ def initialize(document, array)
11
+ @node_set = Nokogiri::XML::NodeSet.new(document, array)
12
+ end
13
+
14
+ def length
15
+ node_set.length
16
+ end
17
+ alias_method :size, :length
18
+
19
+ def select(&block)
20
+ @node_set.select &block
21
+ end
22
+
23
+ def replace(array)
24
+ @node_set = Nokogiri::XML::NodeSet.new(@node_set.document, array)
25
+ end
26
+
27
+ def search(selector)
28
+ @node_set.search(selector)
29
+ end
30
+ end
31
+
2
32
  # ElementSet objects wrap a Nokogiri #search result and
3
33
  # add additional functionality such as chained filtering.
4
- class ElementSet < Array
34
+ class ElementSet
35
+
36
+ include NodeSet
37
+
5
38
  attr_accessor :result, :selector
6
39
 
7
40
  # A simple filter for selecting only elements with content
@@ -34,7 +67,7 @@ module Elementor
34
67
  alias_method :attrs, :with_attrs
35
68
 
36
69
  def method_missing(sym, *args, &block)
37
- result.respond_to?(sym) ? result.send(sym, doc, *args) : super
70
+ result.respond_to?(sym) ? result.send(sym, self, *args) : super
38
71
  end
39
72
 
40
73
  def respond_to?(sym)
@@ -51,4 +84,4 @@ module Elementor
51
84
  replace(select(&block)) ; return self
52
85
  end
53
86
  end
54
- end
87
+ end
@@ -81,7 +81,7 @@ module Elementor
81
81
  end
82
82
 
83
83
  def make_element_set(name, selector, *filters, &block)
84
- set = ElementSet.new scope(filters).search(selector)
84
+ set = ElementSet.new(doc, scope(filters).search(selector))
85
85
  set.result = self
86
86
  set.selector = selector
87
87
  set = filters.empty? ? set : filters.inject(set) { |result, fn| fn[result] }
@@ -101,4 +101,4 @@ module Elementor
101
101
  @content ||= context.send(opts[:from] || :body)
102
102
  end
103
103
  end
104
- end
104
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elementor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Nakajima