class RSS::BaseListener

Public Class Methods

available_tags(uri) click to toggle source

return the tag_names for setters associated with uri

# File lib/rss/parser.rb, line 215
def available_tags(uri)
  (@@accessor_bases[uri] || {}).keys
end
class_name(uri, tag_name) click to toggle source

retrieve class_name for the supplied uri and tag_name If it doesn't exist, capitalize the tag_name

# File lib/rss/parser.rb, line 238
def class_name(uri, tag_name)
  name = (@@class_names[uri] || {})[tag_name]
  return name if name

  tag_name = tag_name.gsub(/[_\-]([a-z]?)/) {$1.upcase}
  tag_name[0, 1].upcase + tag_name[1..-1]
end
getter(uri, tag_name) click to toggle source
# File lib/rss/parser.rb, line 210
def getter(uri, tag_name)
  (@@accessor_bases[uri] || {})[tag_name]
end
install_class_name(uri, tag_name, class_name) click to toggle source

record class_name for the supplied uri and tag_name

# File lib/rss/parser.rb, line 231
def install_class_name(uri, tag_name, class_name)
  @@class_names[uri] ||= {}
  @@class_names[uri][tag_name] = class_name
end
install_get_text_element(uri, name, accessor_base) click to toggle source
# File lib/rss/parser.rb, line 246
def install_get_text_element(uri, name, accessor_base)
  install_accessor_base(uri, name, accessor_base)
  def_get_text_element(uri, name, *get_file_and_line_from_caller(1))
end
raise_for_undefined_entity?() click to toggle source
# File lib/rss/parser.rb, line 251
def raise_for_undefined_entity?
  true
end
register_uri(uri, name) click to toggle source

register uri against this name.

# File lib/rss/parser.rb, line 220
def register_uri(uri, name)
  @@registered_uris[name] ||= {}
  @@registered_uris[name][uri] = nil
end
setter(uri, tag_name) click to toggle source

return the setter for the uri, tag_name pair, or nil.

# File lib/rss/parser.rb, line 201
def setter(uri, tag_name)
  _getter = getter(uri, tag_name)
  if _getter
    "#{_getter}="
  else
    nil
  end
end
uri_registered?(uri, name) click to toggle source

test if this uri is registered against this name

# File lib/rss/parser.rb, line 226
def uri_registered?(uri, name)
  @@registered_uris[name].has_key?(uri)
end

Private Class Methods

def_get_text_element(uri, element_name, file, line) click to toggle source
# File lib/rss/parser.rb, line 262
def def_get_text_element(uri, element_name, file, line)
  register_uri(uri, element_name)
  method_name = "start_#{element_name}"
  unless private_method_defined?(method_name)
    define_method(method_name) do |name, prefix, attrs, ns|
      uri = _ns(ns, prefix)
      if self.class.uri_registered?(uri, element_name)
        start_get_text_element(name, prefix, ns, uri)
      else
        start_else_element(name, prefix, attrs, ns)
      end
    end
    private(method_name)
  end
end
install_accessor_base(uri, tag_name, accessor_base) click to toggle source

set the accessor for the uri, tag_name pair

# File lib/rss/parser.rb, line 257
def install_accessor_base(uri, tag_name, accessor_base)
  @@accessor_bases[uri] ||= {}
  @@accessor_bases[uri][tag_name] = accessor_base.chomp("=")
end