Class RSS::ITunesItemModel::ITunesDuration
In: lib/rss/itunes.rb
Parent: Element

Methods

Included Modules

RSS09

External Aliases

content -> value

Attributes

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

Public Class methods

[Source]

     # File lib/rss/itunes.rb, line 294
294:         def construct(hour, minute, second)
295:           components = [minute, second]
296:           if components.include?(nil)
297:             nil
298:           else
299:             components.unshift(hour) if hour and hour > 0
300:             components.collect do |component|
301:               "%02d" % component
302:             end.join(":")
303:           end
304:         end

[Source]

     # File lib/rss/itunes.rb, line 312
312:       def initialize(*args)
313:         if Utils.element_initialize_arguments?(args)
314:           super
315:         else
316:           super()
317:           args = args[0] if args.size == 1 and args[0].is_a?(Array)
318:           if args.size == 1
319:             self.content = args[0]
320:           elsif args.size > 3
321:             raise ArgumentError,
322:                     "must be (do_validate, params), (content), " +
323:                     "(minute, second), ([minute, second]), "  +
324:                     "(hour, minute, second) or ([hour, minute, second]): " +
325:                     args.inspect
326:           else
327:             @second, @minute, @hour = args.reverse
328:             update_content
329:           end
330:         end
331:       end

[Source]

     # File lib/rss/itunes.rb, line 274
274:         def parse(duration, do_validate=true)
275:           if do_validate and /\A(?:
276:                                   \d?\d:[0-5]\d:[0-5]\d|
277:                                   [0-5]?\d:[0-5]\d
278:                                 )\z/x !~ duration
279:             raise ArgumentError,
280:                     "must be one of HH:MM:SS, H:MM:SS, MM::SS, M:SS: " +
281:                     duration.inspect
282:           end
283: 
284:           components = duration.split(':')
285:           components[3..-1] = nil if components.size > 3
286: 
287:           components.unshift("00") until components.size == 3
288: 
289:           components.collect do |component|
290:             component.to_i
291:           end
292:         end

[Source]

     # File lib/rss/itunes.rb, line 266
266:         def required_prefix
267:           ITUNES_PREFIX
268:         end

[Source]

     # File lib/rss/itunes.rb, line 270
270:         def required_uri
271:           ITUNES_URI
272:         end

Public Instance methods

[Source]

     # File lib/rss/itunes.rb, line 333
333:       def content=(value)
334:         if value.nil?
335:           @content = nil
336:         elsif value.is_a?(self.class)
337:           self.content = value.content
338:         else
339:           begin
340:             @hour, @minute, @second = self.class.parse(value, @do_validate)
341:           rescue ArgumentError
342:             raise NotAvailableValueError.new(tag_name, value)
343:           end
344:           @content = value
345:         end
346:       end

[Source]

     # File lib/rss/itunes.rb, line 367
367:       def full_name
368:         tag_name_with_prefix(ITUNES_PREFIX)
369:       end

[Source]

     # File lib/rss/itunes.rb, line 349
349:       def hour=(hour)
350:         @hour = @do_validate ? Integer(hour) : hour.to_i
351:         update_content
352:         hour
353:       end

[Source]

     # File lib/rss/itunes.rb, line 355
355:       def minute=(minute)
356:         @minute = @do_validate ? Integer(minute) : minute.to_i
357:         update_content
358:         minute
359:       end

[Source]

     # File lib/rss/itunes.rb, line 361
361:       def second=(second)
362:         @second = @do_validate ? Integer(second) : second.to_i
363:         update_content
364:         second
365:       end
value=(value)

Alias for content=

Private Instance methods

[Source]

     # File lib/rss/itunes.rb, line 376
376:       def maker_target(target)
377:         if @content
378:           target.itunes_duration {|duration| duration}
379:         else
380:           nil
381:         end
382:       end

[Source]

     # File lib/rss/itunes.rb, line 384
384:       def setup_maker_element(duration)
385:         super(duration)
386:         duration.content = @content
387:       end

[Source]

     # File lib/rss/itunes.rb, line 372
372:       def update_content
373:         @content = self.class.construct(hour, minute, second)
374:       end

[Validate]