pacer 2.0.18-java → 2.0.19-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d7905ddf1c56bda34240a62c39a2c089269ee52
4
- data.tar.gz: 992588158de779cc22d9fc56376d85ae3274ec98
3
+ metadata.gz: 50f9f48f941e86e98b7155587e62f6477812edd9
4
+ data.tar.gz: 99f7b7c8e1265d73c9bc2f9cdcebbcaedb8749a6
5
5
  SHA512:
6
- metadata.gz: b0ff0dd02bdaa3949d244ba7eb61542f09794d2b3278f1bfb113a5a30a6c94747cdc0387e560335068bf65aa2302b68be1f62075b07f15e98adf51f763bb3186
7
- data.tar.gz: 60c4e5f8e19a89e4606afd0c320988f1cba8264704e991904194a87100c8d5bcc9665fd62b737ee63ae70257dced51af3e224734d08b2a870acfc75952c3dc92
6
+ metadata.gz: fb477cd2ffdbaca86421c856a0c5d61c79eeb581086bfca05097d30d1f0e966b820acd9aedf26206d76cdabb82c166b6ccf9b4f2fffabea61b7e29817bebc70c
7
+ data.tar.gz: 299290b76f510049a74d8c155366d8289aa315e3a919988c26f04252d4aa704a0f6a23cbc38c71beb0519e15b4e04b141450a01a46844291fe8e76c60f7339c0
@@ -2,13 +2,13 @@ module Pacer
2
2
  module Routes
3
3
  module RouteOperations
4
4
  # Arity 2 uses custom sort logic. Arity 1 uses sort_by logic.
5
- def sort_section(section = nil, &block)
5
+ def sort_section(section = nil, opts = {}, &block)
6
6
  if not block
7
- chain_route transform: :sort_section, section: section
7
+ chain_route opts.merge(transform: :sort_section, section: section)
8
8
  elsif block.arity == 2
9
- chain_route transform: :sort_section, custom_sort_block: block, section: section
9
+ chain_route opts.merge(transform: :sort_section, custom_sort_block: block, section: section)
10
10
  else
11
- chain_route transform: :sort_section, sort_by_block: block, section: section
11
+ chain_route opts.merge(transform: :sort_section, sort_by_block: block, section: section)
12
12
  end
13
13
  end
14
14
 
@@ -29,6 +29,12 @@ module Pacer
29
29
 
30
30
  attr_accessor :sort_by_block
31
31
  attr_accessor :custom_sort_block
32
+ attr_accessor :nil_value
33
+
34
+ def nil_sort_value(value)
35
+ @nil_value = nil_value
36
+ self
37
+ end
32
38
 
33
39
  protected
34
40
 
@@ -38,23 +44,24 @@ module Pacer
38
44
  pipe = CustomSortPipe.new(self, section_visitor, custom_sort_block, graph, wrapper)
39
45
  else # sort_by_block
40
46
  pf = Pacer::Wrappers::WrappingPipeFunction.new self, sort_by_block if sort_by_block
41
- pipe = SortBySectionPipe.new(self, section_visitor, pf)
47
+ pipe = SortBySectionPipe.new(self, section_visitor, pf, nil_value)
42
48
  end
43
49
  pipe.setStarts end_pipe if end_pipe
44
50
  pipe
45
51
  end
46
52
 
47
53
  class SortBySectionPipe < Pacer::Pipes::RubyPipe
48
- attr_reader :pf_1, :pf_2, :to_sort, :to_emit, :section, :route
54
+ attr_reader :pf_1, :pf_2, :to_sort, :to_emit, :section, :route, :nil_value
49
55
  attr_reader :getPathToHere
50
56
 
51
- def initialize(route, visitor_pipe, pipe_function)
57
+ def initialize(route, visitor_pipe, pipe_function, nil_value)
52
58
  super()
53
59
  @to_emit = []
54
60
  @visitor_pipe = visitor_pipe
55
61
  @route = route
56
62
  @to_sort = []
57
63
  @paths = []
64
+ @nil_value = nil_value
58
65
  if visitor_pipe
59
66
  visitor_pipe.visitor = self
60
67
  else
@@ -106,16 +113,42 @@ module Pacer
106
113
  def after_element
107
114
  if to_sort.any?
108
115
  if pf_1
109
- sorted = to_sort.sort_by do |element, path|
110
- pf_1.call element
116
+ if nil_value
117
+ sorted = to_sort.sort_by do |element, path|
118
+ v = pf_1.call element
119
+ if v.nil?
120
+ nil_value
121
+ else
122
+ v
123
+ end
124
+ end
125
+ else
126
+ sorted = to_sort.sort_by do |element, path|
127
+ pf_1.call element
128
+ end
111
129
  end
112
130
  elsif pf_2
113
- sorted = to_sort.sort_by do |element, path|
114
- pf_2.call_with_args element, @section_element, pf_2.wrap_path(path)
131
+ if nil_value
132
+ sorted = to_sort.sort_by do |element, path|
133
+ v = pf_2.call_with_args element, @section_element, pf_2.wrap_path(path)
134
+ if v.nil?
135
+ nil_value
136
+ else
137
+ v
138
+ end
139
+ end
140
+ else
141
+ sorted = to_sort.sort_by do |element, path|
142
+ pf_2.call_with_args element, @section_element, pf_2.wrap_path(path)
143
+ end
115
144
  end
116
145
  else
117
146
  sorted = to_sort.sort_by do |element, path|
118
- element
147
+ if element.nil?
148
+ nil_value
149
+ else
150
+ element
151
+ end
119
152
  end
120
153
  end
121
154
  to_emit.concat sorted
@@ -128,7 +161,7 @@ module Pacer
128
161
  attr_reader :sort_block
129
162
 
130
163
  def initialize(route, visitor_pipe, sort_block, graph, wrapper)
131
- super route, visitor_pipe, nil
164
+ super route, visitor_pipe, nil, nil
132
165
  @sort_block = sort_block
133
166
  @graph = graph
134
167
  @wrapper = wrapper
data/lib/pacer/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Pacer
2
- VERSION = "2.0.18"
2
+ VERSION = "2.0.19"
3
3
  # Clients may optionally define the following constants in the Pacer namespace:
4
4
  # - LOAD_JARS : set to false to manage jar loading in the client. Be sure to load the jars defined in JARFILES.
5
5
  # - LOCKJAR_LOCK_OPTS : set some options to be passed to LockJar.lock (ie. :lockfile, :download_artifacts, :local_repo)
@@ -57,6 +57,22 @@ Run.tg :read_only do
57
57
  end
58
58
  end
59
59
 
60
+ describe 'sort by with nil' do
61
+ let(:by_name) do
62
+ graph.v.section(:x).out.out.sort_section(:x, nil_value: 'x') { |v| nil }
63
+ end
64
+
65
+ it 'should have the same elements' do
66
+ by_name.group_count.should == unsorted.group_count
67
+ end
68
+
69
+ it 'should have 3 elements in the path' do
70
+ by_name.paths.each do |path|
71
+ path.length.should == 3
72
+ end
73
+ end
74
+ end
75
+
60
76
  describe 'sort with more info' do
61
77
  let(:unsorted) { graph.v.out.out }
62
78
  let(:with_path) do
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: 2.0.18
4
+ version: 2.0.19
5
5
  platform: java
6
6
  authors:
7
7
  - Darrick Wiebe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-09 00:00:00.000000000 Z
11
+ date: 2015-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lock_jar