* lib/rss/rss.rb (RSS::VERSION): 0.1.2 -> 0.1.3.
* lib/rss/rss.rb: accept inheritance. [ruby-talk:126104] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c853ea40c3
commit
e1e5eda547
@ -1,3 +1,9 @@
|
|||||||
|
Sat Jan 15 13:44:22 2005 Kouhei Sutou <kou@cozmixng.org>
|
||||||
|
|
||||||
|
* lib/rss/rss.rb (RSS::VERSION): 0.1.2 -> 0.1.3.
|
||||||
|
|
||||||
|
* lib/rss/rss.rb: accept inheritance. [ruby-talk:126104]
|
||||||
|
|
||||||
Wed Jan 12 00:36:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Wed Jan 12 00:36:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* object.c (rb_class_superclass): superclass of singleton class also
|
* object.c (rb_class_superclass): superclass of singleton class also
|
||||||
|
@ -21,17 +21,17 @@ module RSS
|
|||||||
|
|
||||||
subclass.module_eval(<<-EOEOC, __FILE__, __LINE__)
|
subclass.module_eval(<<-EOEOC, __FILE__, __LINE__)
|
||||||
def self.other_elements
|
def self.other_elements
|
||||||
const_get("OTHER_ELEMENTS") + super
|
OTHER_ELEMENTS + super
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.need_initialize_variables
|
def self.need_initialize_variables
|
||||||
const_get("NEED_INITIALIZE_VARIABLES") + super
|
NEED_INITIALIZE_VARIABLES + super
|
||||||
end
|
end
|
||||||
EOEOC
|
EOEOC
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.add_other_element(variable_name)
|
def self.add_other_element(variable_name)
|
||||||
const_get("OTHER_ELEMENTS") << variable_name
|
OTHER_ELEMENTS << variable_name
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.other_elements
|
def self.other_elements
|
||||||
@ -39,7 +39,7 @@ module RSS
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.add_need_initialize_variable(variable_name, init_value="nil")
|
def self.add_need_initialize_variable(variable_name, init_value="nil")
|
||||||
const_get("NEED_INITIALIZE_VARIABLES") << [variable_name, init_value]
|
NEED_INITIALIZE_VARIABLES << [variable_name, init_value]
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.need_initialize_variables
|
def self.need_initialize_variables
|
||||||
|
107
lib/rss/rss.rb
107
lib/rss/rss.rb
@ -58,7 +58,7 @@ require "rss/xml-stylesheet"
|
|||||||
|
|
||||||
module RSS
|
module RSS
|
||||||
|
|
||||||
VERSION = "0.1.2"
|
VERSION = "0.1.3"
|
||||||
|
|
||||||
URI = "http://purl.org/rss/1.0/"
|
URI = "http://purl.org/rss/1.0/"
|
||||||
|
|
||||||
@ -355,93 +355,110 @@ EOC
|
|||||||
|
|
||||||
INDENT = " "
|
INDENT = " "
|
||||||
|
|
||||||
|
MUST_CALL_VALIDATORS = {}
|
||||||
|
MODEL = []
|
||||||
|
GET_ATTRIBUTES = []
|
||||||
|
HAVE_CHILDREN_ELEMENTS = []
|
||||||
|
NEED_INITIALIZE_VARIABLES = []
|
||||||
|
PLURAL_FORMS = {}
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
|
|
||||||
|
def must_call_validators
|
||||||
|
MUST_CALL_VALIDATORS
|
||||||
|
end
|
||||||
|
def model
|
||||||
|
MODEL
|
||||||
|
end
|
||||||
|
def get_attributes
|
||||||
|
GET_ATTRIBUTES
|
||||||
|
end
|
||||||
|
def have_children_elements
|
||||||
|
HAVE_CHILDREN_ELEMENTS
|
||||||
|
end
|
||||||
|
def need_initialize_variables
|
||||||
|
NEED_INITIALIZE_VARIABLES
|
||||||
|
end
|
||||||
|
def plural_forms
|
||||||
|
PLURAL_FORMS
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def inherited(klass)
|
def inherited(klass)
|
||||||
|
klass.const_set("MUST_CALL_VALIDATORS", {})
|
||||||
|
klass.const_set("MODEL", [])
|
||||||
|
klass.const_set("GET_ATTRIBUTES", [])
|
||||||
|
klass.const_set("HAVE_CHILDREN_ELEMENTS", [])
|
||||||
|
klass.const_set("NEED_INITIALIZE_VARIABLES", [])
|
||||||
|
klass.const_set("PLURAL_FORMS", {})
|
||||||
|
|
||||||
klass.module_eval(<<-EOC)
|
klass.module_eval(<<-EOC)
|
||||||
public
|
public
|
||||||
|
|
||||||
@tag_name = name.split(/::/).last
|
@tag_name = name.split(/::/).last
|
||||||
@tag_name[0,1] = @tag_name[0,1].downcase
|
@tag_name[0,1] = @tag_name[0,1].downcase
|
||||||
@indent_size = name.split(/::/).size - 2
|
@indent_size = name.split(/::/).size - 2
|
||||||
|
@have_content = false
|
||||||
@@must_call_validators = {}
|
|
||||||
|
|
||||||
def self.must_call_validators
|
def self.must_call_validators
|
||||||
@@must_call_validators
|
super.merge(MUST_CALL_VALIDATORS)
|
||||||
end
|
end
|
||||||
|
def self.model
|
||||||
|
MODEL + super
|
||||||
|
end
|
||||||
|
def self.get_attributes
|
||||||
|
GET_ATTRIBUTES + super
|
||||||
|
end
|
||||||
|
def self.have_children_elements
|
||||||
|
HAVE_CHILDREN_ELEMENTS + super
|
||||||
|
end
|
||||||
|
def self.need_initialize_variables
|
||||||
|
NEED_INITIALIZE_VARIABLES + super
|
||||||
|
end
|
||||||
|
def self.plural_forms
|
||||||
|
super.merge(PLURAL_FORMS)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def self.install_must_call_validator(prefix, uri)
|
def self.install_must_call_validator(prefix, uri)
|
||||||
@@must_call_validators[uri] = prefix
|
MUST_CALL_VALIDATORS[uri] = prefix
|
||||||
end
|
|
||||||
|
|
||||||
@@model = []
|
|
||||||
|
|
||||||
def self.model
|
|
||||||
@@model
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.install_model(tag, occurs=nil)
|
def self.install_model(tag, occurs=nil)
|
||||||
if m = @@model.find {|t, o| t == tag}
|
if m = MODEL.find {|t, o| t == tag}
|
||||||
m[1] = occurs
|
m[1] = occurs
|
||||||
else
|
else
|
||||||
@@model << [tag, occurs]
|
MODEL << [tag, occurs]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@get_attributes = []
|
|
||||||
|
|
||||||
def self.get_attributes()
|
|
||||||
@@get_attributes
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.install_get_attribute(name, uri, required=true)
|
def self.install_get_attribute(name, uri, required=true)
|
||||||
attr_writer name
|
attr_writer name
|
||||||
convert_attr_reader name
|
convert_attr_reader name
|
||||||
@@get_attributes << [name, uri, required]
|
GET_ATTRIBUTES << [name, uri, required]
|
||||||
end
|
end
|
||||||
|
|
||||||
@@have_content = false
|
|
||||||
|
|
||||||
def self.content_setup
|
def self.content_setup
|
||||||
attr_writer :content
|
attr_writer :content
|
||||||
convert_attr_reader :content
|
convert_attr_reader :content
|
||||||
def_content_only_to_s
|
def_content_only_to_s
|
||||||
@@have_content = true
|
@have_content = true
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.have_content?
|
def self.have_content?
|
||||||
@@have_content
|
@have_content
|
||||||
end
|
|
||||||
|
|
||||||
@@have_children_elements = []
|
|
||||||
|
|
||||||
def self.have_children_elements
|
|
||||||
@@have_children_elements
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.add_have_children_element(variable_name, plural_name)
|
def self.add_have_children_element(variable_name, plural_name)
|
||||||
@@have_children_elements << [variable_name, plural_name]
|
HAVE_CHILDREN_ELEMENTS << [variable_name, plural_name]
|
||||||
end
|
end
|
||||||
|
|
||||||
@@need_initialize_variables = []
|
|
||||||
|
|
||||||
def self.add_need_initialize_variable(variable_name)
|
def self.add_need_initialize_variable(variable_name)
|
||||||
@@need_initialize_variables << variable_name
|
NEED_INITIALIZE_VARIABLES << variable_name
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.need_initialize_variables
|
|
||||||
@@need_initialize_variables
|
|
||||||
end
|
|
||||||
|
|
||||||
@@plural_forms = {}
|
|
||||||
|
|
||||||
def self.add_plural_form(singular, plural)
|
def self.add_plural_form(singular, plural)
|
||||||
@@plural_forms[singular] = plural
|
PLURAL_FORMS[singular] = plural
|
||||||
end
|
|
||||||
|
|
||||||
def self.plural_forms
|
|
||||||
@@plural_forms
|
|
||||||
end
|
end
|
||||||
|
|
||||||
EOC
|
EOC
|
||||||
|
41
test/rss/test_inherit.rb
Normal file
41
test/rss/test_inherit.rb
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
require "rss-testcase"
|
||||||
|
|
||||||
|
require "rss/1.0"
|
||||||
|
|
||||||
|
module RSS
|
||||||
|
class TestInherit < TestCase
|
||||||
|
|
||||||
|
class InheritedImage < RSS::RDF::Image
|
||||||
|
def self.indent_size; 1; end
|
||||||
|
def self.tag_name; 'image'; end
|
||||||
|
end
|
||||||
|
|
||||||
|
def setup
|
||||||
|
@rss = make_RDF(<<-EOR)
|
||||||
|
#{make_channel}
|
||||||
|
#{make_image}
|
||||||
|
#{make_item}
|
||||||
|
#{make_textinput}
|
||||||
|
EOR
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_inherit
|
||||||
|
rss = RSS::Parser.parse(@rss)
|
||||||
|
orig_image = rss.image
|
||||||
|
prefix = "[INHERIT]"
|
||||||
|
image = InheritedImage.new("#{prefix} #{orig_image.about}")
|
||||||
|
image.title = "#{prefix} #{orig_image.title}"
|
||||||
|
image.url = "#{prefix} #{orig_image.url}"
|
||||||
|
image.link = "#{prefix} #{orig_image.link}"
|
||||||
|
rss.image = image
|
||||||
|
|
||||||
|
new_rss = RSS::Parser.parse(rss.to_s)
|
||||||
|
new_image = new_rss.image
|
||||||
|
assert_equal("#{prefix} #{orig_image.about}", new_image.about)
|
||||||
|
assert_equal("#{prefix} #{orig_image.title}", new_image.title)
|
||||||
|
assert_equal("#{prefix} #{orig_image.url}", new_image.url)
|
||||||
|
assert_equal("#{prefix} #{orig_image.link}", new_image.link)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
@ -3,7 +3,7 @@ require "rss-testcase"
|
|||||||
module RSS
|
module RSS
|
||||||
class TestVersion < TestCase
|
class TestVersion < TestCase
|
||||||
def test_version
|
def test_version
|
||||||
assert_equal("0.1.2", ::RSS::VERSION)
|
assert_equal("0.1.3", ::RSS::VERSION)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user