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, ITunesItemModel::ITunesImage, 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, 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.
874
875
876
877
878
879
880
881
882
|
# File 'lib/rss/rss.rb', line 874
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.
872
873
874
|
# File 'lib/rss/rss.rb', line 872
def do_validate
@do_validate
end
|
#parent ⇒ Object
Returns the value of attribute parent.
872
873
874
|
# File 'lib/rss/rss.rb', line 872
def parent
@parent
end
|
Class Method Details
.add_have_children_element(variable_name, plural_name) ⇒ Object
832
833
834
|
# File 'lib/rss/rss.rb', line 832
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
840
841
842
|
# File 'lib/rss/rss.rb', line 840
def add_need_initialize_variable(variable_name)
self::NEED_INITIALIZE_VARIABLES << variable_name
end
|
844
845
846
|
# File 'lib/rss/rss.rb', line 844
def add_plural_form(singular, plural)
self::PLURAL_FORMS[singular] = plural
end
|
.add_to_element_method(method_name) ⇒ Object
836
837
838
|
# File 'lib/rss/rss.rb', line 836
def add_to_element_method(method_name)
self::TO_ELEMENT_METHODS << method_name
end
|
.content_setup(type = nil, disp_name = nil) ⇒ Object
821
822
823
824
825
826
|
# File 'lib/rss/rss.rb', line 821
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
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
|
# File 'lib/rss/rss.rb', line 802
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 :explicit_clean_other
explicit_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
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
|
# File 'lib/rss/rss.rb', line 770
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 :explicit_clean_other
explicit_clean_other_writer name, disp_name
when :yes_other
yes_other_writer name, disp_name
when :csv
csv_writer name, disp_name
when :csv_integer
csv_integer_writer name, disp_name
when :itunes_episode
itunes_episode_writer name, disp_name
when :itunes_episode_type
itunes_episode_type_writer name, disp_name
else
attr_writer name
end
end
|
.get_attributes ⇒ Object
707
708
709
|
# File 'lib/rss/rss.rb', line 707
def get_attributes
inherited_array_reader("GET_ATTRIBUTES")
end
|
.have_children_elements ⇒ Object
710
711
712
|
# File 'lib/rss/rss.rb', line 710
def have_children_elements
inherited_array_reader("HAVE_CHILDREN_ELEMENTS")
end
|
.have_content? ⇒ Boolean
828
829
830
|
# File 'lib/rss/rss.rb', line 828
def have_content?
@have_content
end
|
.inherited(klass) ⇒ Object
727
728
729
730
731
732
733
734
735
736
737
738
739
740
|
# File 'lib/rss/rss.rb', line 727
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
723
724
725
|
# File 'lib/rss/rss.rb', line 723
def inherited_base
::RSS::Element
end
|
.install_get_attribute(name, uri, required = true, type = nil, disp_name = nil, element_name = nil) ⇒ Object
755
756
757
758
759
760
761
762
763
764
765
766
767
768
|
# File 'lib/rss/rss.rb', line 755
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 /\Ais/ =~ 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
746
747
748
749
750
751
752
753
|
# File 'lib/rss/rss.rb', line 746
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
742
743
744
|
# File 'lib/rss/rss.rb', line 742
def install_must_call_validator(prefix, uri)
self::MUST_CALL_VALIDATORS[uri] = prefix
end
|
.install_ns(prefix, uri) ⇒ Object
860
861
862
863
864
865
|
# File 'lib/rss/rss.rb', line 860
def install_ns(prefix, uri)
if self::NSPOOL.has_key?(prefix)
raise OverlappedPrefixError.new(prefix)
end
self::NSPOOL[prefix] = uri
end
|
.models ⇒ Object
704
705
706
|
# File 'lib/rss/rss.rb', line 704
def models
inherited_array_reader("MODELS")
end
|
.must_call_validators ⇒ Object
701
702
703
|
# File 'lib/rss/rss.rb', line 701
def must_call_validators
inherited_hash_reader("MUST_CALL_VALIDATORS")
end
|
.need_initialize_variables ⇒ Object
716
717
718
|
# File 'lib/rss/rss.rb', line 716
def need_initialize_variables
inherited_array_reader("NEED_INITIALIZE_VARIABLES")
end
|
.need_parent? ⇒ Boolean
856
857
858
|
# File 'lib/rss/rss.rb', line 856
def need_parent?
false
end
|
719
720
721
|
# File 'lib/rss/rss.rb', line 719
def plural_forms
inherited_hash_reader("PLURAL_FORMS")
end
|
.required_prefix ⇒ Object
848
849
850
|
# File 'lib/rss/rss.rb', line 848
def required_prefix
nil
end
|
.required_uri ⇒ Object
852
853
854
|
# File 'lib/rss/rss.rb', line 852
def required_uri
""
end
|
.tag_name ⇒ Object
867
868
869
|
# File 'lib/rss/rss.rb', line 867
def tag_name
@tag_name
end
|
.to_element_methods ⇒ Object
713
714
715
|
# File 'lib/rss/rss.rb', line 713
def to_element_methods
inherited_array_reader("TO_ELEMENT_METHODS")
end
|
Instance Method Details
#convert(value) ⇒ Object
903
904
905
906
907
908
909
|
# File 'lib/rss/rss.rb', line 903
def convert(value)
if @converter
@converter.convert(value)
else
value
end
end
|
#converter=(converter) ⇒ Object
892
893
894
895
896
897
898
899
900
901
|
# File 'lib/rss/rss.rb', line 892
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
888
889
890
|
# File 'lib/rss/rss.rb', line 888
def full_name
tag_name
end
|
#have_xml_content? ⇒ Boolean
953
954
955
|
# File 'lib/rss/rss.rb', line 953
def have_xml_content?
false
end
|
#need_base64_encode? ⇒ Boolean
957
958
959
|
# File 'lib/rss/rss.rb', line 957
def need_base64_encode?
false
end
|
#set_next_element(tag_name, next_element) ⇒ Object
961
962
963
964
965
966
967
968
969
970
971
972
|
# File 'lib/rss/rss.rb', line 961
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
884
885
886
|
# File 'lib/rss/rss.rb', line 884
def tag_name
self.class.tag_name
end
|
#to_s(need_convert = true, indent = '') ⇒ Object
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
|
# File 'lib/rss/rss.rb', line 932
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
911
912
913
914
915
916
|
# File 'lib/rss/rss.rb', line 911
def valid?(ignore_unknown_element=true)
validate(ignore_unknown_element)
true
rescue RSS::Error
false
end
|
#validate(ignore_unknown_element = true) ⇒ Object
918
919
920
921
922
923
924
925
|
# File 'lib/rss/rss.rb', line 918
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
927
928
929
930
|
# File 'lib/rss/rss.rb', line 927
def validate_for_stream(tags, ignore_unknown_element=true)
validate_attribute
__validate(ignore_unknown_element, tags, false)
end
|