nofxx-subtitle_it 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -40,4 +40,8 @@
40
40
 
41
41
  * 2 major enhancement
42
42
  * Support multiple file downloads
43
- * subtitle_it worker code rewritten
43
+ * subtitle_it worker code rewritten
44
+
45
+ == 0.7.6 2008-09-17
46
+ * 1 major enhancement:
47
+ * Fixes a bug (platform dependent end-of-line)
@@ -8,7 +8,7 @@ module SubtitleIt
8
8
  content = File.open(file, 'r')
9
9
  STDOUT.puts "Working on file #{file}..."
10
10
  sub = Subtitle.new({ :dump => content, :format => Bin.get_extension(file) })
11
- dump = sub.send :"to_#{format}"
11
+ dump = sub.send :"to_#{format}"
12
12
  Bin::write_out(Bin.swap_extension(file, format), dump)
13
13
  end
14
14
  end
@@ -58,7 +58,6 @@ module SubtitleIt
58
58
  end
59
59
 
60
60
  class Bin
61
-
62
61
  def Bin.run! argv, format=nil, force=false, delay=nil
63
62
  raise unless argv
64
63
  @force = force
@@ -94,6 +93,13 @@ module SubtitleIt
94
93
  file.split(".").last
95
94
  end
96
95
 
96
+ def Bin.get_enc_platform(filename)
97
+ raise unless File.exist?(filename)
98
+ File.open(filename, 'r') do |fd|
99
+ fd.gets =~ /\r\n/ ? "WIN" : "UNIX"
100
+ end
101
+ end
102
+
97
103
  def Bin.swap_extension(file,extension)
98
104
  f = file.dup
99
105
  f[-3..-1] = extension
@@ -109,4 +115,4 @@ module SubtitleIt
109
115
  end
110
116
  end
111
117
  end
112
- end
118
+ end
@@ -2,14 +2,12 @@
2
2
  # ASS - http://en.wikipedia.org/wiki/SubStation_Alpha
3
3
  # http://www.malakith.net/aegiwiki/ASS
4
4
  #
5
- module SubtitleIt
6
- module Formats
7
- def parse_ass
5
+ module Formats
6
+ def parse_ass
8
7
 
9
- end
10
-
11
- #not mine!
12
- def to_ass
13
- end
14
8
  end
15
- end
9
+
10
+ #not mine!
11
+ def to_ass
12
+ end
13
+ end
@@ -5,24 +5,25 @@
5
5
  #
6
6
  # Where N is sec * 10
7
7
  #
8
- module SubtitleIt
9
- module Formats
10
- def parse_mpl
11
- @raw.to_a.inject([]) do |i,l|
12
- line_data = l.scan(/^\[([0-9]{1,})\]\[([0-9]{1,})\](.+)$/)
13
- line_data = line_data.at 0
14
- time_on, time_off, text = line_data
15
- time_on, time_off = [time_on.to_i, time_off.to_i].map { |t| t.to_i * 1000 }
16
- i << Subline.new(time_on, time_off, text.chomp)
17
- end
8
+ module Formats
9
+ include PlatformEndLine
10
+ def parse_mpl
11
+ @raw.to_a.inject([]) do |i,l|
12
+ line_data = l.scan(/^\[([0-9]{1,})\]\[([0-9]{1,})\](.+)$/)
13
+ line_data = line_data.at 0
14
+ time_on, time_off, text = line_data
15
+ time_on, time_off = [time_on.to_i, time_off.to_i].map { |t| t.to_i * 1000 }
16
+ i << Subline.new(time_on, time_off, text.chomp)
18
17
  end
19
-
20
- def to_mpl
21
- @lines.inject([]) do |i,l|
22
- start = l.time_on.to_i / 100
23
- stop = l.time_off.to_i / 100
24
- i << "[%d][%d]%s" % [start, stop, l.text]
25
- end.join("\n")
26
- end
27
- end
28
- end
18
+ end
19
+
20
+ def to_mpl
21
+ endl = endline( @raw )
22
+ line_ary = []
23
+ @lines.each do |l|
24
+ start, stop = [l.time_on, l.time_off].map { |val| val.to_i / 100 }
25
+ line_ary << "[%d][%d]%s" % [start, stop, l.text]
26
+ end
27
+ return line_ary.join( endl ) + endl
28
+ end
29
+ end
@@ -8,25 +8,30 @@
8
8
  #
9
9
  # Where N is the seconds to last.
10
10
  #
11
- module SubtitleIt
12
- module Formats
13
- def parse_rsb
14
- inn = @raw.to_a
15
- @title = inn.delete_at(0).split(':')[1]
16
- @authors = inn.delete_at(0).split(':')[1]
17
- @version = inn.delete_at(0).split(':')[1]
18
- inn.inject([]) do |final,line|
19
- time_on,time_off = line.split('=>').map { |t| t.strip }
20
- text = line.split('==')[1].strip
21
- final << Subline.new(time_on, time_off, text)
22
- end
11
+ module Formats
12
+ include PlatformEndLine
13
+ def parse_rsb
14
+ inn = @raw.to_a
15
+ @title = inn.delete_at(0).split(':')[1]
16
+ @authors = inn.delete_at(0).split(':')[1]
17
+ @version = inn.delete_at(0).split(':')[1]
18
+ inn.inject([]) do |final,line|
19
+ time_on,time_off = line.split('=>').map { |t| t.strip }
20
+ text = line.split('==')[1].strip
21
+ final << Subline.new(time_on, time_off, text)
23
22
  end
24
-
25
- def to_rsb
26
- out = "- title: #{@title}\n- authors: #{@authors}\n- version: #{@version}\n"
27
- out << @lines.inject([]) do |i,l|
28
- i << "%s => %s == %s" % [l.time_on.to_s, l.time_off.to_s, l.text]
29
- end.join("\n")
30
- end
31
23
  end
32
- end
24
+
25
+ def to_rsb
26
+ endl = endline( @raw )
27
+ out = ["- title: #{@title}", "- authors: #{@authors}", "- version: #{@version}"]
28
+ @lines.each do |l|
29
+ out << "%s => %s == %s" % [l.time_on.to_s, l.time_off.to_s, l.text]
30
+ end
31
+ return out.join( endl ) + endl
32
+ #out = "- title: #{@title}\n- authors: #{@authors}\n- version: #{@version}\n"
33
+ #out << @lines.inject([]) do |i,l|
34
+ # i << "%s => %s == %s" % [l.time_on.to_s, l.time_off.to_s, l.text]
35
+ #end.join("\n")
36
+ end
37
+ end
@@ -8,29 +8,30 @@
8
8
  #
9
9
  # Where N is the sub index number
10
10
  #
11
- module SubtitleIt
12
- module Formats
13
- def parse_srt
14
- @raw.split(/\n\n/).inject([]) do |final,line|
15
- line = line.split(/\n/)
16
- line.delete_at(0)
17
- time_on,time_off = line[0].split('-->').map { |t| t.strip }
18
- line.delete_at(0)
19
- text = line.join("|")
20
- final << Subline.new(time_on, time_off, text)
21
- end
11
+ module Formats
12
+ include PlatformEndLine
13
+ def parse_srt
14
+ endl = endline( @raw )
15
+ @raw.split( endl*2 ).inject([]) do |final,line|
16
+ line = line.split(endl)
17
+ line.delete_at(0)
18
+ time_on,time_off = line[0].split('-->').map { |t| t.strip }
19
+ line.delete_at(0)
20
+ text = line.join("|")
21
+ final << Subline.new(time_on, time_off, text)
22
22
  end
23
-
24
- def to_srt
25
- out = []
26
- @lines.each_with_index do |l,i|
27
- out << "#{i+1}"
28
- out << "%s --> %s" % [l.time_on.to_s(','), l.time_off.to_s(',')]
29
- out << l.text.gsub("|","\n") + "\n"
30
- end
31
- out.join("\n")
32
- end
33
23
  end
24
+
25
+ def to_srt
26
+ endl = endline( @raw )
27
+ out = []
28
+ @lines.each_with_index do |l,i|
29
+ out << "#{i+1}"
30
+ out << "%s --> %s" % [l.time_on.to_s(','), l.time_off.to_s(',')]
31
+ out << l.text.gsub("|", endl) + endl
32
+ end
33
+ out.join( endl )
34
+ end
34
35
  end
35
36
 
36
37
  #looks like subrip accepts some styling:
@@ -41,4 +42,4 @@ end
41
42
  # sdict.add(new StyledFormat(UNDERLINE, "u", true));
42
43
  # sdict.add(new StyledFormat(UNDERLINE, "/u", false));
43
44
  # sdict.add(new StyledFormat(STRIKETHROUGH, "s", true));
44
- # sdict.add(new StyledFormat(STRIKETHROUGH, "/s", false));
45
+ # sdict.add(new StyledFormat(STRIKETHROUGH, "/s", false));
@@ -15,33 +15,35 @@
15
15
  #
16
16
  # parts of the code from 'simplesubtitler' from Marcin (tiraeth) Chwedziak
17
17
  #
18
- module SubtitleIt
19
- module Formats
20
- #between our formats, what changes can be reduced to a value
21
- def ratio
22
- 1
18
+ module Formats
19
+ include PlatformEndLine
20
+ #between our formats, what changes can be reduced to a value
21
+ def ratio
22
+ 1
23
+ end
24
+
25
+ def parse_sub
26
+ @raw.to_a.inject([]) do |i,l|
27
+ line_data = l.scan(/^\{([0-9]{1,})\}\{([0-9]{1,})\}(.+)$/)
28
+ line_data = line_data.at 0
29
+ time_on, time_off, text = line_data
30
+ time_on, time_off = [time_on.to_i, time_off.to_i].map do |t|
31
+ (t.to_i / @fps * 1000 / ratio).to_i
32
+ end
33
+ i << Subline.new(time_on, time_off, text.chomp)
23
34
  end
24
-
25
- def parse_sub
26
- @raw.to_a.inject([]) do |i,l|
27
- line_data = l.scan(/^\{([0-9]{1,})\}\{([0-9]{1,})\}(.+)$/)
28
- line_data = line_data.at 0
29
- time_on, time_off, text = line_data
30
- time_on, time_off = [time_on.to_i, time_off.to_i].map do |t|
31
- (t.to_i / @fps * 1000 / ratio).to_i
32
- end
33
- i << Subline.new(time_on, time_off, text.chomp)
34
- end
35
+ end
36
+
37
+ def to_sub
38
+ endl = endline( @raw )
39
+ line_ary = []
40
+ @lines.each do |l|
41
+ line_ary << "{%d}{%d}%s" % [parse_time(l.time_on), parse_time(l.time_off), l.text]
35
42
  end
36
-
37
- def to_sub
38
- @lines.inject([]) do |i,l|
39
- i << "{%d}{%d}%s" % [parse_time(l.time_on), parse_time(l.time_off), l.text]
40
- end.join("\r\n")
41
- end
42
-
43
- def parse_time(n)
44
- n.to_i / 1000 * @fps * ratio
45
- end
46
- end
47
- end
43
+ return line_ary.join( endl ) + endl
44
+ end
45
+
46
+ def parse_time(n)
47
+ n.to_i / 1000 * @fps * ratio
48
+ end
49
+ end
@@ -20,34 +20,37 @@
20
20
  # </body>
21
21
  #</tt>
22
22
  require 'hpricot'
23
- module SubtitleIt
24
- module Formats
25
-
26
- def parse_xml
27
- final = []
28
- doc = Hpricot.XML(@raw)
29
- (doc/'tt'/'p').each do |line|
30
- time_on = line[:begin]
31
- time_off = line[:dur]
32
- text = line.innerHTML
33
- final << Subline.new(time_on,time_off,text)
34
- end
35
- final
23
+ module Formats
24
+ include PlatformEndLine
25
+
26
+ def parse_xml
27
+ final = []
28
+ doc = Hpricot.XML(@raw)
29
+ (doc/'tt'/'p').each do |line|
30
+ time_on, time_off = ['begin', 'dur'].map { |str| line[str.to_sym] }
31
+ text = line.innerHTML
32
+ final << Subline.new(time_on,time_off,text)
36
33
  end
37
-
38
- def xml_lines
39
- @lines.inject([]) do |i,l|
40
- toff = l.time_off - l.time_on
41
- i << " <p begin=\"#{l.time_on}\" dur=\"#{toff}\">#{l.text}</p>"
42
- end.join("\n")
34
+ return final
35
+ end
36
+
37
+ def xml_lines
38
+ endl = endline( @raw )
39
+ line_ary = []
40
+ @lines.each do |l|
41
+ toff = l.time_off - l.time_on
42
+ line_ary << " <p begin=\"#{l.time_on}\" dur=\"#{toff}\">#{l.text}</p>"
43
43
  end
44
-
45
- def to_xml
46
- out = <<XML
44
+ return line_ary.join( endl ) + endl
45
+ end
46
+
47
+ def to_xml
48
+ endl = endline( @raw )
49
+ out = <<XML
47
50
  <?xml version="1.0" encoding="UTF-8"?>
48
51
  <tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1" xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
49
52
  <head>
50
- <styling>#{@style + "\n" if @style}
53
+ <styling>#{@style + endl if @style}
51
54
  </styling>
52
55
  </head>
53
56
  <body>
@@ -57,7 +60,6 @@ module SubtitleIt
57
60
  </body>
58
61
  </tt>
59
62
  XML
60
- out.chomp
61
- end
62
- end
63
- end
63
+ out.chomp
64
+ end
65
+ end
@@ -2,19 +2,17 @@
2
2
  # YML Dump
3
3
  #
4
4
  require 'yaml'
5
- module SubtitleIt
6
- module Formats
7
- def parse_yml
8
- @yaml = YAML::load(@raw)
9
- header = @yaml.delete('header')
10
- @title = header['title']
11
- @author = header['authors']
12
- @version = header['version']
13
- @yaml['lines'].map { |l| Subline.new(l[0], l[1], l[2]) }
14
- end
15
-
16
- def to_yml
17
- YAML.dump(self)
18
- end
5
+ module Formats
6
+ def parse_yml
7
+ @yaml = YAML::load(@raw)
8
+ header = @yaml.delete('header')
9
+ @title = header['title']
10
+ @author = header['authors']
11
+ @version = header['version']
12
+ @yaml['lines'].map { |l| Subline.new(l[0], l[1], l[2]) }
19
13
  end
20
- end
14
+
15
+ def to_yml
16
+ YAML.dump(self)
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ module PlatformEndLine
2
+ def platform( raw )
3
+ raw =~ /\r\n/ ? "WIN" : "UNIX"
4
+ end
5
+ def endline( raw )
6
+ platform( raw ) == "WIN" ? "\r\n" : "\n"
7
+ end
8
+ end
9
+
@@ -6,7 +6,6 @@ require 'subtitle_it/formats/xml'
6
6
  require 'subtitle_it/formats/mpl'
7
7
 
8
8
  module SubtitleIt
9
- include Formats
10
9
 
11
10
  MOVIE_EXTS = %w(3g2 3gp 3gp2 3gpp 60d ajp asf asx avchd avi bik bix box cam dat divx dmf dv dvr-ms evo flc fli flic flv flx gvi gvp h264 m1v m2p m2ts m2v m4e m4v mjp mjpeg mjpg mkv moov mov movhd movie movx mp4 mpe mpeg mpg mpv mpv2 mxf nsv nut ogg ogm omf ps qt ram rm rmvb swf ts vfw vid video viv vivo vob vro wm wmv wmx wrap wvx wx x264 xvid)
12
11
  SUB_EXTS = %w(srt sub smi txt ssa ass mpl xml yml rsb)
@@ -17,6 +16,7 @@ module SubtitleIt
17
16
  }
18
17
 
19
18
  class Subtitle
19
+ include Formats
20
20
  attr_reader :id, :raw, :format, :lines, :style, :info, :filename, :rating
21
21
 
22
22
  def initialize(args = {})
@@ -64,4 +64,4 @@ module SubtitleIt
64
64
  @lines = lines
65
65
  end
66
66
  end
67
- end
67
+ end
@@ -2,7 +2,7 @@ module SubtitleIt
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 7
5
- TINY = 5
5
+ TINY = 6
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/subtitle_it.rb CHANGED
@@ -4,6 +4,7 @@ require 'rubygems'
4
4
  require 'subtitle_it/version'
5
5
  require 'subtitle_it/subtime'
6
6
  require 'subtitle_it/subline'
7
+ require 'subtitle_it/platform_endl'
7
8
  require 'subtitle_it/subtitle'
8
9
  require 'subtitle_it/subdown'
9
10
  require 'subtitle_it/substyle'
@@ -17,4 +18,4 @@ class Numeric
17
18
  def reduce
18
19
  self / ( 10 ** Math::log10(self).to_i)
19
20
  end
20
- end
21
+ end
data/subtitle_it.gemspec CHANGED
@@ -1,16 +1,16 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{subtitle_it}
3
- s.version = "0.7.5"
3
+ s.version = "0.7.6"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
- s.authors = ["Marcos Piccinini", "Warlley Rezende"]
7
- s.date = %q{2008-09-13}
6
+ s.authors = ["Marcos Piccinini", "Warlley Rezende", "Giovanni Rapagnani"]
7
+ s.date = %q{2008-09-17}
8
8
  s.default_executable = %q{subtitle_it}
9
9
  s.description = %q{description of gem}
10
10
  s.email = ["x@nofxx.com"]
11
11
  s.executables = ["subtitle_it"]
12
12
  s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "README.txt", "README.markdown"]
13
- s.files = [".autotest", "History.txt", "License.txt", "Manifest.txt", "README.markdown", "README.txt", "Rakefile", "bin/subtitle_it", "config/hoe.rb", "config/requirements.rb", "lib/subtitle_it.rb", "lib/subtitle_it/bin.rb", "lib/subtitle_it/fixes.rb", "lib/subtitle_it/formats/ass.rb", "lib/subtitle_it/formats/mpl.rb", "lib/subtitle_it/formats/rsb.rb", "lib/subtitle_it/formats/srt.rb", "lib/subtitle_it/formats/sub.rb", "lib/subtitle_it/formats/xml.rb", "lib/subtitle_it/formats/yml.rb", "lib/subtitle_it/generator.rb", "lib/subtitle_it/movie.rb", "lib/subtitle_it/movie_hasher.rb", "lib/subtitle_it/subdown.rb", "lib/subtitle_it/subline.rb", "lib/subtitle_it/substyle.rb", "lib/subtitle_it/subtime.rb", "lib/subtitle_it/subtitle.rb", "lib/subtitle_it/version.rb", "script/console", "script/destroy", "script/generate", "script/txt2html", "setup.rb", "spec/fixtures/godfather.srt", "spec/fixtures/huge.ass", "spec/fixtures/movie.xml", "spec/fixtures/movie.yml", "spec/fixtures/pseudo.rsb", "spec/fixtures/pulpfiction.sub", "spec/fixtures/puplfiction.mpl", "spec/fixtures/sincity.yml", "spec/spec.opts", "spec/spec_helper.rb", "spec/subtitle_it/bin_spec.rb", "spec/subtitle_it/fixes_spec.rb", "spec/subtitle_it/formats/ass_spec.rb", "spec/subtitle_it/formats/mpl_spec.rb", "spec/subtitle_it/formats/rsb_spec.rb", "spec/subtitle_it/formats/srt_spec.rb", "spec/subtitle_it/formats/sub_spec.rb", "spec/subtitle_it/formats/xml_spec.rb", "spec/subtitle_it/formats/yml_spec.rb", "spec/subtitle_it/generator_spec.rb", "spec/subtitle_it/movie_hasher_spec.rb", "spec/subtitle_it/movie_spec.rb", "spec/subtitle_it/subdown_spec.rb", "spec/subtitle_it/subline_spec.rb", "spec/subtitle_it/substyle_spec.rb", "spec/subtitle_it/subtime_spec.rb", "spec/subtitle_it/subtitle_spec.rb", "spec/subtitle_it_spec.rb", "subtitle_it.gemspec", "tasks/deployment.rake", "tasks/environment.rake", "tasks/rspec.rake"]
13
+ s.files = [".autotest", "History.txt", "License.txt", "Manifest.txt", "README.markdown", "README.txt", "Rakefile", "bin/subtitle_it", "config/hoe.rb", "config/requirements.rb", "lib/subtitle_it.rb", "lib/subtitle_it/bin.rb", "lib/subtitle_it/fixes.rb", "lib/subtitle_it/formats/ass.rb", "lib/subtitle_it/formats/mpl.rb", "lib/subtitle_it/formats/rsb.rb", "lib/subtitle_it/formats/srt.rb", "lib/subtitle_it/formats/sub.rb", "lib/subtitle_it/formats/xml.rb", "lib/subtitle_it/formats/yml.rb", "lib/subtitle_it/generator.rb", "lib/subtitle_it/movie.rb", "lib/subtitle_it/movie_hasher.rb", "lib/subtitle_it/subdown.rb", "lib/subtitle_it/subline.rb", "lib/subtitle_it/substyle.rb", "lib/subtitle_it/subtime.rb", "lib/subtitle_it/platform_endl.rb", "lib/subtitle_it/subtitle.rb", "lib/subtitle_it/version.rb", "script/console", "script/destroy", "script/generate", "script/txt2html", "setup.rb", "spec/fixtures/godfather.srt", "spec/fixtures/huge.ass", "spec/fixtures/movie.xml", "spec/fixtures/movie.yml", "spec/fixtures/pseudo.rsb", "spec/fixtures/pulpfiction.sub", "spec/fixtures/puplfiction.mpl", "spec/fixtures/sincity.yml", "spec/spec.opts", "spec/spec_helper.rb", "spec/subtitle_it/bin_spec.rb", "spec/subtitle_it/fixes_spec.rb", "spec/subtitle_it/formats/ass_spec.rb", "spec/subtitle_it/formats/mpl_spec.rb", "spec/subtitle_it/formats/rsb_spec.rb", "spec/subtitle_it/formats/srt_spec.rb", "spec/subtitle_it/formats/sub_spec.rb", "spec/subtitle_it/formats/xml_spec.rb", "spec/subtitle_it/formats/yml_spec.rb", "spec/subtitle_it/generator_spec.rb", "spec/subtitle_it/movie_hasher_spec.rb", "spec/subtitle_it/movie_spec.rb", "spec/subtitle_it/subdown_spec.rb", "spec/subtitle_it/subline_spec.rb", "spec/subtitle_it/substyle_spec.rb", "spec/subtitle_it/subtime_spec.rb", "spec/subtitle_it/subtitle_spec.rb", "spec/subtitle_it_spec.rb", "subtitle_it.gemspec", "tasks/deployment.rake", "tasks/environment.rake", "tasks/rspec.rake"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://github.com/nofxx/subtitle_it}
16
16
  s.post_install_message = %q{
@@ -38,4 +38,4 @@ For more information on subtitle_it, see http://github.com/nofxx/subtitle_it
38
38
  else
39
39
  s.add_dependency(%q<hoe>, [">= 1.7.0"])
40
40
  end
41
- end
41
+ end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nofxx-subtitle_it
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.5
4
+ version: 0.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcos Piccinini
8
8
  - Warlley Rezende
9
+ - Giovanni Rapagnani
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
13
 
13
- date: 2008-09-13 00:00:00 -07:00
14
+ date: 2008-09-17 00:00:00 -07:00
14
15
  default_executable: subtitle_it
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
@@ -72,6 +73,7 @@ files:
72
73
  - lib/subtitle_it/subline.rb
73
74
  - lib/subtitle_it/substyle.rb
74
75
  - lib/subtitle_it/subtime.rb
76
+ - lib/subtitle_it/platform_endl.rb
75
77
  - lib/subtitle_it/subtitle.rb
76
78
  - lib/subtitle_it/version.rb
77
79
  - script/console