pacer 1.0.1-java → 1.0.2-java

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.
Files changed (42) hide show
  1. data/.gitignore +0 -1
  2. data/Gemfile +29 -0
  3. data/lib/pacer/core/graph/edges_route.rb +4 -4
  4. data/lib/pacer/core/graph/element_route.rb +1 -1
  5. data/lib/pacer/core/graph/vertices_route.rb +13 -9
  6. data/lib/pacer/core/route.rb +0 -25
  7. data/lib/pacer/graph/pacer_graph.rb +13 -13
  8. data/lib/pacer/pipe/loop_pipe.rb +2 -5
  9. data/lib/pacer/pipe/path_wrapping_pipe.rb +3 -9
  10. data/lib/pacer/pipe/simple_visitor_pipe.rb +1 -2
  11. data/lib/pacer/pipe/wrapping_pipe.rb +1 -7
  12. data/lib/pacer/route.rb +18 -7
  13. data/lib/pacer/side_effect/is_unique.rb +18 -12
  14. data/lib/pacer/transform/join.rb +4 -5
  15. data/lib/pacer/utils/trie.rb +1 -4
  16. data/lib/pacer/utils/tsort.rb +2 -2
  17. data/lib/pacer/version.rb +1 -1
  18. data/lib/pacer/wrappers/edge_wrapper.rb +17 -17
  19. data/lib/pacer/wrappers/element_wrapper.rb +4 -29
  20. data/lib/pacer/wrappers/index_wrapper.rb +1 -2
  21. data/lib/pacer/wrappers/vertex_wrapper.rb +10 -7
  22. data/lib/pacer/wrappers/wrapper_selector.rb +2 -2
  23. data/lib/pacer/wrappers/wrapping_pipe_function.rb +6 -13
  24. data/lib/{pacer-1.0.1-standalone.jar → pacer-1.0.2-standalone.jar} +0 -0
  25. data/lib/pacer.rb +0 -1
  26. data/pacer.gemspec +0 -2
  27. data/pom.xml +1 -1
  28. data/spec/pacer/core/graph/vertices_route_spec.rb +12 -0
  29. data/spec/pacer/filter/property_filter_spec.rb +3 -6
  30. data/spec/pacer/side_effect/as_spec.rb +8 -5
  31. data/spec/pacer/side_effect/is_unique_spec.rb +11 -0
  32. data/spec/pacer/transform/map_spec.rb +2 -2
  33. data/spec/pacer/transform/process_spec.rb +1 -1
  34. data/spec/pacer/wrapper/edge_wrapper_spec.rb +2 -4
  35. data/spec/pacer/wrapper/element_wrapper_spec.rb +17 -6
  36. data/spec/pacer/wrapper/vertex_wrapper_spec.rb +2 -4
  37. metadata +12 -25
  38. data/Gemfile-dev +0 -33
  39. data/Gemfile-release +0 -4
  40. data/lib/pacer/extensions/block_filter_element.rb +0 -17
  41. data/lib/pacer/extensions.rb +0 -6
  42. data/tags +0 -1165
@@ -49,9 +49,7 @@ module Pacer::Wrappers
49
49
  # the extensions
50
50
  def add_extensions(exts)
51
51
  if exts.any?
52
- e = self.class.wrap(element, extensions + exts.to_a)
53
- e.graph = graph
54
- e
52
+ self.class.wrap(self, extensions + exts.to_a)
55
53
  else
56
54
  self
57
55
  end
@@ -60,9 +58,7 @@ module Pacer::Wrappers
60
58
  # Returns the element with a new simple wrapper.
61
59
  # @return [VertexWrapper]
62
60
  def no_extensions
63
- e = VertexWrapper.new element
64
- e.graph = graph
65
- e
61
+ VertexWrapper.new graph, element
66
62
  end
67
63
 
68
64
  # Checks that the given extensions can be applied to the vertex. If
@@ -176,13 +172,20 @@ module Pacer::Wrappers
176
172
  # If the other instance is an unwrapped vertex, this will always return
177
173
  # false because otherwise the == method would not be symetrical.
178
174
  #
179
- # @see #eql?
180
175
  # @param other
181
176
  def ==(other)
182
177
  other.is_a? VertexWrapper and
183
178
  element_id == other.element_id and
184
179
  graph == other.graph
185
180
  end
181
+ alias eql? ==
182
+
183
+ # Neo4j and Orient both have hash collisions between vertices and
184
+ # edges which causes problems when making a set out of a path for
185
+ # instance. Simple fix: negate edge hashes.
186
+ def hash
187
+ element.hash
188
+ end
186
189
 
187
190
  protected
188
191
 
@@ -28,10 +28,10 @@ module Pacer::Wrappers
28
28
  end
29
29
  end
30
30
 
31
- def new(element)
31
+ def new(graph, element)
32
32
  w = wrapper(element)
33
33
  if w
34
- w.new element
34
+ w.new graph, element
35
35
  else
36
36
  element
37
37
  end
@@ -3,14 +3,13 @@ module Pacer
3
3
  class WrappingPipeFunction
4
4
  include com.tinkerpop.pipes.PipeFunction
5
5
 
6
- attr_reader :block, :graph, :wrapper, :extensions, :back
6
+ attr_reader :block, :graph, :wrapper, :extensions
7
7
 
8
8
  def initialize(back, block)
9
- @back = back
10
9
  @block = block
11
10
  if back
12
11
  @graph = back.graph
13
- @extensions = back.extensions + [Pacer::Extensions::BlockFilterElement]
12
+ @extensions = back.extensions
14
13
  element_type = back.element_type
15
14
  end
16
15
  @wrapper = WrapperSelector.build element_type, extensions
@@ -21,30 +20,24 @@ module Pacer
21
20
  end
22
21
 
23
22
  def compute(element)
24
- e = wrapper.new element
25
- e.graph = graph if e.respond_to? :graph=
26
- e.back = back if e.respond_to? :back=
23
+ e = wrapper.new graph, element
27
24
  block.call e
28
25
  end
29
26
 
30
27
  alias call compute
31
28
 
32
29
  def call_with_args(element, *args)
33
- e = wrapper.new element
34
- e.graph = graph if e.respond_to? :graph=
35
- e.back = back if e.respond_to? :back=
30
+ e = wrapper.new graph, element
36
31
  block.call e, *args
37
32
  end
38
33
 
39
34
  def wrap_path(path)
40
35
  path.collect do |item|
41
36
  if item.is_a? Pacer::Vertex
42
- wrapped = Pacer::Wrappers::VertexWrapper.new item
43
- wrapped.graph = graph
37
+ wrapped = Pacer::Wrappers::VertexWrapper.new graph, item
44
38
  wrapped
45
39
  elsif item.is_a? Pacer::Edge
46
- wrapped = Pacer::Wrappers::EdgeWrapper.new item
47
- wrapped.graph = graph
40
+ wrapped = Pacer::Wrappers::EdgeWrapper.new graph, item
48
41
  wrapped
49
42
  else
50
43
  item
data/lib/pacer.rb CHANGED
@@ -46,7 +46,6 @@ module Pacer
46
46
  require 'pacer/routes'
47
47
  require 'pacer/wrappers'
48
48
  require 'pacer/route'
49
- require 'pacer/extensions'
50
49
  require 'pacer/blueprints'
51
50
  require 'pacer/support'
52
51
  require 'pacer/utils'
data/pacer.gemspec CHANGED
@@ -13,8 +13,6 @@ Gem::Specification.new do |s|
13
13
  s.summary = %Q{A very efficient and easy to use graph traversal engine.}
14
14
  s.description = %Q{Pacer defines routes through a graph and then traverses them very quickly.}
15
15
 
16
- s.add_dependency 'fastercsv', '>= 1.5.4'
17
-
18
16
  s.files = `git ls-files`.split("\n") + [Pacer::JAR_PATH]
19
17
  s.test_files = `git ls-files -- spec/*`.split("\n")
20
18
  s.require_paths = ['lib']
data/pom.xml CHANGED
@@ -7,7 +7,7 @@
7
7
  <artifactId>pacer</artifactId>
8
8
  <!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-neo4j/version.rb -->
9
9
  <properties>
10
- <gem.version>1.0.1</gem.version>
10
+ <gem.version>1.0.2</gem.version>
11
11
  <blueprints.version>2.1.0</blueprints.version>
12
12
  <pipes.version>2.1.0</pipes.version>
13
13
  <gremlin.version>2.1.0</gremlin.version>
@@ -37,6 +37,10 @@ Run.all(:read_only) do
37
37
  its(:count) { should == 9 }
38
38
  it { subject.to_a.should == graph.v.out_e(:uses, :wrote).in_v.to_a }
39
39
  end
40
+
41
+ it 'should not apply extensions to new route' do
42
+ graph.v(Tackle::SimpleMixin).out.extensions.should == []
43
+ end
40
44
  end
41
45
 
42
46
  describe '#in' do
@@ -49,6 +53,10 @@ Run.all(:read_only) do
49
53
  its(:count) { should == 9 }
50
54
  it { subject.to_a.should == graph.v.in_e(:uses, :wrote).out_v.to_a }
51
55
  end
56
+
57
+ it 'should not apply extensions to new route' do
58
+ graph.v(Tackle::SimpleMixin).in.extensions.should == []
59
+ end
52
60
  end
53
61
 
54
62
  describe '#both' do
@@ -61,6 +69,10 @@ Run.all(:read_only) do
61
69
  # These element ids only work under TinkerGraph:
62
70
  #it { subject.element_ids.to_a.should == %w[5 5 0 1 4 2 3 5] }
63
71
  end
72
+
73
+ it 'should not apply extensions to new route' do
74
+ graph.v(Tackle::SimpleMixin).both.extensions.should == []
75
+ end
64
76
  end
65
77
  end
66
78
  end
@@ -84,16 +84,14 @@ Run.tg(:read_only) do
84
84
  describe 'v(wrapper_class)' do
85
85
  subject { graph.v(wrapper_class) }
86
86
  its(:wrapper) { should == wrapper_class }
87
- its(:extensions) { should == [] }
88
- its(:all_extensions) { should == exts }
87
+ its(:extensions) { should == exts }
89
88
  its(:first) { should be_a wrapper_class }
90
89
  end
91
90
 
92
91
  describe 'v(wrapper_class, Pacer::Utils::TSort)' do
93
92
  subject { graph.v(wrapper_class, Pacer::Utils::TSort) }
94
93
  its(:wrapper) { should == wrapper_class }
95
- its(:extensions) { should == [Pacer::Utils::TSort] }
96
- its(:all_extensions) { should == (exts + [Pacer::Utils::TSort]) }
94
+ its(:extensions) { should == (exts + [Pacer::Utils::TSort]) }
97
95
  it { should_not be_empty }
98
96
  its('first.class') { should_not == wrapper_class }
99
97
  its('first.class.extensions') { should == exts + [Pacer::Utils::TSort] }
@@ -103,8 +101,7 @@ Run.tg(:read_only) do
103
101
  subject { graph.v(wrapper_class, :name => 'pacer') }
104
102
  its(:count) { should == 1 }
105
103
  its(:wrapper) { should == wrapper_class }
106
- its(:all_extensions) { should == exts }
107
- its(:extensions) { should == [] }
104
+ its(:extensions) { should == exts }
108
105
  its(:first) { should be_a wrapper_class }
109
106
  its(:filters) { should_not be_nil }
110
107
  its('filters.wrapper') { should == wrapper_class }
@@ -6,14 +6,16 @@ Run.all(:read_only) do
6
6
  describe '#as' do
7
7
  it 'should set the variable to the correct node' do
8
8
  vars = Set[]
9
- graph.v.as(:a_vertex).in_e(:wrote) { |edge| vars << edge.vars[:a_vertex] }.count
9
+ route = graph.v.as(:a_vertex)
10
+ route.in_e(:wrote) { |edge| vars << route.vars[:a_vertex] }.count
10
11
  vars.should == Set[*graph.e.e(:wrote).in_v]
11
12
  end
12
13
 
13
14
  it 'should not break path generation (simple)' do
14
15
  who = nil
15
- r = graph.v.as(:who).in_e(:wrote).out_v.v { |v|
16
- who = v.vars[:who]
16
+ r1 = graph.v.as(:who)
17
+ r = r1.in_e(:wrote).out_v.v { |v|
18
+ who = r1.vars[:who]
17
19
  }.paths
18
20
  r.each do |path|
19
21
  path.to_a[0].should == who
@@ -23,8 +25,9 @@ Run.all(:read_only) do
23
25
 
24
26
  it 'should not break path generation' do
25
27
  who_wrote_what = nil
26
- r = graph.v.as(:who).in_e(:wrote).as(:wrote).out_v.as(:what).v { |v|
27
- who_wrote_what = [v.vars[:who], v.vars[:wrote], v.vars[:what]]
28
+ r1 = graph.v.as(:who)
29
+ r = r1.in_e(:wrote).as(:wrote).out_v.as(:what).v { |v|
30
+ who_wrote_what = [r1.vars[:who], r1.vars[:wrote], r1.vars[:what]]
28
31
  }.paths
29
32
  r.each do |path|
30
33
  path.to_a.should == who_wrote_what
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe '#unique?' do
4
+ it 'should be true if unique' do
5
+ [1, 2, 3].to_route.unique?.should be_true
6
+ end
7
+
8
+ it 'should be true if unique' do
9
+ [1, 2, 3, 1, 4].to_route.unique?.should be_false
10
+ end
11
+ end
@@ -15,7 +15,7 @@ shared_examples_for '#map' do
15
15
 
16
16
  subject { extended.map { |v| v.extensions } }
17
17
 
18
- its(:first) { should == [Tackle::SimpleMixin, Pacer::Extensions::BlockFilterElement] }
18
+ its(:first) { should == [Tackle::SimpleMixin] }
19
19
  its(:element_type) { should == :object }
20
20
 
21
21
  context 'with vertex result type' do
@@ -32,7 +32,7 @@ shared_examples_for '#map' do
32
32
  it 'should use the source - not the result - extension in the block' do
33
33
  v = subject.first
34
34
  v.extensions.should == [TP::Person]
35
- exts.first.should == [Tackle::SimpleMixin, Pacer::Extensions::BlockFilterElement]
35
+ exts.first.should == [Tackle::SimpleMixin]
36
36
  end
37
37
  end
38
38
  end
@@ -20,7 +20,7 @@ shared_examples_for '#process' do
20
20
 
21
21
  it 'should have the right extensions in the block' do
22
22
  subject.first
23
- exts.first.should == [Tackle::SimpleMixin, Pacer::Extensions::BlockFilterElement]
23
+ exts.first.should == [Tackle::SimpleMixin]
24
24
  end
25
25
  end
26
26
  end
@@ -16,9 +16,7 @@ Run.all :read_only do
16
16
 
17
17
  describe 'instance' do
18
18
  subject do
19
- e = e_wrapper_class.new pangloss_wrote_pacer.element
20
- e.graph = graph
21
- e
19
+ e_wrapper_class.new graph, pangloss_wrote_pacer.element
22
20
  end
23
21
  it { should_not be_nil }
24
22
  its(:element) { should_not be_nil }
@@ -28,7 +26,7 @@ Run.all :read_only do
28
26
  its(:extensions) { should == e_exts }
29
27
 
30
28
  describe 'with more extensions added' do
31
- subject { e_wrapper_class.new(pacer.element).add_extensions([Pacer::Utils::TSort]) }
29
+ subject { e_wrapper_class.new(graph, pacer.element).add_extensions([Pacer::Utils::TSort]) }
32
30
  its(:class) { should_not == e_wrapper_class }
33
31
  its(:extensions) { should == e_exts + [Pacer::Utils::TSort] }
34
32
  end
@@ -42,6 +42,19 @@ shared_examples_for Pacer::Wrappers::ElementWrapper do
42
42
  end
43
43
  end
44
44
 
45
+ describe '#hash' do
46
+ it 'should not collide between vertices and edges' do
47
+ # different graphs need different numbers
48
+ 600.times { graph.create_edge nil, graph.create_vertex, graph.create_vertex, 'abc' }
49
+ v_hashes = graph.v.map(&:hash).to_a
50
+ e_hashes = graph.e.map(&:hash).to_a
51
+ count = v_hashes.count + e_hashes.count
52
+ (v_hashes + e_hashes).uniq.count.should == count
53
+ set = graph.v.to_set + graph.e.to_set
54
+ set.count.should == count
55
+ end
56
+ end
57
+
45
58
  describe '#eql?' do
46
59
  subject { Hash.new(0) }
47
60
  before do
@@ -398,9 +411,8 @@ Run.tg :read_only do
398
411
  end
399
412
 
400
413
  it 'should have ancestors in the correct order' do
401
- subject.ancestors[0...7].should == [
402
- Pacer::Wrap::VertexWrapperTP_PersonTackle_SimpleMixinTP_CoderPacer_Extensions_BlockFilterElement,
403
- Pacer::Extensions::BlockFilterElement::Route,
414
+ subject.ancestors[0...6].should == [
415
+ Pacer::Wrap::VertexWrapperTP_PersonTackle_SimpleMixinTP_Coder,
404
416
  TP::Coder::Route,
405
417
  Tackle::SimpleMixin::Vertex,
406
418
  Tackle::SimpleMixin::Route,
@@ -438,9 +450,8 @@ Run.tg :read_only do
438
450
 
439
451
  it { should_not be_nil }
440
452
  it 'should have ancestors in the correct order' do
441
- subject.ancestors[0...7].should == [
442
- Pacer::Wrap::VertexWrapperTackle_SimpleMixinTP_PersonTP_CoderPacer_Extensions_BlockFilterElement,
443
- Pacer::Extensions::BlockFilterElement::Route,
453
+ subject.ancestors[0...6].should == [
454
+ Pacer::Wrap::VertexWrapperTackle_SimpleMixinTP_PersonTP_Coder,
444
455
  TP::Coder::Route,
445
456
  TP::Person::Route,
446
457
  Tackle::SimpleMixin::Vertex,
@@ -16,9 +16,7 @@ Run.all :read_only do
16
16
 
17
17
  describe 'instance' do
18
18
  subject do
19
- v = v_wrapper_class.new pacer.element
20
- v.graph = graph
21
- v
19
+ v_wrapper_class.new graph, pacer.element
22
20
  end
23
21
  it { should_not be_nil }
24
22
  its(:element) { should_not be_nil }
@@ -28,7 +26,7 @@ Run.all :read_only do
28
26
  its(:extensions) { should == v_exts }
29
27
 
30
28
  describe 'with more extensions added' do
31
- subject { v_wrapper_class.new(pacer.element).add_extensions([Pacer::Utils::TSort]) }
29
+ subject { v_wrapper_class.new(graph, pacer.element).add_extensions([Pacer::Utils::TSort]) }
32
30
  its(:class) { should_not == v_wrapper_class }
33
31
  its(:extensions) { should == v_exts + [Pacer::Utils::TSort] }
34
32
  end
metadata CHANGED
@@ -1,32 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pacer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
5
4
  prerelease:
5
+ version: 1.0.2
6
6
  platform: java
7
7
  authors:
8
8
  - Darrick Wiebe
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-04 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: fastercsv
16
- version_requirements: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ! '>='
19
- - !ruby/object:Gem::Version
20
- version: 1.5.4
21
- none: false
22
- requirement: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ! '>='
25
- - !ruby/object:Gem::Version
26
- version: 1.5.4
27
- none: false
28
- prerelease: false
29
- type: :runtime
12
+ date: 2012-09-08 00:00:00.000000000 Z
13
+ dependencies: []
30
14
  description: Pacer defines routes through a graph and then traverses them very quickly.
31
15
  email: darrick@innatesoftware.com
32
16
  executables: []
@@ -39,8 +23,6 @@ files:
39
23
  - .rspec
40
24
  - CONTRIBUTORS
41
25
  - Gemfile
42
- - Gemfile-dev
43
- - Gemfile-release
44
26
  - LICENSE.txt
45
27
  - README.md
46
28
  - Rakefile
@@ -68,8 +50,6 @@ files:
68
50
  - lib/pacer/core/route.rb
69
51
  - lib/pacer/core/side_effect.rb
70
52
  - lib/pacer/exceptions.rb
71
- - lib/pacer/extensions.rb
72
- - lib/pacer/extensions/block_filter_element.rb
73
53
  - lib/pacer/filter.rb
74
54
  - lib/pacer/filter/block_filter.rb
75
55
  - lib/pacer/filter/collection_filter.rb
@@ -203,6 +183,7 @@ files:
203
183
  - spec/pacer/route/mixin/bulk_operations_spec.rb
204
184
  - spec/pacer/route/mixin/route_operations_spec.rb
205
185
  - spec/pacer/side_effect/as_spec.rb
186
+ - spec/pacer/side_effect/is_unique_spec.rb
206
187
  - spec/pacer/support/array_list_spec.rb
207
188
  - spec/pacer/support/enumerable_spec.rb
208
189
  - spec/pacer/transform/join_spec.rb
@@ -222,8 +203,7 @@ files:
222
203
  - spec/support/use_transactions.rb
223
204
  - spec/tackle/simple_mixin.rb
224
205
  - spec/tackle/tinkerpop_graph_mixins.rb
225
- - tags
226
- - lib/pacer-1.0.1-standalone.jar
206
+ - lib/pacer-1.0.2-standalone.jar
227
207
  homepage: http://github.com/pangloss/pacer
228
208
  licenses:
229
209
  - MIT
@@ -235,6 +215,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
235
215
  requirements:
236
216
  - - ! '>='
237
217
  - !ruby/object:Gem::Version
218
+ segments:
219
+ - 0
220
+ hash: 2
238
221
  version: !binary |-
239
222
  MA==
240
223
  none: false
@@ -242,6 +225,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
225
  requirements:
243
226
  - - ! '>='
244
227
  - !ruby/object:Gem::Version
228
+ segments:
229
+ - 0
230
+ hash: 2
245
231
  version: !binary |-
246
232
  MA==
247
233
  none: false
@@ -281,6 +267,7 @@ test_files:
281
267
  - spec/pacer/route/mixin/bulk_operations_spec.rb
282
268
  - spec/pacer/route/mixin/route_operations_spec.rb
283
269
  - spec/pacer/side_effect/as_spec.rb
270
+ - spec/pacer/side_effect/is_unique_spec.rb
284
271
  - spec/pacer/support/array_list_spec.rb
285
272
  - spec/pacer/support/enumerable_spec.rb
286
273
  - spec/pacer/transform/join_spec.rb
data/Gemfile-dev DELETED
@@ -1,33 +0,0 @@
1
- # A sample Gemfile
2
- source "http://rubygems.org"
3
-
4
- gemspec
5
-
6
- group :development do
7
- gem 'rspec', '~> 2.10.0'
8
- gem 'rr', '~> 1.0'
9
- gem 'simplecov'
10
- gem 'yard'
11
- gem 'rake'
12
-
13
- # pacer-* gems are required for testing pacer.
14
- # If you have the gem repos cloned locally, we'll use them.
15
- #
16
- libs = [
17
- ['pacer-neo4j', '2.0.0.pre'],
18
- ['pacer-orient', '2.0.0.pre'],
19
- ['pacer-dex', '2.0.0.pre']
20
- ]
21
- libs.each do |lib, version|
22
- if File.directory? "../#{lib}"
23
- gem lib, :path => "../#{lib}"
24
- end
25
- end
26
-
27
-
28
- gem 'autotest-standalone'
29
- gem 'autotest-growl'
30
- gem 'pry'
31
- gem 'awesome_print', '0.4.0'
32
- end
33
-
data/Gemfile-release DELETED
@@ -1,4 +0,0 @@
1
- # A sample Gemfile
2
- source "http://rubygems.org"
3
-
4
- gemspec
@@ -1,17 +0,0 @@
1
- module Pacer
2
- module Extensions
3
- module BlockFilterElement
4
- module Route
5
- def back=(back)
6
- @back = back
7
- end
8
-
9
- # The vars hash contains variables that were set earlier in the processing
10
- # of the route. Vars may also be set within the block.
11
- def vars
12
- @back.vars
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,6 +0,0 @@
1
- module Pacer
2
- module Extensions
3
- end
4
- end
5
-
6
- require 'pacer/extensions/block_filter_element'