In Files

Included Modules

Class/Module Index [+]

Quicksearch

RSS::BaseTrackBackModel

Constants

ELEMENTS

Public Instance Methods

append_features(klass) click to toggle source
                
# File rss/trackback.rb, line 27
def append_features(klass)
  super

  unless klass.class == Module
    klass.module_eval {include TrackBackUtils}

    klass.install_must_call_validator(TRACKBACK_PREFIX, TRACKBACK_URI)
    %(ping).each do |name|
      var_name = "#{TRACKBACK_PREFIX}_#{name}"
      klass_name = "TrackBack#{Utils.to_class_name(name)}"
      klass.install_have_child_element(name, TRACKBACK_URI, "?", var_name)
      klass.module_eval(            remove_method :#{var_name}            def #{var_name}              @#{var_name} and @#{var_name}.value            end            remove_method :#{var_name}=            def #{var_name}=(value)              @#{var_name} = Utils.new_with_value_if_need(#{klass_name}, value)            end, __FILE__, __LINE__)
    end

    [%(about s)].each do |name, postfix|
      var_name = "#{TRACKBACK_PREFIX}_#{name}"
      klass_name = "TrackBack#{Utils.to_class_name(name)}"
      klass.install_have_children_element(name, TRACKBACK_URI, "*",
                                          var_name)
      klass.module_eval(            remove_method :#{var_name}            def #{var_name}(*args)              if args.empty?                @#{var_name}.first and @#{var_name}.first.value              else                ret = @#{var_name}.__send__("[]", *args)                if ret.is_a?(Array)                  ret.collect {|x| x.value}                else                  ret.value                end              end            end            remove_method :#{var_name}=            remove_method :set_#{var_name}            def #{var_name}=(*args)              if args.size == 1                item = Utils.new_with_value_if_need(#{klass_name}, args[0])                @#{var_name}.push(item)              else                new_val = args.last                if new_val.is_a?(Array)                  new_val = new_value.collect do |val|                    Utils.new_with_value_if_need(#{klass_name}, val)                  end                else                  new_val = Utils.new_with_value_if_need(#{klass_name}, new_val)                end                @#{var_name}.__send__("[]=", *(args[0..-2] + [new_val]))              end            end            alias set_#{var_name} #{var_name}=, __FILE__, __LINE__)
    end
  end
end
blog comments powered by Disqus