Object
# File rss/rss.rb, line 420 def get_attributes GET_ATTRIBUTES end
# File rss/rss.rb, line 423 def have_children_elements HAVE_CHILDREN_ELEMENTS end
# File rss/rss.rb, line 437 def inherited(klass) klass.const_set("MUST_CALL_VALIDATORS", {}) klass.const_set("MODELS", []) klass.const_set("GET_ATTRIBUTES", []) klass.const_set("HAVE_CHILDREN_ELEMENTS", []) klass.const_set("TO_ELEMENT_METHODS", []) 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 @have_content = false def self.must_call_validators super.merge(MUST_CALL_VALIDATORS) end def self.models MODELS + super end def self.get_attributes GET_ATTRIBUTES + super end def self.have_children_elements HAVE_CHILDREN_ELEMENTS + super end def self.to_element_methods TO_ELEMENT_METHODS + 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 def self.install_model(tag, uri, occurs=nil, getter=nil) getter ||= tag if m = MODELS.find {|t, u, o, g| t == tag and u == uri} m[2] = occurs else MODELS << [tag, uri, occurs, getter] end end def self.install_get_attribute(name, uri, required=true, type=nil, disp_name=nil, element_name=nil) disp_name ||= name element_name ||= name def_corresponded_attr_writer name, type, disp_name convert_attr_reader name if type == :boolean and /^is/ =~ name alias_method "\#{$POSTMATCH}?", name end GET_ATTRIBUTES << [name, uri, required, element_name] add_need_initialize_variable(disp_name) end def self.def_corresponded_attr_writer(name, type=nil, disp_name=name) case type when :integer integer_writer name, disp_name when :positive_integer positive_integer_writer name, disp_name when :boolean boolean_writer name, disp_name when :w3cdtf, :rfc822, :rfc2822 date_writer name, type, disp_name else attr_writer name end end def self.content_setup(type=nil) def_corresponded_attr_writer "content", type convert_attr_reader :content @have_content = true end def self.have_content? @have_content end def self.add_have_children_element(variable_name, plural_name) HAVE_CHILDREN_ELEMENTS << [variable_name, plural_name] end def self.add_to_element_method(method_name) TO_ELEMENT_METHODS << method_name end def self.add_need_initialize_variable(variable_name) NEED_INITIALIZE_VARIABLES << variable_name end def self.add_plural_form(singular, plural) PLURAL_FORMS[singular] = plural end EOC end
# File rss/rss.rb, line 555 def install_ns(prefix, uri) if self::NSPOOL.has_key?(prefix) raise OverlappedPrefixError.new(prefix) end self::NSPOOL[prefix] = uri end
# File rss/rss.rb, line 414 def must_call_validators MUST_CALL_VALIDATORS end
# File rss/rss.rb, line 429 def need_initialize_variables NEED_INITIALIZE_VARIABLES end
# File rss/rss.rb, line 594 def convert(value) if @converter @converter.convert(value) else value end end
# File rss/rss.rb, line 583 def converter=(converter) @converter = converter targets = children.dup self.class.have_children_elements.each do |variable_name, plural_name| targets.concat(__send__(plural_name)) end targets.each do |target| target.converter = converter unless target.nil? end end
# File rss/rss.rb, line 612 def setup_maker(maker) target = maker_target(maker) unless target.nil? setup_maker_attributes(target) setup_maker_element(target) setup_maker_elements(target) end end
# File rss/rss.rb, line 621 def to_s(need_convert=true, indent='') if self.class.have_content? return "" unless @content rv = tag(indent) do |next_indent| h(@content) end else rv = tag(indent) do |next_indent| self.class.to_element_methods.collect do |method_name| __send__(method_name, false, next_indent) end end end rv = convert(rv) if need_convert rv end