Class: RSS::Element
Direct Known Subclasses
Atom::Entry, Atom::Feed, Atom::Feed::Author, Atom::Feed::Category, Atom::Feed::Contributor, Atom::Feed::Entry, Atom::Feed::Entry::Content, Atom::Feed::Entry::Published, Atom::Feed::Entry::Source, Atom::Feed::Entry::Summary, Atom::Feed::Generator, Atom::Feed::Icon, Atom::Feed::Id, Atom::Feed::Link, Atom::Feed::Logo, Atom::Feed::Rights, Atom::Feed::Subtitle, Atom::Feed::Title, Atom::Feed::Updated, Atom::PersonConstruct::Email, Atom::PersonConstruct::Name, Atom::PersonConstruct::Uri, ITunesChannelModel::ITunesCategory, ITunesChannelModel::ITunesImage, ITunesChannelModel::ITunesOwner, ITunesItemModel::ITunesDuration, ImageFaviconModel::ImageFavicon, ImageItemModel::ImageItem, RDF, RDF::Bag, RDF::Channel, RDF::Channel::Image, RDF::Channel::Items, RDF::Channel::Textinput, RDF::Image, RDF::Item, RDF::Li, RDF::Seq, RDF::Textinput, Rss, Rss::Channel, Rss::Channel::Cloud, Rss::Channel::Image, Rss::Channel::Item, Rss::Channel::Item::Category, Rss::Channel::Item::Enclosure, Rss::Channel::Item::Guid, Rss::Channel::Item::Source, Rss::Channel::SkipDays, Rss::Channel::SkipDays::Day, Rss::Channel::SkipHours, Rss::Channel::SkipHours::Hour, Rss::Channel::TextInput, TaxonomyTopicModel::TaxonomyTopic, TaxonomyTopicsModel::TaxonomyTopics, TrackBackModel10::TrackBackAbout, TrackBackModel10::TrackBackPing, TrackBackModel20::TrackBackAbout, TrackBackModel20::TrackBackPing
Constant Summary
collapse
- INDENT =
" "
- MUST_CALL_VALIDATORS =
{}
- MODELS =
[]
- GET_ATTRIBUTES =
[]
- HAVE_CHILDREN_ELEMENTS =
[]
- TO_ELEMENT_METHODS =
[]
- NEED_INITIALIZE_VARIABLES =
[]
- PLURAL_FORMS =
{}
Instance Attribute Summary collapse
Class Method Summary
collapse
-
.add_have_children_element(variable_name, plural_name) ⇒ Object
-
.add_need_initialize_variable(variable_name) ⇒ Object
-
.add_plural_form(singular, plural) ⇒ Object
-
.add_to_element_method(method_name) ⇒ Object
-
.content_setup(type = nil, disp_name = nil) ⇒ Object
-
.def_corresponded_attr_reader(name, type = nil) ⇒ Object
-
.def_corresponded_attr_writer(name, type = nil, disp_name = nil) ⇒ Object
-
.get_attributes ⇒ Object
-
.have_children_elements ⇒ Object
-
.have_content? ⇒ Boolean
-
.inherited(klass) ⇒ Object
-
.inherited_base ⇒ Object
-
.install_get_attribute(name, uri, required = true, type = nil, disp_name = nil, element_name = nil) ⇒ Object
-
.install_model(tag, uri, occurs = nil, getter = nil, plural = false) ⇒ Object
-
.install_must_call_validator(prefix, uri) ⇒ Object
-
.install_ns(prefix, uri) ⇒ Object
-
.models ⇒ Object
-
.must_call_validators ⇒ Object
-
.need_initialize_variables ⇒ Object
-
.need_parent? ⇒ Boolean
-
.plural_forms ⇒ Object
-
.required_prefix ⇒ Object
-
.required_uri ⇒ Object
-
.tag_name ⇒ Object
-
.to_element_methods ⇒ Object
Instance Method Summary
collapse
Methods included from BaseModel
install_date_element, install_have_child_element, install_have_children_element, install_text_element
Methods included from Utils
element_initialize_arguments?, get_file_and_line_from_caller, html_escape, new_with_value_if_need, to_class_name
inherited_array_reader, inherited_hash_reader, inherited_reader
Methods included from SetupMaker
#setup_maker
Constructor Details
#initialize(do_validate = true, attrs = nil) ⇒ Element
Returns a new instance of Element.
857
858
859
860
861
862
863
864
865
|
# File 'lib/rss/rss.rb', line 857
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 Attribute Details
#do_validate ⇒ Object
Returns the value of attribute do_validate.
855
856
857
|
# File 'lib/rss/rss.rb', line 855
def do_validate
@do_validate
end
|
#parent ⇒ Object
Returns the value of attribute parent.
855
856
857
|
# File 'lib/rss/rss.rb', line 855
def parent
@parent
end
|
Class Method Details
.add_have_children_element(variable_name, plural_name) ⇒ Object
815
816
817
|
# File 'lib/rss/rss.rb', line 815
def add_have_children_element(variable_name, plural_name)
self::HAVE_CHILDREN_ELEMENTS << [variable_name, plural_name]
end
|
.add_need_initialize_variable(variable_name) ⇒ Object
823
824
825
|
# File 'lib/rss/rss.rb', line 823
def add_need_initialize_variable(variable_name)
self::NEED_INITIALIZE_VARIABLES << variable_name
end
|
827
828
829
|
# File 'lib/rss/rss.rb', line 827
def add_plural_form(singular, plural)
self::PLURAL_FORMS[singular] = plural
end
|
.add_to_element_method(method_name) ⇒ Object
819
820
821
|
# File 'lib/rss/rss.rb', line 819
def add_to_element_method(method_name)
self::TO_ELEMENT_METHODS << method_name
end
|
.content_setup(type = nil, disp_name = nil) ⇒ Object
804
805
806
807
808
809
|
# File 'lib/rss/rss.rb', line 804
def content_setup(type=nil, disp_name=nil)
writer_type, reader_type = type
def_corresponded_attr_writer :content, writer_type, disp_name
def_corresponded_attr_reader :content, reader_type
@have_content = true
end
|
.def_corresponded_attr_reader(name, type = nil) ⇒ Object
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
|
# File 'lib/rss/rss.rb', line 785
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) ⇒ Object
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
|
# File 'lib/rss/rss.rb', line 757
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
|
.get_attributes ⇒ Object
694
695
696
|
# File 'lib/rss/rss.rb', line 694
def get_attributes
inherited_array_reader("GET_ATTRIBUTES")
end
|
.have_children_elements ⇒ Object
697
698
699
|
# File 'lib/rss/rss.rb', line 697
def have_children_elements
inherited_array_reader("HAVE_CHILDREN_ELEMENTS")
end
|
.have_content? ⇒ Boolean
811
812
813
|
# File 'lib/rss/rss.rb', line 811
def have_content?
@have_content
end
|
.inherited(klass) ⇒ Object
714
715
716
717
718
719
720
721
722
723
724
725
726
727
|
# File 'lib/rss/rss.rb', line 714
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 ⇒ Object
710
711
712
|
# File 'lib/rss/rss.rb', line 710
def inherited_base
::RSS::Element
end
|
.install_get_attribute(name, uri, required = true, type = nil, disp_name = nil, element_name = nil) ⇒ Object
742
743
744
745
746
747
748
749
750
751
752
753
754
755
|
# File 'lib/rss/rss.rb', line 742
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) ⇒ Object
733
734
735
736
737
738
739
740
|
# File 'lib/rss/rss.rb', line 733
def install_model(tag, uri, occurs=nil, getter=nil, plural=false)
getter ||= tag
if m = self::MODELS.find {|t, u, o, g, p| t == tag and u == uri}
m[2] = occurs
else
self::MODELS << [tag, uri, occurs, getter, plural]
end
end
|
.install_must_call_validator(prefix, uri) ⇒ Object
729
730
731
|
# File 'lib/rss/rss.rb', line 729
def install_must_call_validator(prefix, uri)
self::MUST_CALL_VALIDATORS[uri] = prefix
end
|
.install_ns(prefix, uri) ⇒ Object
843
844
845
846
847
848
|
# File 'lib/rss/rss.rb', line 843
def install_ns(prefix, uri)
if self::NSPOOL.has_key?(prefix)
raise OverlappedPrefixError.new(prefix)
end
self::NSPOOL[prefix] = uri
end
|
.models ⇒ Object
691
692
693
|
# File 'lib/rss/rss.rb', line 691
def models
inherited_array_reader("MODELS")
end
|
.must_call_validators ⇒ Object
688
689
690
|
# File 'lib/rss/rss.rb', line 688
def must_call_validators
inherited_hash_reader("MUST_CALL_VALIDATORS")
end
|
.need_initialize_variables ⇒ Object
703
704
705
|
# File 'lib/rss/rss.rb', line 703
def need_initialize_variables
inherited_array_reader("NEED_INITIALIZE_VARIABLES")
end
|
.need_parent? ⇒ Boolean
839
840
841
|
# File 'lib/rss/rss.rb', line 839
def need_parent?
false
end
|
706
707
708
|
# File 'lib/rss/rss.rb', line 706
def plural_forms
inherited_hash_reader("PLURAL_FORMS")
end
|
.required_prefix ⇒ Object
831
832
833
|
# File 'lib/rss/rss.rb', line 831
def required_prefix
nil
end
|
.required_uri ⇒ Object
835
836
837
|
# File 'lib/rss/rss.rb', line 835
def required_uri
""
end
|
.tag_name ⇒ Object
850
851
852
|
# File 'lib/rss/rss.rb', line 850
def tag_name
@tag_name
end
|
.to_element_methods ⇒ Object
700
701
702
|
# File 'lib/rss/rss.rb', line 700
def to_element_methods
inherited_array_reader("TO_ELEMENT_METHODS")
end
|
Instance Method Details
#convert(value) ⇒ Object
886
887
888
889
890
891
892
|
# File 'lib/rss/rss.rb', line 886
def convert(value)
if @converter
@converter.convert(value)
else
value
end
end
|
#converter=(converter) ⇒ Object
875
876
877
878
879
880
881
882
883
884
|
# File 'lib/rss/rss.rb', line 875
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
|
#full_name ⇒ Object
871
872
873
|
# File 'lib/rss/rss.rb', line 871
def full_name
tag_name
end
|
#have_xml_content? ⇒ Boolean
936
937
938
|
# File 'lib/rss/rss.rb', line 936
def have_xml_content?
false
end
|
#need_base64_encode? ⇒ Boolean
940
941
942
|
# File 'lib/rss/rss.rb', line 940
def need_base64_encode?
false
end
|
#set_next_element(tag_name, next_element) ⇒ Object
944
945
946
947
948
949
950
951
952
953
954
955
|
# File 'lib/rss/rss.rb', line 944
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 ⇒ Object
867
868
869
|
# File 'lib/rss/rss.rb', line 867
def tag_name
self.class.tag_name
end
|
#to_s(need_convert = true, indent = '') ⇒ Object
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
|
# File 'lib/rss/rss.rb', line 915
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) ⇒ Boolean
894
895
896
897
898
899
|
# File 'lib/rss/rss.rb', line 894
def valid?(ignore_unknown_element=true)
validate(ignore_unknown_element)
true
rescue RSS::Error
false
end
|
#validate(ignore_unknown_element = true) ⇒ Object
901
902
903
904
905
906
907
908
|
# File 'lib/rss/rss.rb', line 901
def validate(ignore_unknown_element=true)
do_validate = @do_validate
@do_validate = true
validate_attribute
__validate(ignore_unknown_element)
ensure
@do_validate = do_validate
end
|
#validate_for_stream(tags, ignore_unknown_element = true) ⇒ Object
910
911
912
913
|
# File 'lib/rss/rss.rb', line 910
def validate_for_stream(tags, ignore_unknown_element=true)
validate_attribute
__validate(ignore_unknown_element, tags, false)
end
|