Module: RSS::Maker::TaxonomyTopicModel

Included in:
RSSBase
Defined in:
lib/rss/maker/taxonomy.rb

Defined Under Namespace

Classes: TaxonomyTopicsBase

Class Method Summary collapse

Class Method Details

.append_features(klass) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/rss/maker/taxonomy.rb', line 51

def self.append_features(klass)
  super

  klass.add_need_initialize_variable("taxo_topics", "make_taxo_topics")
  klass.add_other_element("taxo_topics")
  klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
    attr_reader :taxo_topics
    def make_taxo_topics
      self.class::TaxonomyTopics.new(@maker)
    end
      
    def setup_taxo_topics(rss, current)
      @taxo_topics.to_rss(rss, current)
    end

    def taxo_topic
      @taxo_topics[0] and @taxo_topics[0].value
    end
      
    def taxo_topic=(new_value)
      @taxo_topic[0] = self.class::TaxonomyTopic.new(self)
      @taxo_topic[0].value = new_value
    end
EOC
end

.install_taxo_topic(klass) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/rss/maker/taxonomy.rb', line 77

def self.install_taxo_topic(klass)
  klass.module_eval(<<-EOC, *Utils.get_file_and_line_from_caller(1))
    class TaxonomyTopics < TaxonomyTopicsBase
      class TaxonomyTopic < TaxonomyTopicBase
        DublinCoreModel.install_dublin_core(self)
        TaxonomyTopicsModel.install_taxo_topics(self)

        def to_rss(rss, current)
          if current.respond_to?(:taxo_topics)
            topic = current.class::TaxonomyTopic.new(value)
            topic.taxo_link = value
            taxo_topics.to_rss(rss, topic) if taxo_topics
            current.taxo_topics << topic
            setup_other_elements(rss)
          end
        end

        def current_element(rss)
          super.taxo_topics.last
        end
      end
    end
EOC
end