pacer 1.3.4-java → 1.3.5-java
Sign up to get free protection for your applications and to get access to all the features.
- 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
|