class RSS::ITunesItemModel::ITunesDuration

Attributes

hour[R]
minute[R]
second[R]

Public Class Methods

construct(hour, minute, second) click to toggle source
# File lib/rss/itunes.rb, line 297
def construct(hour, minute, second)
  components = [minute, second]
  if components.include?(nil)
    nil
  else
    components.unshift(hour) if hour and hour > 0
    components.collect do |component|
      "%02d" % component
    end.join(":")
  end
end
new(*args) click to toggle source
Calls superclass method
# File lib/rss/itunes.rb, line 315
def initialize(*args)
  if Utils.element_initialize_arguments?(args)
    super
  else
    super()
    args = args[0] if args.size == 1 and args[0].is_a?(Array)
    if args.size == 1
      self.content = args[0]
    elsif args.size > 3
      raise ArgumentError,
              "must be (do_validate, params), (content), " +
              "(minute, second), ([minute, second]), "  +
              "(hour, minute, second) or ([hour, minute, second]): " +
              args.inspect
    else
      @second, @minute, @hour = args.reverse
      update_content
    end
  end
end
parse(duration, do_validate=true) click to toggle source
# File lib/rss/itunes.rb, line 277
def parse(duration, do_validate=true)
  if do_validate and /\A(?:
                          \d?\d:[0-5]\d:[0-5]\d|
                          [0-5]?\d:[0-5]\d
                        )\z/x !~ duration
    raise ArgumentError,
            "must be one of HH:MM:SS, H:MM:SS, MM::SS, M:SS: " +
            duration.inspect
  end

  components = duration.split(':')
  components[3..-1] = nil if components.size > 3

  components.unshift("00") until components.size == 3

  components.collect do |component|
    component.to_i
  end
end
required_prefix() click to toggle source
# File lib/rss/itunes.rb, line 269
def required_prefix
  ITUNES_PREFIX
end
required_uri() click to toggle source
# File lib/rss/itunes.rb, line 273
def required_uri
  ITUNES_URI
end

Public Instance Methods

content=(value) click to toggle source
# File lib/rss/itunes.rb, line 336
def content=(value)
  if value.nil?
    @content = nil
  elsif value.is_a?(self.class)
    self.content = value.content
  else
    begin
      @hour, @minute, @second = self.class.parse(value, @do_validate)
    rescue ArgumentError
      raise NotAvailableValueError.new(tag_name, value)
    end
    @content = value
  end
end
Also aliased as: value=
full_name() click to toggle source
# File lib/rss/itunes.rb, line 370
def full_name
  tag_name_with_prefix(ITUNES_PREFIX)
end
hour=(hour) click to toggle source
# File lib/rss/itunes.rb, line 352
def hour=(hour)
  @hour = @do_validate ? Integer(hour) : hour.to_i
  update_content
  hour
end
minute=(minute) click to toggle source
# File lib/rss/itunes.rb, line 358
def minute=(minute)
  @minute = @do_validate ? Integer(minute) : minute.to_i
  update_content
  minute
end
second=(second) click to toggle source
# File lib/rss/itunes.rb, line 364
def second=(second)
  @second = @do_validate ? Integer(second) : second.to_i
  update_content
  second
end
value=(value)
Alias for: content=

Private Instance Methods

maker_target(target) click to toggle source
# File lib/rss/itunes.rb, line 379
def maker_target(target)
  if @content
    target.itunes_duration {|duration| duration}
  else
    nil
  end
end
setup_maker_element(duration) click to toggle source
Calls superclass method
# File lib/rss/itunes.rb, line 387
def setup_maker_element(duration)
  super(duration)
  duration.content = @content
end
update_content() click to toggle source
# File lib/rss/itunes.rb, line 375
def update_content
  @content = self.class.construct(hour, minute, second)
end