pump 0.5.0 → 0.5.1

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: 1b9056ee092ab29fe87298579710bd70071d6a6d
4
- data.tar.gz: ef775b68abb7303644d320ff315f23e643817576
3
+ metadata.gz: 9047d695a9bb5dbbec84d04fc9a77bebb43c35f8
4
+ data.tar.gz: eeed27e8e5f98a30fa22271af1e6182cc3178bcd
5
5
  SHA512:
6
- metadata.gz: 29d00d8d8999018fa340ec2c6e77569dbfabb60419cce2437a89290fdd93f46bfdd7e5ed431724498305f8e97ce32d84bf4d99cca13abf004321d04b1d6b4d8c
7
- data.tar.gz: 633002231a25894b1512e764e0513c5dc054b46be7e4fae8ff19a5d4cdd1c091f934778519fd125a1bfa059cc2dbe01c2ac3fac9f2461abe8ed64137c55bd6c6
6
+ metadata.gz: 6c696f69ee33b842a90e2bd2790a802415497a29aed0d274331bdefc7d54bc5c975b9e6cb6cfd53e161f95a37447777ceefb51c58b1a65df83e64829e755e0ab
7
+ data.tar.gz: f020baf37e32686173e0334193fbd555c93966a3b8924f3ecaa0dd0127a3dbc8c484dba40217ba11a7d682b6bdb4cd27a238bff04cd460dab16708e18443223c
data/lib/pump/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pump
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
data/lib/pump/xml/tag.rb CHANGED
@@ -13,7 +13,9 @@ module Pump
13
13
  end
14
14
 
15
15
  def to_s
16
- if !value_nodes? || options[:never_nil]
16
+ if options.has_key?(:static_value)
17
+ "#{condition_start}#{open_tag}#{static_value_and_close_tag}#{condition_end}"
18
+ elsif !value_nodes? || options[:never_nil]
17
19
  "#{condition_start}#{open_tag}#{value_and_close_tag}#{condition_end}"
18
20
  else
19
21
  "#{condition_start}#{open_tag}\#{v = #{nodes.first.plain};''}\#{#{value_and_close_tag_with_nil_check}}#{condition_end}"
@@ -47,6 +49,11 @@ module Pump
47
49
  "v.nil? ? \" nil=\\\"true\\\"/>\n\" : \"#{value_and_close_tag('v')}\""
48
50
  end
49
51
 
52
+ def static_value_and_close_tag
53
+ return " nil=\\\"true\\\"/>\n" if options[:static_value].nil?
54
+ ">#{options[:static_value]}</#{name}>\n"
55
+ end
56
+
50
57
  def attributes_string
51
58
  return "" if !attributes || attributes.size == 0
52
59
  attributes.inject('') do |str, (key, value)|
@@ -11,7 +11,11 @@ module Pump
11
11
  end
12
12
 
13
13
  def to_s
14
- "#{prefix}<#{name} type=\\\"array\\\"#{loop_and_close_tag}"
14
+ if options.has_key?(:static_value)
15
+ "#{prefix}<#{name} type=\\\"array\\\"#{static_value_and_close_tag}"
16
+ else
17
+ "#{prefix}<#{name} type=\\\"array\\\"#{loop_and_close_tag}"
18
+ end
15
19
  end
16
20
 
17
21
  private
@@ -24,6 +28,11 @@ module Pump
24
28
  "\#{ #{objects_path}.empty? ? \"/>\n\" : \">\n#{tag_loop}#{tabs}</#{name}>\n\" }"
25
29
  end
26
30
 
31
+ def static_value_and_close_tag
32
+ return "/>\n" if options[:static_value].nil?
33
+ ">#{options[:static_value]}</#{name}>\n"
34
+ end
35
+
27
36
  def objects_path
28
37
  options[:array_method] ? "object.#{options[:array_method]}" : "objects"
29
38
  end
@@ -203,12 +203,64 @@ describe Pump::Xml do
203
203
  end
204
204
  end
205
205
 
206
+ context "with static_value set" do
207
+ let(:person) { Struct.new(:name, :age, :is_yount).new('Gorbatschow', 82, false) }
208
+
209
+ context "replace with other value" do
210
+ let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:age => :age, :static_value => 12}]) }
211
+
212
+ it "returns given static_value" do
213
+ xml.encode(person).should eql("#{XML_INSTRUCT}<person>\n <name>Gorbatschow</name>\n <age>12</age>\n</person>\n")
214
+ end
215
+ end
216
+
217
+ context "replace with nil value" do
218
+ let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:age => :age, :static_value => nil}]) }
219
+
220
+ it "returns given static_value" do
221
+ xml.encode(person).should eql("#{XML_INSTRUCT}<person>\n <name>Gorbatschow</name>\n <age nil=\"true\"/>\n</person>\n")
222
+ end
223
+ end
224
+
225
+ context "replace with other value but with failed condition" do
226
+ let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:age => :age, :static_value => 12, :if => :is_yount}]) }
227
+
228
+ it "returns given static_value" do
229
+ xml.encode(person).should eql("#{XML_INSTRUCT}<person>\n <name>Gorbatschow</name>\n</person>\n")
230
+ end
231
+ end
232
+
233
+ context "replace with other value but with succssful condition" do
234
+ let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:age => :age, :static_value => 12, :unless => :is_yount}]) }
235
+
236
+ it "returns given static_value" do
237
+ xml.encode(person).should eql("#{XML_INSTRUCT}<person>\n <name>Gorbatschow</name>\n <age>12</age>\n</person>\n")
238
+ end
239
+ end
240
+ end
241
+
206
242
  context "deep hash-like nesting" do
207
243
  let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:parent => [{:name => :name}, {:age => :age}]}], :instruct => false) }
208
244
 
209
245
  it "returns xml string" do
210
246
  xml.encode(person).should eql("<person>\n <name>Benny</name>\n <parent>\n <name>Benny</name>\n <age>9</age>\n </parent>\n</person>\n")
211
247
  end
248
+
249
+ context "with static_value = nil" do
250
+ let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:parent => [{:name => :name}, {:age => :age}], :static_value => nil}], :instruct => false) }
251
+
252
+ it "uses static value" do
253
+ xml.encode(person).should eql("<person>\n <name>Benny</name>\n <parent nil=\"true\"/>\n</person>\n")
254
+ end
255
+ end
256
+
257
+ context "with static_value = ''" do
258
+ let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:parent => [{:name => :name}, {:age => :age}], :static_value => ""}], :instruct => false) }
259
+
260
+ it "uses static value" do
261
+ xml.encode(person).should eql("<person>\n <name>Benny</name>\n <parent></parent>\n</person>\n")
262
+ end
263
+ end
212
264
  end
213
265
 
214
266
  context "deep array-like nesting" do
@@ -233,6 +285,22 @@ describe Pump::Xml do
233
285
  xml.encode(person).should eql("<person>\n <name>Gustav</name>\n <children type=\"array\">\n <kid>\n <name>Lilly</name>\n </kid>\n <kid>\n <name>Lena</name>\n </kid>\n </children>\n</person>\n")
234
286
  end
235
287
  end
288
+
289
+ context "with static_value = nil" do
290
+ let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:children => :children,
291
+ :array => [{:name => :name}], :static_value => nil}], :instruct => false) }
292
+ it "uses static value" do
293
+ xml.encode(person).should eql("<person>\n <name>Gustav</name>\n <children type=\"array\"/>\n</person>\n")
294
+ end
295
+ end
296
+
297
+ context "with static_value = ''" do
298
+ let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:children => :children,
299
+ :array => [{:name => :name}], :static_value => ''}], :instruct => false) }
300
+ it "uses static value" do
301
+ xml.encode(person).should eql("<person>\n <name>Gustav</name>\n <children type=\"array\"></children>\n</person>\n")
302
+ end
303
+ end
236
304
  end
237
305
  end
238
306
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Munz