Class: Subber::File::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/subber/file/base.rb

Direct Known Subclasses

Srt, Vtt

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(subtitles: nil) ⇒ Base

Returns a new instance of Base.

Parameters:



43
44
45
# File 'lib/subber/file/base.rb', line 43

def initialize(subtitles: nil)
  @subtitles = subtitles
end

Class Attribute Details

.formatter_klassObject (readonly)

Returns the value of attribute formatter_klass.



7
8
9
# File 'lib/subber/file/base.rb', line 7

def formatter_klass
  @formatter_klass
end

.parser_klassObject (readonly)

Returns the value of attribute parser_klass.



6
7
8
# File 'lib/subber/file/base.rb', line 6

def parser_klass
  @parser_klass
end

Instance Attribute Details

#subtitlesObject (readonly)

Returns the value of attribute subtitles.



38
39
40
# File 'lib/subber/file/base.rb', line 38

def subtitles
  @subtitles
end

Class Method Details

.formatter(value = nil) ⇒ Object

Parameters:

  • value (Class) (defaults to: nil)

    class to be used as formatter



17
18
19
# File 'lib/subber/file/base.rb', line 17

def formatter(value = nil)
  @formatter_klass = value unless value.nil?
end

.from_content(content) ⇒ Subber::File::Base

Parameters:

  • content (String)

Returns:



24
25
26
27
# File 'lib/subber/file/base.rb', line 24

def from_content(content)
  subtitles = parser_klass.parse(content)
  new(subtitles: subtitles)
end

.from_path(path) ⇒ Subber::File::Base

Parameters:

  • path (String)

Returns:



32
33
34
35
# File 'lib/subber/file/base.rb', line 32

def from_path(path)
  content = open(path).read
  from_content(content)
end

.parser(value = nil) ⇒ Object

Parameters:

  • value (Class) (defaults to: nil)

    class to be used as parser



11
12
13
# File 'lib/subber/file/base.rb', line 11

def parser(value = nil)
  @parser_klass = value unless value.nil?
end

Instance Method Details

#contentString

Returns:

  • (String)


49
50
51
# File 'lib/subber/file/base.rb', line 49

def content
  @content ||= formatter.format(subtitles)
end

#export(path) ⇒ Object

Parameters:

  • path (String)

    Remote or local file path



55
56
57
# File 'lib/subber/file/base.rb', line 55

def export(path)
  File.write(path, content)
end

#shift(ms) ⇒ Subber::File::Base

Return a new copy with shifted subtitles

Parameters:

  • ms (Integer)

    Can be both positive and negative

Returns:



62
63
64
65
# File 'lib/subber/file/base.rb', line 62

def shift(ms)
  new_subtitles = subtitles.map { |subtitle| subtitle.shift(ms) }
  self.class.new(subtitles: new_subtitles)
end

#shift!(ms) ⇒ Object

mutates the current file’s subtitles

Parameters:

  • ms (Integer)

    Can be both positive and negative



70
71
72
# File 'lib/subber/file/base.rb', line 70

def shift!(ms)
  subtitles.each { |subtitle| subtitle.shift!(ms) }
end