Methods
- #
- A
- C
- D
- E
- F
- G
- H
- I
- M
- N
- P
- R
- S
- T
- V
- X
Included Modules
Constants
INDENT | = | " " |
MUST_CALL_VALIDATORS | = | {} |
MODELS | = | [] |
GET_ATTRIBUTES | = | [] |
HAVE_CHILDREN_ELEMENTS | = | [] |
TO_ELEMENT_METHODS | = | [] |
NEED_INITIALIZE_VARIABLES | = | [] |
PLURAL_FORMS | = | {} |
Attributes
[RW] | do_validate | |
[RW] | parent |
Class Public methods
new(do_validate=true, attrs=nil)
Link
# File ../ruby/lib/rss/rss.rb, line 846 def initialize(do_validate=true, attrs=nil) @parent = nil @converter = nil if attrs.nil? and (do_validate.is_a?(Hash) or do_validate.is_a?(Array)) do_validate, attrs = true, do_validate end @do_validate = do_validate initialize_variables(attrs || {}) end
Instance Public methods
add_have_children_element(variable_name, plural_name)
Link
add_need_initialize_variable(variable_name)
Link
add_plural_form(singular, plural)
Link
add_to_element_method(method_name)
Link
content_setup(type=nil, disp_name=nil)
Link
convert(value)
Link
converter=(converter)
Link
# File ../ruby/lib/rss/rss.rb, line 864 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
def_corresponded_attr_reader(name, type=nil)
Link
# File ../ruby/lib/rss/rss.rb, line 774 def def_corresponded_attr_reader(name, type=nil) case type when :inherit inherit_convert_attr_reader name when :uri uri_convert_attr_reader name when :yes_clean_other yes_clean_other_attr_reader name when :yes_other yes_other_attr_reader name when :csv csv_attr_reader name when :csv_integer csv_attr_reader name, :separator => "," else convert_attr_reader name end end
def_corresponded_attr_writer(name, type=nil, disp_name=nil)
Link
# File ../ruby/lib/rss/rss.rb, line 746 def def_corresponded_attr_writer(name, type=nil, disp_name=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 when :text_type text_type_writer name, disp_name when :content content_writer name, disp_name when :yes_clean_other yes_clean_other_writer name, disp_name when :yes_other yes_other_writer name, disp_name when :csv csv_writer name when :csv_integer csv_integer_writer name else attr_writer name end end
full_name()
Link
get_attributes()
Link
have_children_elements()
Link
have_content?()
Link
have_xml_content?()
Link
inherited(klass)
Link
# File ../ruby/lib/rss/rss.rb, line 703 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", {}) tag_name = klass.name.split(/::/).last tag_name[0, 1] = tag_name[0, 1].downcase klass.instance_variable_set("@tag_name", tag_name) klass.instance_variable_set("@have_content", false) end
inherited_base()
Link
install_get_attribute(name, uri, required=true, type=nil, disp_name=nil, element_name=nil)
Link
# File ../ruby/lib/rss/rss.rb, line 731 def install_get_attribute(name, uri, required=true, type=nil, disp_name=nil, element_name=nil) disp_name ||= name element_name ||= name writer_type, reader_type = type def_corresponded_attr_writer name, writer_type, disp_name def_corresponded_attr_reader name, reader_type if type == :boolean and /^is/ =~ name alias_method "#{$POSTMATCH}?", name end self::GET_ATTRIBUTES << [name, uri, required, element_name] add_need_initialize_variable(disp_name) end
install_model(tag, uri, occurs=nil, getter=nil, plural=false)
Link
install_must_call_validator(prefix, uri)
Link
install_ns(prefix, uri)
Link
models()
Link
must_call_validators()
Link
need_base64_encode?()
Link
need_initialize_variables()
Link
need_parent?()
Link
plural_forms()
Link
required_prefix()
Link
required_uri()
Link
set_next_element(tag_name, next_element)
Link
# File ../ruby/lib/rss/rss.rb, line 933 def set_next_element(tag_name, next_element) klass = next_element.class prefix = "" prefix << "#{klass.required_prefix}_" if klass.required_prefix key = "#{prefix}#{tag_name.gsub(/-/, '_')}" if self.class.plural_forms.has_key?(key) ary = __send__("#{self.class.plural_forms[key]}") ary << next_element else __send__("#{key}=", next_element) end end
tag_name()
Link
to_element_methods()
Link
to_s(need_convert=true, indent='')
Link
# File ../ruby/lib/rss/rss.rb, line 904 def to_s(need_convert=true, indent='') if self.class.have_content? return "" if !empty_content? and !content_is_set? rv = tag(indent) do |next_indent| if empty_content? "" else xmled_content end 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
valid?(ignore_unknown_element=true)
Link
validate(ignore_unknown_element=true)
Link
validate_for_stream(tags, ignore_unknown_element=true)
Link
Instance Protected methods
have_required_elements?()
Link
# File ../ruby/lib/rss/rss.rb, line 947 def have_required_elements? self.class::MODELS.all? do |tag, uri, occurs, getter| if occurs.nil? or occurs == "+" child = __send__(getter) if child.is_a?(Array) children = child children.any? {|c| c.have_required_elements?} else !child.to_s.empty? end else true end end end
Instance Private methods
__validate(ignore_unknown_element, tags=_tags, recursive=true)
Link
# File ../ruby/lib/rss/rss.rb, line 1086 def __validate(ignore_unknown_element, tags=_tags, recursive=true) if recursive children.compact.each do |child| child.validate end end must_call_validators = self.class.must_call_validators tags = tag_filter(tags.dup) p tags if DEBUG must_call_validators.each do |uri, prefix| _validate(ignore_unknown_element, tags[uri], uri) meth = "#{prefix}_validate" if !prefix.empty? and respond_to?(meth, true) __send__(meth, ignore_unknown_element, tags[uri], uri) end end end
_attrs()
Link
_validate(ignore_unknown_element, tags, uri, models=self.class.models)
Link
# File ../ruby/lib/rss/rss.rb, line 1114 def _validate(ignore_unknown_element, tags, uri, models=self.class.models) count = 1 do_redo = false not_shift = false tag = nil models = models.find_all {|model| model[1] == uri} element_names = models.collect {|model| model[0]} if tags tags_size = tags.size tags = tags.sort_by {|x| element_names.index(x) || tags_size} end models.each_with_index do |model, i| name, _, occurs, = model if DEBUG p "before" p tags p model end if not_shift not_shift = false elsif tags tag = tags.shift end if DEBUG p "mid" p count end case occurs when '?' if count > 2 raise TooMuchTagError.new(name, tag_name) else if name == tag do_redo = true else not_shift = true end end when '*' if name == tag do_redo = true else not_shift = true end when '+' if name == tag do_redo = true else if count > 1 not_shift = true else raise MissingTagError.new(name, tag_name) end end else if name == tag if models[i+1] and models[i+1][0] != name and tags and tags.first == name raise TooMuchTagError.new(name, tag_name) end else raise MissingTagError.new(name, tag_name) end end if DEBUG p "after" p not_shift p do_redo p tag end if do_redo do_redo = false count += 1 redo else count = 1 end end if !ignore_unknown_element and !tags.nil? and !tags.empty? raise NotExpectedTagError.new(tags.first, uri, tag_name) end end
calc_indent()
Link
For backward compatibility
children()
Link
collect_attrs()
Link
# File ../ruby/lib/rss/rss.rb, line 1032 def collect_attrs attrs = {} _attrs.each do |name, required, alias_name| value = __send__(alias_name || name) return nil if required and value.nil? next if value.nil? return nil if attrs.has_key?(name) attrs[name] = value end attrs end
content_is_set?()
Link
empty_content?()
Link
initialize_have_children_elements()
Link
initialize_variables(attrs)
Link
# File ../ruby/lib/rss/rss.rb, line 964 def initialize_variables(attrs) normalized_attrs = {} attrs.each do |key, value| normalized_attrs[key.to_s] = value end self.class.need_initialize_variables.each do |variable_name| value = normalized_attrs[variable_name.to_s] if value __send__("#{variable_name}=", value) else instance_variable_set("@#{variable_name}", nil) end end initialize_have_children_elements @content = normalized_attrs["content"] if self.class.have_content? end
make_start_tag(indent, next_indent, attrs)
Link
tag(indent, additional_attrs={}, &block)
Link
# File ../ruby/lib/rss/rss.rb, line 987 def tag(indent, additional_attrs={}, &block) next_indent = indent + INDENT attrs = collect_attrs return "" if attrs.nil? return "" unless have_required_elements? attrs.update(additional_attrs) start_tag = make_start_tag(indent, next_indent, attrs.dup) if block content = block.call(next_indent) else content = [] end if content.is_a?(String) content = [content] start_tag << ">" end_tag = "</#{full_name}>" else content = content.reject{|x| x.empty?} if content.empty? return "" if attrs.empty? end_tag = "/>" else start_tag << ">\n" end_tag = "\n#{indent}</#{full_name}>" end end start_tag + content.join("\n") + end_tag end
tag_filter(tags)
Link
tag_name_with_prefix(prefix)
Link
validate_attribute()
Link
# File ../ruby/lib/rss/rss.rb, line 1104 def validate_attribute _attrs.each do |a_name, required, alias_name| value = instance_variable_get("@#{alias_name || a_name}") if required and value.nil? raise MissingAttributeError.new(tag_name, a_name) end __send__("#{alias_name || a_name}=", value) end end