Class: RSS::Element
- Inherits:
-
Object
- Object
- RSS::Element
- Extended by:
- BaseModel
- Includes:
- Utils
- Defined in:
- lib/rss/rss.rb
Direct Known Subclasses
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
-
#do_validate ⇒ Object
Returns the value of attribute do_validate.
Class Method Summary collapse
- .get_attributes ⇒ Object
- .have_children_elements ⇒ Object
- .inherited(klass) ⇒ Object
- .install_ns(prefix, uri) ⇒ Object
- .models ⇒ Object
- .must_call_validators ⇒ Object
- .need_initialize_variables ⇒ Object
- .plural_forms ⇒ Object
- .required_prefix ⇒ Object
- .required_uri ⇒ Object
- .tag_name ⇒ Object
- .to_element_methods ⇒ Object
Instance Method Summary collapse
- #convert(value) ⇒ Object
- #converter=(converter) ⇒ Object
- #full_name ⇒ Object
-
#initialize(do_validate = true, attrs = {}) ⇒ Element
constructor
A new instance of Element.
- #setup_maker(maker) ⇒ Object
- #tag_name ⇒ Object
- #to_s(need_convert = true, indent = '') ⇒ Object
- #validate(ignore_unknown_element = true) ⇒ Object
- #validate_for_stream(tags, ignore_unknown_element = true) ⇒ Object
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
Constructor Details
#initialize(do_validate = true, attrs = {}) ⇒ Element
Returns a new instance of Element.
569 570 571 572 573 |
# File 'lib/rss/rss.rb', line 569 def initialize(do_validate=true, attrs={}) @converter = nil @do_validate = do_validate initialize_variables(attrs) end |
Instance Attribute Details
#do_validate ⇒ Object
Returns the value of attribute do_validate.
567 568 569 |
# File 'lib/rss/rss.rb', line 567 def do_validate @do_validate end |
Class Method Details
.get_attributes ⇒ Object
420 421 422 |
# File 'lib/rss/rss.rb', line 420 def get_attributes GET_ATTRIBUTES end |
.have_children_elements ⇒ Object
423 424 425 |
# File 'lib/rss/rss.rb', line 423 def have_children_elements HAVE_CHILDREN_ELEMENTS end |
.inherited(klass) ⇒ Object
437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 |
# File 'lib/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 |
.install_ns(prefix, uri) ⇒ Object
555 556 557 558 559 560 |
# File 'lib/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 |
.models ⇒ Object
417 418 419 |
# File 'lib/rss/rss.rb', line 417 def models MODELS end |
.must_call_validators ⇒ Object
414 415 416 |
# File 'lib/rss/rss.rb', line 414 def must_call_validators MUST_CALL_VALIDATORS end |
.need_initialize_variables ⇒ Object
429 430 431 |
# File 'lib/rss/rss.rb', line 429 def need_initialize_variables NEED_INITIALIZE_VARIABLES end |
.plural_forms ⇒ Object
432 433 434 |
# File 'lib/rss/rss.rb', line 432 def plural_forms PLURAL_FORMS end |
.required_prefix ⇒ Object
547 548 549 |
# File 'lib/rss/rss.rb', line 547 def required_prefix nil end |
.required_uri ⇒ Object
551 552 553 |
# File 'lib/rss/rss.rb', line 551 def required_uri "" end |
.tag_name ⇒ Object
562 563 564 |
# File 'lib/rss/rss.rb', line 562 def tag_name @tag_name end |
.to_element_methods ⇒ Object
426 427 428 |
# File 'lib/rss/rss.rb', line 426 def to_element_methods TO_ELEMENT_METHODS end |
Instance Method Details
#convert(value) ⇒ Object
594 595 596 597 598 599 600 |
# File 'lib/rss/rss.rb', line 594 def convert(value) if @converter @converter.convert(value) else value end end |
#converter=(converter) ⇒ Object
583 584 585 586 587 588 589 590 591 592 |
# File 'lib/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 |
#full_name ⇒ Object
579 580 581 |
# File 'lib/rss/rss.rb', line 579 def full_name tag_name end |
#setup_maker(maker) ⇒ Object
612 613 614 615 616 617 618 619 |
# File 'lib/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 |
#tag_name ⇒ Object
575 576 577 |
# File 'lib/rss/rss.rb', line 575 def tag_name self.class.tag_name end |
#to_s(need_convert = true, indent = '') ⇒ Object
621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 |
# File 'lib/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 |
#validate(ignore_unknown_element = true) ⇒ Object
602 603 604 605 |
# File 'lib/rss/rss.rb', line 602 def validate(ignore_unknown_element=true) validate_attribute __validate(ignore_unknown_element) end |
#validate_for_stream(tags, ignore_unknown_element = true) ⇒ Object
607 608 609 610 |
# File 'lib/rss/rss.rb', line 607 def validate_for_stream(, ignore_unknown_element=true) validate_attribute __validate(ignore_unknown_element, , false) end |