pacer 2.0.18-java → 2.0.19-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 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