pacer 2.0.10.pre-java → 2.0.12-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 (71) hide show
  1. checksums.yaml +5 -13
  2. data/.autotest +0 -4
  3. data/.gitignore +1 -0
  4. data/.travis.yml +2 -2
  5. data/Rakefile +25 -0
  6. data/blog/detach_benchmarks.txt +56 -0
  7. data/ext/.classpath +26 -0
  8. data/ext/.gitignore +44 -0
  9. data/ext/.project +23 -0
  10. data/ext/pom.xml +76 -0
  11. data/ext/src/main/java/com/xnlogic/pacer/pipes/BlackboxPipeline.java +56 -0
  12. data/ext/src/main/java/com/xnlogic/pacer/pipes/CollectionFilterPipe.java +18 -0
  13. data/ext/src/main/java/com/xnlogic/pacer/pipes/EdgesPipe.java +26 -0
  14. data/ext/src/main/java/com/xnlogic/pacer/pipes/ExpandablePipe.java +93 -0
  15. data/ext/src/main/java/com/xnlogic/pacer/pipes/IdCollectionFilterPipe.java +50 -0
  16. data/ext/src/main/java/com/xnlogic/pacer/pipes/IsEmptyPipe.java +35 -0
  17. data/ext/src/main/java/com/xnlogic/pacer/pipes/IsUniquePipe.java +58 -0
  18. data/ext/src/main/java/com/xnlogic/pacer/pipes/LabelCollectionFilterPipe.java +32 -0
  19. data/ext/src/main/java/com/xnlogic/pacer/pipes/LabelPrefixPipe.java +23 -0
  20. data/ext/src/main/java/com/xnlogic/pacer/pipes/NeverPipe.java +10 -0
  21. data/ext/src/main/java/com/xnlogic/pacer/pipes/VerticesPipe.java +26 -0
  22. data/ext/src/test/java/com/xnlogic/pacer/pipes/BlackboxPipelineTest.java +33 -0
  23. data/ext/src/test/java/com/xnlogic/pacer/pipes/CollectionFilterPipeTest.java +50 -0
  24. data/ext/src/test/java/com/xnlogic/pacer/pipes/EdgesPipeTest.java +103 -0
  25. data/ext/src/test/java/com/xnlogic/pacer/pipes/ExpandablePipeTest.java +66 -0
  26. data/ext/src/test/java/com/xnlogic/pacer/pipes/IdCollectionFilterPipeTest.java +85 -0
  27. data/ext/src/test/java/com/xnlogic/pacer/pipes/IsUniquePipeTest.java +62 -0
  28. data/ext/src/test/java/com/xnlogic/pacer/pipes/LabelCollectionFilterPipeTest.java +97 -0
  29. data/ext/src/test/java/com/xnlogic/pacer/pipes/LabelPrefixPipeTest.java +69 -0
  30. data/ext/src/test/java/com/xnlogic/pacer/pipes/NeverPipeTest.java +17 -0
  31. data/ext/src/test/java/com/xnlogic/pacer/pipes/VerticesPipeTest.java +97 -0
  32. data/lib/pacer/core/graph/element_route.rb +2 -2
  33. data/lib/pacer/core/graph/path_route.rb +2 -2
  34. data/lib/pacer/core/route.rb +77 -1
  35. data/lib/pacer/filter/property_filter/edge_filters.rb +5 -1
  36. data/lib/pacer/filter/property_filter/filters.rb +23 -7
  37. data/lib/pacer/pipe/path_wrapping_pipe.rb +14 -3
  38. data/lib/pacer/pipe/wrapping_pipe.rb +15 -4
  39. data/lib/pacer/pipes.rb +15 -13
  40. data/lib/pacer/route.rb +1 -0
  41. data/lib/pacer/side_effect/as_var.rb +1 -1
  42. data/lib/pacer/side_effect/is_unique.rb +2 -2
  43. data/lib/pacer/transform/branch.rb +1 -1
  44. data/lib/pacer/transform/lookup_ids.rb +1 -1
  45. data/lib/pacer/transform/path_tree.rb +1 -1
  46. data/lib/pacer/transform/reduce.rb +1 -1
  47. data/lib/pacer/transform/sort_section.rb +17 -9
  48. data/lib/pacer/transform/stream_sort.rb +1 -0
  49. data/lib/pacer/transform/stream_uniq.rb +1 -0
  50. data/lib/pacer/transform/wrapped_path.rb +1 -1
  51. data/lib/pacer/version.rb +1 -1
  52. data/lib/pacer/visitors/section.rb +10 -3
  53. data/lib/pacer/visitors/visits_section.rb +4 -4
  54. data/lib/pacer-ext.jar +0 -0
  55. data/lib/pacer.rb +1 -0
  56. data/pacer.gemspec +2 -1
  57. data/spec/pacer/filter/property_filter_spec.rb +17 -0
  58. data/spec/pacer/transform/path_spec.rb +10 -0
  59. data/spec/pacer/transform/sort_section_spec.rb +8 -1
  60. metadata +59 -30
  61. data/lib/pacer/pipe/blackbox_pipeline.rb +0 -55
  62. data/lib/pacer/pipe/collection_filter_pipe.rb +0 -12
  63. data/lib/pacer/pipe/edges_pipe.rb +0 -22
  64. data/lib/pacer/pipe/expandable_pipe.rb +0 -51
  65. data/lib/pacer/pipe/id_collection_filter_pipe.rb +0 -37
  66. data/lib/pacer/pipe/is_empty_pipe.rb +0 -23
  67. data/lib/pacer/pipe/is_unique_pipe.rb +0 -51
  68. data/lib/pacer/pipe/label_collection_filter_pipe.rb +0 -15
  69. data/lib/pacer/pipe/label_prefix_pipe.rb +0 -15
  70. data/lib/pacer/pipe/never_pipe.rb +0 -9
  71. data/lib/pacer/pipe/vertices_pipe.rb +0 -22
@@ -79,11 +79,20 @@ Run.tg(:read_only) do
79
79
  subject { graph.v(Tackle::SimpleMixin, :name => 'pangloss') }
80
80
  its(:count) { should == 1 }
81
81
  its(:extensions) { should == [Tackle::SimpleMixin] }
82
+ it 'should produce an equivalent predecate' do
83
+ p = subject.filters.to_predicate
84
+ graph.v.to_a.select(&p).should == subject.to_a
85
+ end
82
86
  end
83
87
 
84
88
  context 'reversed params' do
85
89
  subject { graph.v.v(TP::Pangloss, Tackle::SimpleMixin) }
86
90
  its(:count) { should == 1 }
91
+ it 'should produce an equivalent predecate' do
92
+ pending 'does not work for self.route style.'
93
+ #p = subject.filters.to_predicate
94
+ #graph.v.to_a.select(&p).should == subject.to_a
95
+ end
87
96
  end
88
97
 
89
98
  context 'reversed params' do
@@ -109,6 +118,10 @@ Run.tg(:read_only) do
109
118
  it { should_not be_empty }
110
119
  its('first.class') { should_not == wrapper_class }
111
120
  its('first.class.extensions') { should == exts + [Pacer::Utils::TSort] }
121
+ it 'should produce an equivalent predecate' do
122
+ p = subject.filters.to_predicate
123
+ graph.v.to_a.select(&p).should == subject.to_a
124
+ end
112
125
  end
113
126
 
114
127
  describe 'v(wrapper_class, :name => "pacer")' do
@@ -119,6 +132,10 @@ Run.tg(:read_only) do
119
132
  its(:first) { should be_a wrapper_class }
120
133
  its(:filters) { should_not be_nil }
121
134
  its('filters.wrapper') { should == wrapper_class }
135
+ it 'should produce an equivalent predecate' do
136
+ p = subject.filters.to_predicate
137
+ graph.v.to_a.select(&p).should == subject.to_a
138
+ end
122
139
  end
123
140
  end
124
141
  end
@@ -15,6 +15,16 @@ describe Pacer::Transform::Path do
15
15
  [@g.vertex(5), @g.edge(12), @g.vertex(3)]]
16
16
  end
17
17
 
18
+ it 'should be the same as above with a detached route' do
19
+ p = @g.v.detach { |v| v.filter(:type => 'person').out_e.in_v(:type => 'project').paths }
20
+ p = p.build(@g, true)
21
+ Set[*@g.v.to_a.flat_map { |x| p.read x }.map(&:to_a)].should ==
22
+ Set[[@g.vertex(0), @g.edge(0), @g.vertex(1)],
23
+ [@g.vertex(5), @g.edge(1), @g.vertex(4)],
24
+ [@g.vertex(5), @g.edge(13), @g.vertex(2)],
25
+ [@g.vertex(5), @g.edge(12), @g.vertex(3)]]
26
+ end
27
+
18
28
  it 'should include all elements traversed' do
19
29
  @g.v.out_e.in_v.paths.each do |path|
20
30
  path[0].should be_a(Pacer::Wrappers::VertexWrapper)
@@ -10,6 +10,13 @@ Run.tg :read_only do
10
10
  graph.v.section(:x).out.out.sort_section(:x) { |a, b| a[:name] <=> b[:name] }
11
11
  end
12
12
 
13
+ it 'should be sorted' do
14
+ sorted = graph.v.flat_map do |v|
15
+ v.out.out[:name].to_a.sort
16
+ end.to_a
17
+ by_custom[:name].to_a.should == sorted
18
+ end
19
+
13
20
  it 'should have the same elements' do
14
21
  by_custom.group_count.should == unsorted.group_count
15
22
  end
@@ -22,7 +29,7 @@ Run.tg :read_only do
22
29
 
23
30
  it 'should put groups into the correct order' do
24
31
  # depends on the order of graph.v(type: 'project') ...
25
- route = graph.v(type: 'project').section(:proj).out[:name].custom_sort_section(:proj) { |a, b| a <=> b }
32
+ route = graph.v(type: 'project').section(:proj).out[:name].sort_section(:proj) { |a, b| a <=> b }
26
33
  route.to_a.should == %w[
27
34
  blueprints
28
35
  blueprints
metadata CHANGED
@@ -1,45 +1,58 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pacer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.10.pre
4
+ version: 2.0.12
5
5
  platform: java
6
6
  authors:
7
7
  - Darrick Wiebe
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-31 00:00:00.000000000 Z
11
+ date: 2015-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lock_jar
15
- requirement: !ruby/object:Gem::Requirement
15
+ version_requirements: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.10.2
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
20
+ requirement: !ruby/object:Gem::Requirement
23
21
  requirements:
24
22
  - - ~>
25
23
  - !ruby/object:Gem::Version
26
24
  version: 0.10.2
25
+ prerelease: false
26
+ type: :runtime
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: xn_gem_release_tasks
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
29
34
  requirement: !ruby/object:Gem::Requirement
30
35
  requirements:
31
- - - ! '>='
36
+ - - '>='
32
37
  - !ruby/object:Gem::Version
33
38
  version: '0'
34
- type: :development
35
39
  prerelease: false
40
+ type: :development
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake-compiler
36
43
  version_requirements: !ruby/object:Gem::Requirement
37
44
  requirements:
38
- - - ! '>='
45
+ - - ~>
39
46
  - !ruby/object:Gem::Version
40
- version: '0'
41
- description: Pacer defines composeable routes through a graph and then traverses them
42
- very quickly.
47
+ version: 0.9.2
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ~>
51
+ - !ruby/object:Gem::Version
52
+ version: 0.9.2
53
+ prerelease: false
54
+ type: :development
55
+ description: Pacer defines composeable routes through a graph and then traverses them very quickly.
43
56
  email: dw@xnlogic.com
44
57
  executables: []
45
58
  extensions: []
@@ -66,7 +79,34 @@ files:
66
79
  - bin/yard
67
80
  - bin/yardoc
68
81
  - blog/2012-09-18-pacer-1.0.md
82
+ - blog/detach_benchmarks.txt
83
+ - ext/.classpath
84
+ - ext/.gitignore
85
+ - ext/.project
86
+ - ext/pom.xml
87
+ - ext/src/main/java/com/xnlogic/pacer/pipes/BlackboxPipeline.java
88
+ - ext/src/main/java/com/xnlogic/pacer/pipes/CollectionFilterPipe.java
89
+ - ext/src/main/java/com/xnlogic/pacer/pipes/EdgesPipe.java
90
+ - ext/src/main/java/com/xnlogic/pacer/pipes/ExpandablePipe.java
91
+ - ext/src/main/java/com/xnlogic/pacer/pipes/IdCollectionFilterPipe.java
92
+ - ext/src/main/java/com/xnlogic/pacer/pipes/IsEmptyPipe.java
93
+ - ext/src/main/java/com/xnlogic/pacer/pipes/IsUniquePipe.java
94
+ - ext/src/main/java/com/xnlogic/pacer/pipes/LabelCollectionFilterPipe.java
95
+ - ext/src/main/java/com/xnlogic/pacer/pipes/LabelPrefixPipe.java
96
+ - ext/src/main/java/com/xnlogic/pacer/pipes/NeverPipe.java
97
+ - ext/src/main/java/com/xnlogic/pacer/pipes/VerticesPipe.java
98
+ - ext/src/test/java/com/xnlogic/pacer/pipes/BlackboxPipelineTest.java
99
+ - ext/src/test/java/com/xnlogic/pacer/pipes/CollectionFilterPipeTest.java
100
+ - ext/src/test/java/com/xnlogic/pacer/pipes/EdgesPipeTest.java
101
+ - ext/src/test/java/com/xnlogic/pacer/pipes/ExpandablePipeTest.java
102
+ - ext/src/test/java/com/xnlogic/pacer/pipes/IdCollectionFilterPipeTest.java
103
+ - ext/src/test/java/com/xnlogic/pacer/pipes/IsUniquePipeTest.java
104
+ - ext/src/test/java/com/xnlogic/pacer/pipes/LabelCollectionFilterPipeTest.java
105
+ - ext/src/test/java/com/xnlogic/pacer/pipes/LabelPrefixPipeTest.java
106
+ - ext/src/test/java/com/xnlogic/pacer/pipes/NeverPipeTest.java
107
+ - ext/src/test/java/com/xnlogic/pacer/pipes/VerticesPipeTest.java
69
108
  - ideas.rb
109
+ - lib/pacer-ext.jar
70
110
  - lib/pacer.rb
71
111
  - lib/pacer/blueprints/group_vertex.rb
72
112
  - lib/pacer/blueprints/payload_elements.rb
@@ -111,22 +151,12 @@ files:
111
151
  - lib/pacer/graph/simple_encoder.rb
112
152
  - lib/pacer/graph/yaml_encoder.rb
113
153
  - lib/pacer/loader.rb
114
- - lib/pacer/pipe/blackbox_pipeline.rb
115
154
  - lib/pacer/pipe/block_filter_pipe.rb
116
- - lib/pacer/pipe/collection_filter_pipe.rb
117
155
  - lib/pacer/pipe/cross_product_transform_pipe.rb
118
- - lib/pacer/pipe/edges_pipe.rb
119
156
  - lib/pacer/pipe/enumerable_pipe.rb
120
- - lib/pacer/pipe/expandable_pipe.rb
121
- - lib/pacer/pipe/id_collection_filter_pipe.rb
122
- - lib/pacer/pipe/is_empty_pipe.rb
123
- - lib/pacer/pipe/is_unique_pipe.rb
124
- - lib/pacer/pipe/label_collection_filter_pipe.rb
125
- - lib/pacer/pipe/label_prefix_pipe.rb
126
157
  - lib/pacer/pipe/loop_pipe.rb
127
158
  - lib/pacer/pipe/multi_pipe.rb
128
159
  - lib/pacer/pipe/naked_pipe.rb
129
- - lib/pacer/pipe/never_pipe.rb
130
160
  - lib/pacer/pipe/path_wrapping_pipe.rb
131
161
  - lib/pacer/pipe/process_pipe.rb
132
162
  - lib/pacer/pipe/property_comparison_pipe.rb
@@ -137,7 +167,6 @@ files:
137
167
  - lib/pacer/pipe/type_filter_pipe.rb
138
168
  - lib/pacer/pipe/unary_transform_pipe.rb
139
169
  - lib/pacer/pipe/unwrapping_pipe.rb
140
- - lib/pacer/pipe/vertices_pipe.rb
141
170
  - lib/pacer/pipe/visitor_pipe.rb
142
171
  - lib/pacer/pipe/wrapping_pipe.rb
143
172
  - lib/pacer/pipes.rb
@@ -256,24 +285,24 @@ homepage: http://github.com/pangloss/pacer
256
285
  licenses:
257
286
  - MIT
258
287
  metadata: {}
259
- post_install_message:
288
+ post_install_message:
260
289
  rdoc_options: []
261
290
  require_paths:
262
291
  - lib
263
292
  required_ruby_version: !ruby/object:Gem::Requirement
264
293
  requirements:
265
- - - ! '>='
294
+ - - '>='
266
295
  - !ruby/object:Gem::Version
267
296
  version: '0'
268
297
  required_rubygems_version: !ruby/object:Gem::Requirement
269
298
  requirements:
270
- - - ! '>'
299
+ - - '>='
271
300
  - !ruby/object:Gem::Version
272
- version: 1.3.1
301
+ version: '0'
273
302
  requirements: []
274
- rubyforge_project:
303
+ rubyforge_project:
275
304
  rubygems_version: 2.4.5
276
- signing_key:
305
+ signing_key:
277
306
  specification_version: 4
278
307
  summary: A very efficient and easy to use graph traversal engine.
279
308
  test_files:
@@ -1,55 +0,0 @@
1
- module Pacer::Pipes
2
- # Same concept as the regular pipeline, but this one
3
- # does not touch the intermediate pipes. They must be
4
- # wired together before being passed in to this object.
5
- # This allows me to build a pipeline in Pacer and then
6
- # pass it on to a pipe like FutureFilterPipe that only
7
- # knows how to act on a single pipe.
8
- class BlackboxPipeline
9
- include com.tinkerpop.pipes.Pipe
10
-
11
- attr_reader :pathEnabled
12
-
13
- def initialize(start_pipe, end_pipe)
14
- @start_pipe = start_pipe
15
- @end_pipe = end_pipe
16
- end
17
-
18
- def setStarts(pipe)
19
- if pipe.respond_to? :iterator
20
- @start_pipe.setStarts pipe.iterator
21
- else
22
- @start_pipe.setStarts pipe
23
- end
24
- end
25
-
26
- def next
27
- @end_pipe.next
28
- end
29
-
30
- def hasNext
31
- @end_pipe.hasNext
32
- end
33
-
34
- def reset
35
- @end_pipe.reset
36
- end
37
-
38
- def enablePath(b)
39
- @pathEnabled = b
40
- @end_pipe.enablePath b
41
- end
42
-
43
- def getCurrentPath
44
- @end_pipe.getCurrentPath
45
- end
46
-
47
- def iterator
48
- @end_pipe.iterator
49
- end
50
-
51
- def to_s
52
- "[#{ @start_pipe }...#{ @end_pipe }]"
53
- end
54
- end
55
- end
@@ -1,12 +0,0 @@
1
- module Pacer
2
- module Pipes
3
- module Renamed
4
- AbstractCollectionFilterPipe = com.tinkerpop.pipes.filter.CollectionFilterPipe
5
- end
6
-
7
- # This seemingly-useless class only exists because the class in Pipes
8
- # is marked abstract despite being complete.
9
- class CollectionFilterPipe < Renamed::AbstractCollectionFilterPipe
10
- end
11
- end
12
- end
@@ -1,22 +0,0 @@
1
- module Pacer::Pipes
2
- class EdgesPipe < AbstractPipe
3
- attr_reader :starts
4
-
5
- def setStarts(starts)
6
- @starts = starts.first
7
- self.iter = @starts.getEdges.iterator
8
- end
9
-
10
- def processNextStart
11
- iter.next
12
- end
13
-
14
- def reset
15
- self.iter = @starts.getEdges.iterator
16
- end
17
-
18
- private
19
-
20
- attr_accessor :iter
21
- end
22
- end
@@ -1,51 +0,0 @@
1
- module Pacer::Pipes
2
- class ExpandablePipe < RubyPipe
3
- def initialize
4
- super()
5
- @queue = java.util.LinkedList.new
6
- end
7
-
8
- def add(element, metadata = nil, path = nil)
9
- @queue.add [element, metadata, path]
10
- end
11
-
12
- def metadata
13
- @metadata
14
- end
15
-
16
- def next
17
- super
18
- ensure
19
- @path = @next_path
20
- @metadata = @next_metadata
21
- end
22
-
23
- protected
24
-
25
- def processNextStart
26
- if @queue.isEmpty
27
- @next_metadata = nil
28
- r = @starts.next
29
- if pathEnabled and @starts.respond_to? :getCurrentPath
30
- @next_path = @starts.getCurrentPath
31
- else
32
- @next_path = java.util.ArrayList.new
33
- end
34
- r
35
- else
36
- element, @next_metadata, @next_path = @queue.remove
37
- element
38
- end
39
- end
40
-
41
- def getPathToHere
42
- path = java.util.ArrayList.new
43
- if @path
44
- @path.each do |e|
45
- path.add e
46
- end
47
- end
48
- path
49
- end
50
- end
51
- end
@@ -1,37 +0,0 @@
1
- module Pacer::Pipes
2
- class IdCollectionFilterPipe < RubyPipe
3
- import com.tinkerpop.blueprints.Contains
4
- attr_reader :contains_in
5
-
6
- def initialize(ids, comparison)
7
- super()
8
- @ids = Set[*ids]
9
- if comparison == Contains::IN
10
- @contains_in = true
11
- elsif
12
- comparison == Contains::NOT_IN
13
- @contains_in = false
14
- else
15
- fail InternalError, "Unknown comparison type for ID collection filter"
16
- end
17
- end
18
-
19
- def processNextStart
20
- if contains_in
21
- while true
22
- element = @starts.next
23
- if element and @ids.include? element.getId
24
- return element
25
- end
26
- end
27
- else
28
- while true
29
- element = @starts.next
30
- if element and not @ids.include? element.getId
31
- return element
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,23 +0,0 @@
1
- module Pacer::Pipes
2
- class IsEmptyPipe < RubyPipe
3
- def initialize
4
- super
5
- @raise = false
6
- end
7
-
8
- def processNextStart
9
- raise EmptyPipe.instance if @raise
10
- starts.next
11
- @raise = true
12
- rescue EmptyPipe, java.util.NoSuchElementException
13
- true
14
- else
15
- raise EmptyPipe.instance
16
- end
17
-
18
- def reset
19
- @raise = false
20
- super()
21
- end
22
- end
23
- end
@@ -1,51 +0,0 @@
1
- module Pacer::Pipes
2
- class IsUniquePipe < RubyPipe
3
- import java.util.ArrayList
4
- import com.tinkerpop.pipes.sideeffect.SideEffectPipe
5
- import com.tinkerpop.pipes.util.iterators.ExpandableIterator
6
- import com.tinkerpop.pipes.filter.DuplicateFilterPipe
7
-
8
- include SideEffectPipe
9
-
10
- def initialize
11
- super()
12
- prepare_state
13
- end
14
-
15
- def processNextStart
16
- value = starts.next
17
- check_uniqueness value if @unique
18
- value
19
- end
20
-
21
- def reset
22
- super()
23
- prepare_state
24
- end
25
-
26
- def unique?
27
- @unique
28
- end
29
-
30
- def getSideEffect
31
- @unique
32
- end
33
-
34
- protected
35
-
36
- def check_uniqueness(value)
37
- @expando.add value
38
- @unique_pipe.next
39
- rescue EmptyPipe, java.util.NoSuchElementException
40
- @unique = false
41
- end
42
-
43
- def prepare_state
44
- @unique = true
45
- @expando = ExpandableIterator.new ArrayList.new.iterator
46
- @unique_pipe = DuplicateFilterPipe.new
47
- @unique_pipe.setStarts @expando
48
- end
49
-
50
- end
51
- end
@@ -1,15 +0,0 @@
1
- module Pacer::Pipes
2
- class LabelCollectionFilterPipe < RubyPipe
3
- def initialize(labels)
4
- super()
5
- @labels = Set[*labels.map(&:to_s)]
6
- end
7
-
8
- def processNextStart
9
- while true
10
- edge = @starts.next
11
- return edge if edge and @labels.include? edge.getLabel
12
- end
13
- end
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- module Pacer::Pipes
2
- class LabelPrefixPipe < RubyPipe
3
- def initialize(prefix)
4
- super()
5
- @prefix = /^#{prefix}/
6
- end
7
-
8
- def processNextStart
9
- while true
10
- edge = @starts.next
11
- return edge if edge.label =~ @prefix
12
- end
13
- end
14
- end
15
- end
@@ -1,9 +0,0 @@
1
- module Pacer::Pipes
2
- class NeverPipe < RubyPipe
3
- protected
4
-
5
- def processNextStart
6
- raise EmptyPipe.instance
7
- end
8
- end
9
- end
@@ -1,22 +0,0 @@
1
- module Pacer::Pipes
2
- class VerticesPipe < AbstractPipe
3
- attr_reader :starts
4
-
5
- def setStarts(starts)
6
- @starts = starts.first
7
- self.iter = @starts.getVertices.iterator
8
- end
9
-
10
- def processNextStart
11
- iter.next
12
- end
13
-
14
- def reset
15
- self.iter = @starts.getVertices.iterator
16
- end
17
-
18
- private
19
-
20
- attr_accessor :iter
21
- end
22
- end