Class: SubtitleIt::Subtime
- Inherits:
-
Object
- Object
- SubtitleIt::Subtime
- Includes:
- Comparable
- Defined in:
- lib/subtitle_it/subtime.rb
Instance Attribute Summary collapse
-
#hrs ⇒ Object
Returns the value of attribute hrs.
-
#min ⇒ Object
Returns the value of attribute min.
-
#ms ⇒ Object
Returns the value of attribute ms.
-
#sec ⇒ Object
Returns the value of attribute sec.
Instance Method Summary collapse
- #+(other) ⇒ Object
- #-(other) ⇒ Object
- #<=>(other) ⇒ Object
-
#initialize(data) ⇒ Subtime
constructor
A new instance of Subtime.
-
#parse_data(data) ⇒ Object
parses string like ‘00:00:00,000’ or single number as ms.
-
#to_i ⇒ Object
return time as a total in ms.
-
#to_s(sep = '.') ⇒ Object
to_s(separator) => to_s(“,”) => 00:00:00,000.
Constructor Details
#initialize(data) ⇒ Subtime
Returns a new instance of Subtime.
7 8 9 10 |
# File 'lib/subtitle_it/subtime.rb', line 7 def initialize(data) raise if data == nil parse_data(data) end |
Instance Attribute Details
#hrs ⇒ Object
Returns the value of attribute hrs.
5 6 7 |
# File 'lib/subtitle_it/subtime.rb', line 5 def hrs @hrs end |
#min ⇒ Object
Returns the value of attribute min.
5 6 7 |
# File 'lib/subtitle_it/subtime.rb', line 5 def min @min end |
#ms ⇒ Object
Returns the value of attribute ms.
5 6 7 |
# File 'lib/subtitle_it/subtime.rb', line 5 def ms @ms end |
#sec ⇒ Object
Returns the value of attribute sec.
5 6 7 |
# File 'lib/subtitle_it/subtime.rb', line 5 def sec @sec end |
Instance Method Details
#+(other) ⇒ Object
36 |
# File 'lib/subtitle_it/subtime.rb', line 36 def +(other); Subtime.new(self.to_i + other.to_i); end |
#-(other) ⇒ Object
37 |
# File 'lib/subtitle_it/subtime.rb', line 37 def -(other); Subtime.new(self.to_i - other.to_i); end |
#<=>(other) ⇒ Object
38 |
# File 'lib/subtitle_it/subtime.rb', line 38 def <=>(other); self.to_i <=> other.to_i; end |
#parse_data(data) ⇒ Object
parses string like ‘00:00:00,000’ or single number as ms.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/subtitle_it/subtime.rb', line 13 def parse_data(data) case data when Numeric @sec, @ms = data.divmod(1000) @min, @sec = @sec.divmod(60) @hrs, @min = @min.divmod(60) when String time, float = data.split(/\.|\,/) time = time.split(/:/).map { |s| s.to_i } @ms = (("0.%d" % float.to_i).to_f * 1000).to_i if float @sec, @min, @hrs = time.reverse else raise "Format unknown." end #FIXME: dunno what to do about this.. nil = problems with to_i @hrs ||= 0; @min ||= 0; @sec ||= 0; @ms ||= 0 end |
#to_i ⇒ Object
return time as a total in ms
34 |
# File 'lib/subtitle_it/subtime.rb', line 34 def to_i; ( @hrs * 3600 + @min * 60 + @sec ) * 1000 + @ms; end |
#to_s(sep = '.') ⇒ Object
to_s(separator) => to_s(“,”) => 00:00:00,000
31 |
# File 'lib/subtitle_it/subtime.rb', line 31 def to_s(sep='.'); "%02d:%02d:%02d#{sep}%03d" % [@hrs, @min, @sec, @ms]; end |