feedme 0.8.3 → 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
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