1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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:
kou 2005-01-15 04:46:20 +00:00
parent c853ea40c3
commit e1e5eda547
5 changed files with 114 additions and 50 deletions

View file

@ -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>
* object.c (rb_class_superclass): superclass of singleton class also

View file

@ -21,17 +21,17 @@ module RSS
subclass.module_eval(<<-EOEOC, __FILE__, __LINE__)
def self.other_elements
const_get("OTHER_ELEMENTS") + super
OTHER_ELEMENTS + super
end
def self.need_initialize_variables
const_get("NEED_INITIALIZE_VARIABLES") + super
NEED_INITIALIZE_VARIABLES + super
end
EOEOC
end
def self.add_other_element(variable_name)
const_get("OTHER_ELEMENTS") << variable_name
OTHER_ELEMENTS << variable_name
end
def self.other_elements
@ -39,7 +39,7 @@ module RSS
end
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
def self.need_initialize_variables

View file

@ -58,7 +58,7 @@ require "rss/xml-stylesheet"
module RSS
VERSION = "0.1.2"
VERSION = "0.1.3"
URI = "http://purl.org/rss/1.0/"
@ -355,93 +355,110 @@ EOC
INDENT = " "
MUST_CALL_VALIDATORS = {}
MODEL = []
GET_ATTRIBUTES = []
HAVE_CHILDREN_ELEMENTS = []
NEED_INITIALIZE_VARIABLES = []
PLURAL_FORMS = {}
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)
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)
public
@tag_name = name.split(/::/).last
@tag_name[0,1] = @tag_name[0,1].downcase
@indent_size = name.split(/::/).size - 2
@@must_call_validators = {}
@have_content = false
def self.must_call_validators
@@must_call_validators
super.merge(MUST_CALL_VALIDATORS)
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)
@@must_call_validators[uri] = prefix
end
@@model = []
def self.model
@@model
MUST_CALL_VALIDATORS[uri] = prefix
end
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
else
@@model << [tag, occurs]
MODEL << [tag, occurs]
end
end
@@get_attributes = []
def self.get_attributes()
@@get_attributes
end
def self.install_get_attribute(name, uri, required=true)
attr_writer name
convert_attr_reader name
@@get_attributes << [name, uri, required]
GET_ATTRIBUTES << [name, uri, required]
end
@@have_content = false
def self.content_setup
attr_writer :content
convert_attr_reader :content
def_content_only_to_s
@@have_content = true
@have_content = true
end
def self.have_content?
@@have_content
end
@@have_children_elements = []
def self.have_children_elements
@@have_children_elements
@have_content
end
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
@@need_initialize_variables = []
def self.add_need_initialize_variable(variable_name)
@@need_initialize_variables << variable_name
NEED_INITIALIZE_VARIABLES << variable_name
end
def self.need_initialize_variables
@@need_initialize_variables
end
@@plural_forms = {}
def self.add_plural_form(singular, plural)
@@plural_forms[singular] = plural
end
def self.plural_forms
@@plural_forms
PLURAL_FORMS[singular] = plural
end
EOC

41
test/rss/test_inherit.rb Normal file
View 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

View file

@ -3,7 +3,7 @@ require "rss-testcase"
module RSS
class TestVersion < TestCase
def test_version
assert_equal("0.1.2", ::RSS::VERSION)
assert_equal("0.1.3", ::RSS::VERSION)
end
end
end