pacer 1.3.4-java → 1.3.5-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.
- checksums.yaml +4 -4
- data/lib/pacer/core/graph/graph_index_route.rb +1 -0
- data/lib/pacer/filter/loop_filter.rb +2 -2
- data/lib/pacer/filter/object_filter.rb +54 -4
- data/lib/pacer/filter/property_filter/filters.rb +25 -9
- data/lib/pacer/loader.rb +1 -1
- data/lib/pacer/pipe/simple_visitor_pipe.rb +5 -3
- data/lib/pacer/side_effect/{as.rb → as_var.rb} +5 -3
- data/lib/pacer/version.rb +1 -1
- data/lib/pacer/visitors/section.rb +5 -0
- data/lib/pacer/wrappers/element_wrapper.rb +12 -0
- data/pom.xml +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c1a23e3e54a2756db3922e88510185ad2ccf8bc
|
4
|
+
data.tar.gz: 7f2fd6f0f42832e55b91c8dbaf230bb0c3050549
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1b4a54c3a52d987414be288ededf52c8a18d3c4243bb3ec9fb0166e0b0df5fd8efe524a118c53b1469a2fb841eda2e1568e45bf87cd86ba7dac52706db6e1fc
|
7
|
+
data.tar.gz: 898247e0abb0e20b9f1b5eab079cc366bb046d356239ccb0fc3ab4c31e9bcdff83bf5b0d75fa01d44ac3709f50e94ca5cd533a8ff20f58084d8e57f5368a9647
|
@@ -36,6 +36,7 @@ module Pacer::Core::Graph
|
|
36
36
|
|
37
37
|
def indexed_route(element_type, filters, block)
|
38
38
|
filters.graph = self
|
39
|
+
filters.use_lookup!
|
39
40
|
filters.indices = graph.indices
|
40
41
|
filters.choose_best_index = choose_best_index != false
|
41
42
|
filters.search_manual_indices = search_manual_indices
|
@@ -215,10 +215,10 @@ HELP
|
|
215
215
|
expando.setStarts empty.iterator
|
216
216
|
if route
|
217
217
|
control_pipe = Pacer::Route.pipeline route
|
218
|
+
control_pipe.setStarts expando
|
218
219
|
else
|
219
|
-
control_pipe =
|
220
|
+
control_pipe = expando
|
220
221
|
end
|
221
|
-
control_pipe.setStarts expando
|
222
222
|
[expando, control_pipe]
|
223
223
|
end
|
224
224
|
|
@@ -3,17 +3,17 @@ module Pacer
|
|
3
3
|
module RouteOperations
|
4
4
|
def is(value)
|
5
5
|
if value.is_a? Symbol
|
6
|
-
chain_route :
|
6
|
+
chain_route filter: Pacer::Filter::SectionFilter, section: value
|
7
7
|
else
|
8
|
-
chain_route
|
8
|
+
chain_route filter: Pacer::Filter::ObjectFilter, value: value
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
def is_not(value)
|
13
13
|
if value.is_a? Symbol
|
14
|
-
chain_route :
|
14
|
+
chain_route filter: Pacer::Filter::SectionFilter, section: value, negate: true
|
15
15
|
else
|
16
|
-
chain_route
|
16
|
+
chain_route filter: Pacer::Filter::ObjectFilter, value: value, negate: true
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -46,5 +46,55 @@ module Pacer
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
49
|
+
|
50
|
+
module SectionFilter
|
51
|
+
# VisitsSection module provides:
|
52
|
+
# section=
|
53
|
+
# section_visitor
|
54
|
+
include Pacer::Visitors::VisitsSection
|
55
|
+
|
56
|
+
attr_accessor :negate
|
57
|
+
|
58
|
+
def attach_pipe(end_pipe)
|
59
|
+
pipe = FilterSectionPipe.new(section_visitor, negate)
|
60
|
+
pipe.setStarts end_pipe if end_pipe
|
61
|
+
pipe
|
62
|
+
end
|
63
|
+
|
64
|
+
class FilterSectionPipe < Pacer::Pipes::RubyPipe
|
65
|
+
attr_reader :section, :negate
|
66
|
+
attr_accessor :other
|
67
|
+
|
68
|
+
def initialize(section, negate)
|
69
|
+
super()
|
70
|
+
@section = section
|
71
|
+
@negate = negate
|
72
|
+
section.visitor = self if section
|
73
|
+
end
|
74
|
+
|
75
|
+
def processNextStart
|
76
|
+
value = starts.next
|
77
|
+
if negate
|
78
|
+
while value == other
|
79
|
+
value = starts.next
|
80
|
+
end
|
81
|
+
else
|
82
|
+
while value != other
|
83
|
+
value = starts.next
|
84
|
+
end
|
85
|
+
end
|
86
|
+
value
|
87
|
+
end
|
88
|
+
|
89
|
+
def on_raw_element(x)
|
90
|
+
self.other = x
|
91
|
+
end
|
92
|
+
|
93
|
+
def reset
|
94
|
+
self.other = nil
|
95
|
+
super
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
49
99
|
end
|
50
100
|
end
|
@@ -172,6 +172,22 @@ module Pacer
|
|
172
172
|
result
|
173
173
|
end
|
174
174
|
|
175
|
+
# Check #lookup in extensions, in preerence to #route_conditions
|
176
|
+
# for filters to apply.
|
177
|
+
#
|
178
|
+
# Designed to allow filters to be defined in extensions that
|
179
|
+
# will not be used on every appearance of the extension (too
|
180
|
+
# many property filters in a traversal can impose a serious
|
181
|
+
# performance penalty. It is expected that lookup filters will
|
182
|
+
# only be used for index lookups.
|
183
|
+
def use_lookup!
|
184
|
+
extensions.each do |ext|
|
185
|
+
if ext.respond_to? :lookup
|
186
|
+
add_filters ext.lookup, ext
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
175
191
|
protected
|
176
192
|
|
177
193
|
attr_accessor :non_ext_props
|
@@ -191,9 +207,7 @@ module Pacer
|
|
191
207
|
else
|
192
208
|
self.extensions << filter
|
193
209
|
end
|
194
|
-
|
195
|
-
add_filters filter.route_conditions, filter
|
196
|
-
end
|
210
|
+
extract_conditions(filter)
|
197
211
|
if filter.respond_to? :route
|
198
212
|
self.route_modules << filter
|
199
213
|
end
|
@@ -203,20 +217,22 @@ module Pacer
|
|
203
217
|
else
|
204
218
|
if filter.respond_to? :wrapper
|
205
219
|
self.wrapper = filter.wrapper
|
206
|
-
|
207
|
-
add_filters filter.route_conditions, filter
|
208
|
-
end
|
220
|
+
extract_conditions(filter)
|
209
221
|
elsif filter.respond_to? :parts
|
210
222
|
self.extensions.concat filter.parts.to_a
|
211
|
-
|
212
|
-
add_filters filter.route_conditions, filter
|
213
|
-
end
|
223
|
+
extract_conditions(filter)
|
214
224
|
else
|
215
225
|
raise "Unknown filter: #{ filter.class }: #{ filter.inspect }"
|
216
226
|
end
|
217
227
|
end
|
218
228
|
end
|
219
229
|
|
230
|
+
def extract_conditions(filter)
|
231
|
+
if filter.respond_to? :route_conditions
|
232
|
+
add_filters filter.route_conditions, filter
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
220
236
|
def add_filters(filters, extension)
|
221
237
|
if filters.is_a? Array
|
222
238
|
filters.each do |filter|
|
data/lib/pacer/loader.rb
CHANGED
@@ -102,7 +102,7 @@ require 'pacer/transform/payload'
|
|
102
102
|
require 'pacer/transform/lookup_ids'
|
103
103
|
|
104
104
|
require 'pacer/side_effect/aggregate'
|
105
|
-
require 'pacer/side_effect/
|
105
|
+
require 'pacer/side_effect/as_var'
|
106
106
|
require 'pacer/side_effect/group_count'
|
107
107
|
require 'pacer/side_effect/is_unique'
|
108
108
|
require 'pacer/side_effect/counted'
|
@@ -3,7 +3,7 @@ module Pacer
|
|
3
3
|
class SimpleVisitorPipe < Pacer::Pipes::RubyPipe
|
4
4
|
attr_reader :visitor, :in_section, :wrapper, :graph
|
5
5
|
|
6
|
-
attr_accessor :use_on_element, :use_after_element, :
|
6
|
+
attr_accessor :use_on_raw_element, :use_on_element, :use_after_element, :use_visitor_reset
|
7
7
|
|
8
8
|
def initialize(wrapper, graph)
|
9
9
|
super()
|
@@ -14,15 +14,17 @@ module Pacer
|
|
14
14
|
|
15
15
|
def visitor=(visitor)
|
16
16
|
@visitor = visitor
|
17
|
+
@use_on_raw_element = visitor.respond_to? :on_raw_element
|
17
18
|
@use_on_element = visitor.respond_to? :on_element
|
18
19
|
@use_after_element = visitor.respond_to? :after_element
|
19
|
-
@
|
20
|
+
@use_visitor_reset = visitor.respond_to? :visitor_reset
|
20
21
|
end
|
21
22
|
|
22
23
|
def processNextStart
|
23
24
|
visitor.after_element if use_after_element and in_section
|
24
25
|
current = starts.next
|
25
26
|
@in_section = true unless in_section
|
27
|
+
visitor.on_raw_element current if use_on_raw_element
|
26
28
|
if use_on_element
|
27
29
|
wrapped = wrapper.new graph, current
|
28
30
|
visitor.on_element(wrapped)
|
@@ -34,7 +36,7 @@ module Pacer
|
|
34
36
|
end
|
35
37
|
|
36
38
|
def reset
|
37
|
-
visitor.
|
39
|
+
visitor.visitor_reset if use_visitor_reset
|
38
40
|
@in_section = false
|
39
41
|
super
|
40
42
|
end
|
@@ -3,14 +3,16 @@ module Pacer
|
|
3
3
|
# Store the current intermediate element in the route's vars hash by the
|
4
4
|
# given name so that it is accessible subsequently in the processing of the
|
5
5
|
# route.
|
6
|
-
|
7
|
-
|
6
|
+
#
|
7
|
+
# Deprecated.
|
8
|
+
def as_var(name)
|
9
|
+
as = ::Pacer::SideEffect::AsVar
|
8
10
|
section(name, as::SingleElementSet).chain_route :side_effect => as, :variable_name => name
|
9
11
|
end
|
10
12
|
end
|
11
13
|
|
12
14
|
module SideEffect
|
13
|
-
module
|
15
|
+
module AsVar
|
14
16
|
class AsPipe < Pacer::Pipes::RubyPipe
|
15
17
|
attr_accessor :vars
|
16
18
|
|
data/lib/pacer/version.rb
CHANGED
@@ -4,6 +4,11 @@ module Pacer
|
|
4
4
|
def section(section_name = nil, visitor_target = nil)
|
5
5
|
chain_route visitor: :section, section_name: section_name, visitor_target: visitor_target
|
6
6
|
end
|
7
|
+
|
8
|
+
# see #as_var for the old as implementation
|
9
|
+
def as(section_name = nil)
|
10
|
+
section section_name
|
11
|
+
end
|
7
12
|
end
|
8
13
|
end
|
9
14
|
|
@@ -47,6 +47,18 @@ module Pacer::Wrappers
|
|
47
47
|
@route_conditions
|
48
48
|
end
|
49
49
|
|
50
|
+
def lookup
|
51
|
+
return @lookup if defined? @lookup
|
52
|
+
@lookup = extensions.inject({}) do |h, ext|
|
53
|
+
if ext.respond_to? :lookup
|
54
|
+
h.merge! ext.lookup
|
55
|
+
else
|
56
|
+
h
|
57
|
+
end
|
58
|
+
end
|
59
|
+
@lookup
|
60
|
+
end
|
61
|
+
|
50
62
|
protected
|
51
63
|
|
52
64
|
def build_extension_wrapper(exts, mod_names, superclass)
|
data/pom.xml
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
<!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-neo4j/version.rb -->
|
9
9
|
<properties>
|
10
10
|
<blueprints.version>2.3.0</blueprints.version>
|
11
|
-
<gem.version>1.3.
|
11
|
+
<gem.version>1.3.5</gem.version>
|
12
12
|
<pipes.version>2.3.0</pipes.version>
|
13
13
|
<gremlin.version>2.3.0</gremlin.version>
|
14
14
|
</properties>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pacer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.5
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Darrick Wiebe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Pacer defines routes through a graph and then traverses them very quickly.
|
14
14
|
email: darrick@innatesoftware.com
|
@@ -112,7 +112,7 @@ files:
|
|
112
112
|
- lib/pacer/route/mixin/route_operations.rb
|
113
113
|
- lib/pacer/route_builder.rb
|
114
114
|
- lib/pacer/side_effect/aggregate.rb
|
115
|
-
- lib/pacer/side_effect/
|
115
|
+
- lib/pacer/side_effect/as_var.rb
|
116
116
|
- lib/pacer/side_effect/counted.rb
|
117
117
|
- lib/pacer/side_effect/group_count.rb
|
118
118
|
- lib/pacer/side_effect/is_unique.rb
|
@@ -220,7 +220,7 @@ files:
|
|
220
220
|
- spec/support/use_transactions.rb
|
221
221
|
- spec/tackle/simple_mixin.rb
|
222
222
|
- spec/tackle/tinkerpop_graph_mixins.rb
|
223
|
-
- lib/pacer-1.3.
|
223
|
+
- lib/pacer-1.3.5-standalone.jar
|
224
224
|
homepage: http://github.com/pangloss/pacer
|
225
225
|
licenses:
|
226
226
|
- MIT
|