feedme 0.8.3 → 0.8.4

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.
Files changed (3) hide show
  1. data/History.txt +5 -0
  2. data/lib/feedme.rb +26 -23
  3. metadata +2 -2
@@ -1,3 +1,8 @@
1
+ === 0.8.4 / 2010-06-02
2
+
3
+ * Add :apply transformation
4
+ * Rename _transform to transform_value, make it public
5
+
1
6
  === 0.8.3 / 2010-05-27
2
7
 
3
8
  * Attempt to recognize incomplete RSS documents with a simpler regular
@@ -172,7 +172,10 @@ module FeedMe
172
172
 
173
173
  # this shouldn't be necessary since all text is automatically
174
174
  # unescaped, but some feeds double-escape HTML
175
- :esc => proc {|str| CGI.unescapeHTML(str) }
175
+ :esc => proc {|str| CGI.unescapeHTML(str) },
176
+
177
+ # apply an arbitrary function
178
+ :apply => proc {|str, fn, *args| fn.call(str, *args) }
176
179
  }
177
180
  end
178
181
 
@@ -435,7 +438,7 @@ module FeedMe
435
438
  !call_virtual_method(name_str[0..-2], args, history).nil? rescue false
436
439
  elsif name_str[-1,1] == '!'
437
440
  value = call_virtual_method(name_str[0..-2], args, history)
438
- _transform(fm_builder.default_transformation, value)
441
+ transform_value(fm_builder.default_transformation, value)
439
442
  elsif name_str =~ /(.+)_values/
440
443
  call_virtual_method(arrayize($1), args, history).collect do |value|
441
444
  _resolve_value value
@@ -446,7 +449,7 @@ module FeedMe
446
449
  call_virtual_method(arrayize($1), args, history).size
447
450
  elsif name_str =~ /(.+)_(.+)/ && fm_builder.transformations.key?($2)
448
451
  value = call_virtual_method($1, args, history)
449
- _transform(fm_builder.transformations[$2], value)
452
+ transform_value(fm_builder.transformations[$2], value)
450
453
  elsif name_str.include?('/') # this is only intended to be used internally
451
454
  value = self
452
455
  name_str.split('/').each do |p|
@@ -493,32 +496,15 @@ module FeedMe
493
496
  value = call_virtual_method(tag) or return nil
494
497
  transformations = trans.is_a?(String) ?
495
498
  fm_builder.transformations[trans] : trans
496
- _transform(transformations, value)
497
- end
498
-
499
- protected
500
-
501
- def clean_tag(tag)
502
- tag.to_s.downcase.gsub(':','_').intern
503
- end
504
-
505
- # generate a name for the array variable corresponding to a single-value variable
506
- def arrayize(key)
507
- clean_tag(key.to_s + '_array')
499
+ transform_value(transformations, value)
508
500
  end
509
501
 
510
- def unarrayize(key)
511
- clean_tag(key.to_s.gsub(/_array$/, ''))
512
- end
513
-
514
- private
515
-
516
- def _transform(trans_array, value)
502
+ def transform_value(trans_array, value)
517
503
  trans_array.each do |t|
518
504
  return nil if value.nil?
519
505
 
520
506
  if t.is_a? String
521
- value = _transform(fm_builder.transformations[t], value)
507
+ value = transform_value(fm_builder.transformations[t], value)
522
508
  else
523
509
  if t.is_a? Symbol
524
510
  t_name = t
@@ -545,6 +531,23 @@ module FeedMe
545
531
  value
546
532
  end
547
533
 
534
+ protected
535
+
536
+ def clean_tag(tag)
537
+ tag.to_s.downcase.gsub(':','_').intern
538
+ end
539
+
540
+ # generate a name for the array variable corresponding to a single-value variable
541
+ def arrayize(key)
542
+ clean_tag(key.to_s + '_array')
543
+ end
544
+
545
+ def unarrayize(key)
546
+ clean_tag(key.to_s.gsub(/_array$/, ''))
547
+ end
548
+
549
+ private
550
+
548
551
  def _resolve_value(obj)
549
552
  value = obj
550
553
  if obj.is_a?(FeedData)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Didion
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-05-27 00:00:00 -04:00
12
+ date: 2010-06-02 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15