class RSS::ITunesItemModel::ITunesDuration - rss: Ruby Standard Library Documentation

# class RSS::ITunesItemModel::ITunesDuration

### Attributes

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

### Public Class Methods

construct(hours, minutes, seconds) click to toggle source

    # File rss-0.3.1/lib/rss/itunes.rb, line 358
    def construct(hours, minutes, seconds)
      components = [minutes, seconds]
      if components.include?(nil)
        nil
      else
        components.unshift(hours) if hours and hours > 0
        components.collect do |component|
          "%02d" % component
        end.join(':')
      end
    end

new(*args) click to toggle source
Calls superclass method

    # File rss-0.3.1/lib/rss/itunes.rb, line 384
    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 rss-0.3.1/lib/rss/itunes.rb, line 334
    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|
                              \d+
                            )\z/x !~ duration
        raise ArgumentError,
                "must be one of HH:MM:SS, H:MM:SS, MM:SS, M:SS, S+: " +
                duration.inspect
      end

      if duration.include?(':')
        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
      else
        seconds_to_components(duration.to_i)
      end
    end

required_prefix() click to toggle source

    # File rss-0.3.1/lib/rss/itunes.rb, line 326
    def required_prefix
      ITUNES_PREFIX
    end

required_uri() click to toggle source

    # File rss-0.3.1/lib/rss/itunes.rb, line 330
    def required_uri
      ITUNES_URI
    end

### Private Class Methods

seconds_to_components(total_seconds) click to toggle source

    # File rss-0.3.1/lib/rss/itunes.rb, line 371
    def seconds_to_components(total_seconds)
      hours = total_seconds / (60 * 60)
      minutes = (total_seconds / 60) % 60
      seconds = total_seconds % 60
      [hours, minutes, seconds]
    end

### Public Instance Methods

content=(value) click to toggle source

    # File rss-0.3.1/lib/rss/itunes.rb, line 405
    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 rss-0.3.1/lib/rss/itunes.rb, line 439
    def full_name
      tag_name_with_prefix(ITUNES_PREFIX)
    end

hour=(hour) click to toggle source

    # File rss-0.3.1/lib/rss/itunes.rb, line 421
    def hour=(hour)
      @hour = @do_validate ? Integer(hour) : hour.to_i
      update_content
      hour
    end

minute=(minute) click to toggle source

    # File rss-0.3.1/lib/rss/itunes.rb, line 427
    def minute=(minute)
      @minute = @do_validate ? Integer(minute) : minute.to_i
      update_content
      minute
    end

second=(second) click to toggle source

    # File rss-0.3.1/lib/rss/itunes.rb, line 433
    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 rss-0.3.1/lib/rss/itunes.rb, line 448
    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 rss-0.3.1/lib/rss/itunes.rb, line 456
    def setup_maker_element(duration)
      super(duration)
      duration.content = @content
    end

update_content() click to toggle source

    # File rss-0.3.1/lib/rss/itunes.rb, line 444
    def update_content
      @content = self.class.construct(hour, minute, second)
    end