pump 0.5.0 → 0.5.1

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: 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