module Itunes::Receipt::Properties

Constants

LIST

Public Class Methods

included(klass) click to toggle source
# File lib/itunes/receipt/properties.rb, line 46
   def self.included klass
      klass.class_eval do
         attr_reader :data
      end

      (LIST.keys & klass::PROPERTY_LIST).each do |prop|
         case value = LIST[prop]
         when TrueClass
            klass.class_eval <<-"end;", __FILE__, __LINE__+1
               def #{prop}
                  data['#{prop}']
               end
            end;
         when Hash
            case value[:name]
            when String
               klass.class_eval <<-"end;", __FILE__, __LINE__+1
                  def #{prop}
                     Itunes::Receipt::Properties::LIST['#{prop}'][:prc][data['#{value[:name]}']]
                  end
               end;
            when Array
               klass.class_eval <<-"end;", __FILE__, __LINE__+1
                  def #{prop}
                     #{value[:name]}.reduce(nil) do |res, name|
                        if not res and data[name]
                           Itunes::Receipt::Properties::LIST['#{prop}'][:prc][data[name]]
                        else
                           res
                        end
                     end
                  end
               end;
            end
         when Proc
            klass.class_eval <<-"end;", __FILE__, __LINE__+1
               def #{prop}
                  Itunes::Receipt::Properties::LIST['#{prop}'][data['#{prop}']]
               end
            end;
         end
      end
   end