[18425] | 1 | require "rss/0.9"
|
---|
| 2 |
|
---|
| 3 | module RSS
|
---|
| 4 |
|
---|
| 5 | class Rss
|
---|
| 6 |
|
---|
| 7 | class Channel
|
---|
| 8 |
|
---|
| 9 | [
|
---|
| 10 | ["generator"],
|
---|
| 11 | ["ttl", :integer],
|
---|
| 12 | ].each do |name, type|
|
---|
| 13 | install_text_element(name, "", "?", name, type)
|
---|
| 14 | end
|
---|
| 15 |
|
---|
| 16 | [
|
---|
| 17 | %w(category categories),
|
---|
| 18 | ].each do |name, plural_name|
|
---|
| 19 | install_have_children_element(name, "", "*", name, plural_name)
|
---|
| 20 | end
|
---|
| 21 |
|
---|
| 22 | [
|
---|
| 23 | ["image", "?"],
|
---|
| 24 | ["language", "?"],
|
---|
| 25 | ].each do |name, occurs|
|
---|
| 26 | install_model(name, "", occurs)
|
---|
| 27 | end
|
---|
| 28 |
|
---|
| 29 | Category = Item::Category
|
---|
| 30 |
|
---|
| 31 | class Item
|
---|
| 32 |
|
---|
| 33 | [
|
---|
| 34 | ["comments", "?"],
|
---|
| 35 | ["author", "?"],
|
---|
| 36 | ].each do |name, occurs|
|
---|
| 37 | install_text_element(name, "", occurs)
|
---|
| 38 | end
|
---|
| 39 |
|
---|
| 40 | [
|
---|
| 41 | ["pubDate", '?'],
|
---|
| 42 | ].each do |name, occurs|
|
---|
| 43 | install_date_element(name, "", occurs, name, 'rfc822')
|
---|
| 44 | end
|
---|
| 45 | alias date pubDate
|
---|
| 46 | alias date= pubDate=
|
---|
| 47 |
|
---|
| 48 | [
|
---|
| 49 | ["guid", '?'],
|
---|
| 50 | ].each do |name, occurs|
|
---|
| 51 | install_have_child_element(name, "", occurs)
|
---|
| 52 | end
|
---|
| 53 |
|
---|
| 54 | private
|
---|
| 55 | alias _setup_maker_element setup_maker_element
|
---|
| 56 | def setup_maker_element(item)
|
---|
| 57 | _setup_maker_element(item)
|
---|
| 58 | @guid.setup_maker(item) if @guid
|
---|
| 59 | end
|
---|
| 60 |
|
---|
| 61 | class Guid < Element
|
---|
| 62 |
|
---|
| 63 | include RSS09
|
---|
| 64 |
|
---|
| 65 | [
|
---|
| 66 | ["isPermaLink", "", false, :boolean]
|
---|
| 67 | ].each do |name, uri, required, type|
|
---|
| 68 | install_get_attribute(name, uri, required, type)
|
---|
| 69 | end
|
---|
| 70 |
|
---|
| 71 | content_setup
|
---|
| 72 |
|
---|
| 73 | def initialize(*args)
|
---|
| 74 | if Utils.element_initialize_arguments?(args)
|
---|
| 75 | super
|
---|
| 76 | else
|
---|
| 77 | super()
|
---|
| 78 | self.isPermaLink = args[0]
|
---|
| 79 | self.content = args[1]
|
---|
| 80 | end
|
---|
| 81 | end
|
---|
| 82 |
|
---|
| 83 | alias_method :_PermaLink?, :PermaLink?
|
---|
| 84 | private :_PermaLink?
|
---|
| 85 | def PermaLink?
|
---|
| 86 | perma = _PermaLink?
|
---|
| 87 | perma or perma.nil?
|
---|
| 88 | end
|
---|
| 89 |
|
---|
| 90 | private
|
---|
| 91 | def maker_target(item)
|
---|
| 92 | item.guid
|
---|
| 93 | end
|
---|
| 94 |
|
---|
| 95 | def setup_maker_attributes(guid)
|
---|
| 96 | guid.isPermaLink = isPermaLink
|
---|
| 97 | guid.content = content
|
---|
| 98 | end
|
---|
| 99 | end
|
---|
| 100 |
|
---|
| 101 | end
|
---|
| 102 |
|
---|
| 103 | end
|
---|
| 104 |
|
---|
| 105 | end
|
---|
| 106 |
|
---|
| 107 | RSS09::ELEMENTS.each do |name|
|
---|
| 108 | BaseListener.install_get_text_element("", name, "#{name}=")
|
---|
| 109 | end
|
---|
| 110 |
|
---|
| 111 | end
|
---|