vtt2ass 0.2.13 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/doc/_index.html CHANGED
@@ -109,6 +109,19 @@
109
109
  </ul>
110
110
 
111
111
 
112
+ <ul id="alpha_M" class="alpha">
113
+ <li class="letter">M</li>
114
+ <ul>
115
+
116
+ <li>
117
+ <span class='object_link'><a href="MainCommand.html" title="MainCommand (class)">MainCommand</a></span>
118
+
119
+ </li>
120
+
121
+ </ul>
122
+ </ul>
123
+
124
+
112
125
  <ul id="alpha_V" class="alpha">
113
126
  <li class="letter">V</li>
114
127
  <ul>
@@ -140,9 +153,9 @@
140
153
  </div>
141
154
 
142
155
  <div id="footer">
143
- Generated on Tue Mar 23 21:07:01 2021 by
156
+ Generated on Mon Nov 22 21:50:10 2021 by
144
157
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
145
- 0.9.26 (ruby-3.0.0).
158
+ 0.9.26 (ruby-3.0.2).
146
159
  </div>
147
160
 
148
161
  </div>
data/doc/class_list.html CHANGED
@@ -43,7 +43,7 @@
43
43
 
44
44
  <ul id="full_list" class="class">
45
45
  <li id="object_" class="odd"><div class="item" style="padding-left:30px"><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></div></li>
46
- <li id='object_ASSFile' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="ASSFile.html" title="ASSFile (class)">ASSFile</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_ASSLine' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="ASSLine.html" title="ASSLine (class)">ASSLine</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_ASSStyle' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="ASSStyle.html" title="ASSStyle (class)">ASSStyle</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_ASSStyleParams' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="ASSStyleParams.html" title="ASSStyleParams (class)">ASSStyleParams</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_Application' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="Application.html" title="Application (class)">Application</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_VTTFile' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="VTTFile.html" title="VTTFile (class)">VTTFile</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_VTTLine' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="VTTLine.html" title="VTTLine (class)">VTTLine</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_Vtt2ass' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="Vtt2ass.html" title="Vtt2ass (module)">Vtt2ass</a></span><small class='search_info'>Top Level Namespace</small></div></li>
46
+ <li id='object_ASSFile' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="ASSFile.html" title="ASSFile (class)">ASSFile</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_ASSLine' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="ASSLine.html" title="ASSLine (class)">ASSLine</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_ASSStyle' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="ASSStyle.html" title="ASSStyle (class)">ASSStyle</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_ASSStyleParams' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="ASSStyleParams.html" title="ASSStyleParams (class)">ASSStyleParams</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_Application' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="Application.html" title="Application (class)">Application</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_MainCommand' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="MainCommand.html" title="MainCommand (class)">MainCommand</a></span> &lt; Thor<small class='search_info'>Top Level Namespace</small></div></li><li id='object_VTTFile' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="VTTFile.html" title="VTTFile (class)">VTTFile</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_VTTLine' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="VTTLine.html" title="VTTLine (class)">VTTLine</a></span> &lt; Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_Vtt2ass' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="Vtt2ass.html" title="Vtt2ass (module)">Vtt2ass</a></span><small class='search_info'>Top Level Namespace</small></div></li>
47
47
 
48
48
  </ul>
49
49
  </div>
data/doc/file.README.html CHANGED
@@ -73,7 +73,10 @@
73
73
 
74
74
  <h2 id="label-Installation">Installation</h2>
75
75
 
76
- <p>To install: <code>bash gem install vtt2ass </code></p>
76
+ <p>To install:</p>
77
+
78
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_gem'>gem</span> <span class='id identifier rubyid_install'>install</span> <span class='id identifier rubyid_vtt2ass'>vtt2ass</span>
79
+ </code></pre>
77
80
 
78
81
  <h1 id="label-Build">Build</h1>
79
82
 
@@ -82,22 +85,26 @@
82
85
 
83
86
  <h2 id="label-Usage">Usage</h2>
84
87
 
85
- <p>Add your VTT files in your <code>input</code> directory.</p>
86
-
87
- <p>Run this command: <code>bash $ vtt2ass </code></p>
88
-
89
- <h2 id="label-Help">Help</h2>
90
-
91
- <pre class="code ruby"><code class="ruby">$ vtt2ass -h
92
- Usage: vtt2ass [options]
93
-
94
- Specific options:
95
- -i, --input PATH Specify a custom input file or directory (default: &#39;./&#39;)
96
- -o, --output PATH Specify a custom output directory (default: &#39;./&#39;)
97
- -f, --font-family FONT Specify a font family for the subtitles (default: &#39;Open Sans Semibold&#39;)
98
- -s, --font-size SIZE Specify a font size for the subtitles (default: 52)
99
- -t, --title TITLE Specify a title for you file. If the input is a directory, all files will share the same title.
100
- -v, --version Show version
88
+ <pre class="code ruby"><code class="ruby">$ vtt2ass
89
+ Commands:
90
+ vtt2ass convert INPUT # Run the VTT to ASS conversion for the specified file(s)
91
+ vtt2ass help [COMMAND] # Describe available commands or one specific command
92
+ vtt2ass version # Show version
93
+
94
+ $ vtt2ass help convert
95
+ Usage:
96
+ vtt2ass convert INPUT
97
+
98
+ Options:
99
+ -o, [--output=OUTPUT] # Output directory of the converted file
100
+ -t, [--title=TITLE] # Specify a title for you file. If the input is a directory, all files will share the same title.
101
+ -s, [--font-size=N] # Specify a font size for the subtitles
102
+ # Default: 52
103
+ -f, [--font-family=FONT_FAMILY] # Specify a font family for the subtitles
104
+ # Default: Open Sans Semibold
105
+ -q, [--quiet], [--no-quiet] # Don&#39;t output to the console
106
+
107
+ Run the VTT to ASS conversion for the specified file(s)
101
108
  </code></pre>
102
109
 
103
110
  <h1 id="label-Donate">Donate</h1>
@@ -108,9 +115,9 @@ Specific options:
108
115
  </div></div>
109
116
 
110
117
  <div id="footer">
111
- Generated on Tue Mar 23 21:07:02 2021 by
118
+ Generated on Mon Nov 22 21:50:10 2021 by
112
119
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
113
- 0.9.26 (ruby-3.0.0).
120
+ 0.9.26 (ruby-3.0.2).
114
121
  </div>
115
122
 
116
123
  </div>
data/doc/index.html CHANGED
@@ -73,7 +73,10 @@
73
73
 
74
74
  <h2 id="label-Installation">Installation</h2>
75
75
 
76
- <p>To install: <code>bash gem install vtt2ass </code></p>
76
+ <p>To install:</p>
77
+
78
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_gem'>gem</span> <span class='id identifier rubyid_install'>install</span> <span class='id identifier rubyid_vtt2ass'>vtt2ass</span>
79
+ </code></pre>
77
80
 
78
81
  <h1 id="label-Build">Build</h1>
79
82
 
@@ -82,22 +85,26 @@
82
85
 
83
86
  <h2 id="label-Usage">Usage</h2>
84
87
 
85
- <p>Add your VTT files in your <code>input</code> directory.</p>
86
-
87
- <p>Run this command: <code>bash $ vtt2ass </code></p>
88
-
89
- <h2 id="label-Help">Help</h2>
90
-
91
- <pre class="code ruby"><code class="ruby">$ vtt2ass -h
92
- Usage: vtt2ass [options]
93
-
94
- Specific options:
95
- -i, --input PATH Specify a custom input file or directory (default: &#39;./&#39;)
96
- -o, --output PATH Specify a custom output directory (default: &#39;./&#39;)
97
- -f, --font-family FONT Specify a font family for the subtitles (default: &#39;Open Sans Semibold&#39;)
98
- -s, --font-size SIZE Specify a font size for the subtitles (default: 52)
99
- -t, --title TITLE Specify a title for you file. If the input is a directory, all files will share the same title.
100
- -v, --version Show version
88
+ <pre class="code ruby"><code class="ruby">$ vtt2ass
89
+ Commands:
90
+ vtt2ass convert INPUT # Run the VTT to ASS conversion for the specified file(s)
91
+ vtt2ass help [COMMAND] # Describe available commands or one specific command
92
+ vtt2ass version # Show version
93
+
94
+ $ vtt2ass help convert
95
+ Usage:
96
+ vtt2ass convert INPUT
97
+
98
+ Options:
99
+ -o, [--output=OUTPUT] # Output directory of the converted file
100
+ -t, [--title=TITLE] # Specify a title for you file. If the input is a directory, all files will share the same title.
101
+ -s, [--font-size=N] # Specify a font size for the subtitles
102
+ # Default: 52
103
+ -f, [--font-family=FONT_FAMILY] # Specify a font family for the subtitles
104
+ # Default: Open Sans Semibold
105
+ -q, [--quiet], [--no-quiet] # Don&#39;t output to the console
106
+
107
+ Run the VTT to ASS conversion for the specified file(s)
101
108
  </code></pre>
102
109
 
103
110
  <h1 id="label-Donate">Donate</h1>
@@ -108,9 +115,9 @@ Specific options:
108
115
  </div></div>
109
116
 
110
117
  <div id="footer">
111
- Generated on Tue Mar 23 21:07:01 2021 by
118
+ Generated on Mon Nov 22 21:50:10 2021 by
112
119
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
113
- 0.9.26 (ruby-3.0.0).
120
+ 0.9.26 (ruby-3.0.2).
114
121
  </div>
115
122
 
116
123
  </div>
data/doc/method_list.html CHANGED
@@ -76,6 +76,22 @@
76
76
  </li>
77
77
 
78
78
 
79
+ <li class="odd ">
80
+ <div class="item">
81
+ <span class='object_link'><a href="MainCommand.html#convert-instance_method" title="MainCommand#convert (method)">#convert</a></span>
82
+ <small>MainCommand</small>
83
+ </div>
84
+ </li>
85
+
86
+
87
+ <li class="even ">
88
+ <div class="item">
89
+ <span class='object_link'><a href="Application.html#convert-instance_method" title="Application#convert (method)">#convert</a></span>
90
+ <small>Application</small>
91
+ </div>
92
+ </li>
93
+
94
+
79
95
  <li class="odd ">
80
96
  <div class="item">
81
97
  <span class='object_link'><a href="ASSLine.html#convertTime-instance_method" title="ASSLine#convertTime (method)">#convertTime</a></span>
@@ -124,6 +140,22 @@
124
140
  </li>
125
141
 
126
142
 
143
+ <li class="odd ">
144
+ <div class="item">
145
+ <span class='object_link'><a href="VTTFile.html#determine_line_ending-instance_method" title="VTTFile#determine_line_ending (method)">#determine_line_ending</a></span>
146
+ <small>VTTFile</small>
147
+ </div>
148
+ </li>
149
+
150
+
151
+ <li class="even ">
152
+ <div class="item">
153
+ <span class='object_link'><a href="MainCommand.html#exit_on_failure%3F-class_method" title="MainCommand.exit_on_failure? (method)">exit_on_failure?</a></span>
154
+ <small>MainCommand</small>
155
+ </div>
156
+ </li>
157
+
158
+
127
159
  <li class="odd ">
128
160
  <div class="item">
129
161
  <span class='object_link'><a href="ASSFile.html#height-instance_method" title="ASSFile#height (method)">#height</a></span>
@@ -205,14 +237,6 @@
205
237
 
206
238
 
207
239
  <li class="odd ">
208
- <div class="item">
209
- <span class='object_link'><a href="Vtt2ass.html#main-class_method" title="Vtt2ass.main (method)">main</a></span>
210
- <small>Vtt2ass</small>
211
- </div>
212
- </li>
213
-
214
-
215
- <li class="even ">
216
240
  <div class="item">
217
241
  <span class='object_link'><a href="ASSLine.html#padTimeNum-instance_method" title="ASSLine#padTimeNum (method)">#padTimeNum</a></span>
218
242
  <small>ASSLine</small>
@@ -220,7 +244,7 @@
220
244
  </li>
221
245
 
222
246
 
223
- <li class="odd ">
247
+ <li class="even ">
224
248
  <div class="item">
225
249
  <span class='object_link'><a href="VTTLine.html#params-instance_method" title="VTTLine#params (method)">#params</a></span>
226
250
  <small>VTTLine</small>
@@ -228,7 +252,7 @@
228
252
  </li>
229
253
 
230
254
 
231
- <li class="even ">
255
+ <li class="odd ">
232
256
  <div class="item">
233
257
  <span class='object_link'><a href="Application.html#start-instance_method" title="Application#start (method)">#start</a></span>
234
258
  <small>Application</small>
@@ -236,7 +260,7 @@
236
260
  </li>
237
261
 
238
262
 
239
- <li class="odd ">
263
+ <li class="even ">
240
264
  <div class="item">
241
265
  <span class='object_link'><a href="ASSLine.html#style-instance_method" title="ASSLine#style (method)">#style</a></span>
242
266
  <small>ASSLine</small>
@@ -244,7 +268,7 @@
244
268
  </li>
245
269
 
246
270
 
247
- <li class="even ">
271
+ <li class="odd ">
248
272
  <div class="item">
249
273
  <span class='object_link'><a href="VTTLine.html#style-instance_method" title="VTTLine#style (method)">#style</a></span>
250
274
  <small>VTTLine</small>
@@ -252,7 +276,7 @@
252
276
  </li>
253
277
 
254
278
 
255
- <li class="odd ">
279
+ <li class="even ">
256
280
  <div class="item">
257
281
  <span class='object_link'><a href="ASSStyle.html#style_name-instance_method" title="ASSStyle#style_name (method)">#style_name</a></span>
258
282
  <small>ASSStyle</small>
@@ -260,7 +284,7 @@
260
284
  </li>
261
285
 
262
286
 
263
- <li class="even ">
287
+ <li class="odd ">
264
288
  <div class="item">
265
289
  <span class='object_link'><a href="ASSLine.html#text-instance_method" title="ASSLine#text (method)">#text</a></span>
266
290
  <small>ASSLine</small>
@@ -268,7 +292,7 @@
268
292
  </li>
269
293
 
270
294
 
271
- <li class="odd ">
295
+ <li class="even ">
272
296
  <div class="item">
273
297
  <span class='object_link'><a href="VTTLine.html#text-instance_method" title="VTTLine#text (method)">#text</a></span>
274
298
  <small>VTTLine</small>
@@ -276,7 +300,7 @@
276
300
  </li>
277
301
 
278
302
 
279
- <li class="even ">
303
+ <li class="odd ">
280
304
  <div class="item">
281
305
  <span class='object_link'><a href="ASSLine.html#time_end-instance_method" title="ASSLine#time_end (method)">#time_end</a></span>
282
306
  <small>ASSLine</small>
@@ -284,7 +308,7 @@
284
308
  </li>
285
309
 
286
310
 
287
- <li class="odd ">
311
+ <li class="even ">
288
312
  <div class="item">
289
313
  <span class='object_link'><a href="VTTLine.html#time_end-instance_method" title="VTTLine#time_end (method)">#time_end</a></span>
290
314
  <small>VTTLine</small>
@@ -292,7 +316,7 @@
292
316
  </li>
293
317
 
294
318
 
295
- <li class="even ">
319
+ <li class="odd ">
296
320
  <div class="item">
297
321
  <span class='object_link'><a href="ASSLine.html#time_start-instance_method" title="ASSLine#time_start (method)">#time_start</a></span>
298
322
  <small>ASSLine</small>
@@ -300,7 +324,7 @@
300
324
  </li>
301
325
 
302
326
 
303
- <li class="odd ">
327
+ <li class="even ">
304
328
  <div class="item">
305
329
  <span class='object_link'><a href="VTTLine.html#time_start-instance_method" title="VTTLine#time_start (method)">#time_start</a></span>
306
330
  <small>VTTLine</small>
@@ -308,7 +332,7 @@
308
332
  </li>
309
333
 
310
334
 
311
- <li class="even ">
335
+ <li class="odd ">
312
336
  <div class="item">
313
337
  <span class='object_link'><a href="ASSFile.html#title-instance_method" title="ASSFile#title (method)">#title</a></span>
314
338
  <small>ASSFile</small>
@@ -316,7 +340,7 @@
316
340
  </li>
317
341
 
318
342
 
319
- <li class="odd ">
343
+ <li class="even ">
320
344
  <div class="item">
321
345
  <span class='object_link'><a href="ASSLine.html#toSubsTime-instance_method" title="ASSLine#toSubsTime (method)">#toSubsTime</a></span>
322
346
  <small>ASSLine</small>
@@ -324,7 +348,7 @@
324
348
  </li>
325
349
 
326
350
 
327
- <li class="even ">
351
+ <li class="odd ">
328
352
  <div class="item">
329
353
  <span class='object_link'><a href="ASSFile.html#to_s-instance_method" title="ASSFile#to_s (method)">#to_s</a></span>
330
354
  <small>ASSFile</small>
@@ -332,7 +356,7 @@
332
356
  </li>
333
357
 
334
358
 
335
- <li class="odd ">
359
+ <li class="even ">
336
360
  <div class="item">
337
361
  <span class='object_link'><a href="ASSLine.html#to_s-instance_method" title="ASSLine#to_s (method)">#to_s</a></span>
338
362
  <small>ASSLine</small>
@@ -340,7 +364,7 @@
340
364
  </li>
341
365
 
342
366
 
343
- <li class="even ">
367
+ <li class="odd ">
344
368
  <div class="item">
345
369
  <span class='object_link'><a href="VTTFile.html#to_s-instance_method" title="VTTFile#to_s (method)">#to_s</a></span>
346
370
  <small>VTTFile</small>
@@ -348,7 +372,7 @@
348
372
  </li>
349
373
 
350
374
 
351
- <li class="odd ">
375
+ <li class="even ">
352
376
  <div class="item">
353
377
  <span class='object_link'><a href="VTTLine.html#to_s-instance_method" title="VTTLine#to_s (method)">#to_s</a></span>
354
378
  <small>VTTLine</small>
@@ -356,7 +380,7 @@
356
380
  </li>
357
381
 
358
382
 
359
- <li class="even ">
383
+ <li class="odd ">
360
384
  <div class="item">
361
385
  <span class='object_link'><a href="ASSStyle.html#to_s-instance_method" title="ASSStyle#to_s (method)">#to_s</a></span>
362
386
  <small>ASSStyle</small>
@@ -364,6 +388,14 @@
364
388
  </li>
365
389
 
366
390
 
391
+ <li class="even ">
392
+ <div class="item">
393
+ <span class='object_link'><a href="MainCommand.html#version-instance_method" title="MainCommand#version (method)">#version</a></span>
394
+ <small>MainCommand</small>
395
+ </div>
396
+ </li>
397
+
398
+
367
399
  <li class="odd ">
368
400
  <div class="item">
369
401
  <span class='object_link'><a href="ASSStyleParams.html#vertical_margin-instance_method" title="ASSStyleParams#vertical_margin (method)">#vertical_margin</a></span>
@@ -86,7 +86,7 @@
86
86
 
87
87
 
88
88
 
89
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="ASSFile.html" title="ASSFile (class)">ASSFile</a></span>, <span class='object_link'><a href="ASSLine.html" title="ASSLine (class)">ASSLine</a></span>, <span class='object_link'><a href="ASSStyle.html" title="ASSStyle (class)">ASSStyle</a></span>, <span class='object_link'><a href="ASSStyleParams.html" title="ASSStyleParams (class)">ASSStyleParams</a></span>, <span class='object_link'><a href="Application.html" title="Application (class)">Application</a></span>, <span class='object_link'><a href="VTTFile.html" title="VTTFile (class)">VTTFile</a></span>, <span class='object_link'><a href="VTTLine.html" title="VTTLine (class)">VTTLine</a></span>
89
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="ASSFile.html" title="ASSFile (class)">ASSFile</a></span>, <span class='object_link'><a href="ASSLine.html" title="ASSLine (class)">ASSLine</a></span>, <span class='object_link'><a href="ASSStyle.html" title="ASSStyle (class)">ASSStyle</a></span>, <span class='object_link'><a href="ASSStyleParams.html" title="ASSStyleParams (class)">ASSStyleParams</a></span>, <span class='object_link'><a href="Application.html" title="Application (class)">Application</a></span>, <span class='object_link'><a href="MainCommand.html" title="MainCommand (class)">MainCommand</a></span>, <span class='object_link'><a href="VTTFile.html" title="VTTFile (class)">VTTFile</a></span>, <span class='object_link'><a href="VTTLine.html" title="VTTLine (class)">VTTLine</a></span>
90
90
 
91
91
 
92
92
  </p>
@@ -102,9 +102,9 @@
102
102
  </div>
103
103
 
104
104
  <div id="footer">
105
- Generated on Tue Mar 23 21:07:02 2021 by
105
+ Generated on Mon Nov 22 21:50:10 2021 by
106
106
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
107
- 0.9.26 (ruby-3.0.0).
107
+ 0.9.26 (ruby-3.0.2).
108
108
  </div>
109
109
 
110
110
  </div>
data/exe/vtt2ass CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'vtt2ass'
4
- Vtt2ass::main
4
+ MainCommand.start
@@ -1,6 +1,8 @@
1
1
  # Relative imports
2
2
  require_relative 'ASSLine'
3
3
  require_relative 'ASSStyle'
4
+ require_relative 'CSSFile'
5
+ require_relative 'CSSRule'
4
6
 
5
7
  ##
6
8
  # This class defines an ASS subtitle file.
@@ -10,9 +12,12 @@ class ASSFile
10
12
 
11
13
  ##
12
14
  # Creates a new ASSFile instance and assigns the default values of instance variables.
13
- def initialize(title, width, height)
15
+ def initialize(title, width, height, css_file_path = nil)
14
16
  @width = width
15
17
  @height = height
18
+ if not css_file_path.nil? then
19
+ @css_file = CSSFile.new(css_file_path)
20
+ end
16
21
  @header = [
17
22
  '[Script Info]',
18
23
  "Title: #{title}",
@@ -41,6 +46,10 @@ class ASSFile
41
46
  # each VTTLine. All those ASSLine are stored in an array. It also creates an array of ASSStyle that
42
47
  # will be used in the ASS style list.
43
48
  def convertVTTtoASS(vtt_file, font_family, font_size)
49
+ fs = font_size
50
+ font_color = '&H00FFFFFF'
51
+ is_italic = false
52
+ is_bold = false
44
53
  vtt_file.lines.each do |line|
45
54
  @ass_lines.push(ASSLine.new(line.style, line.time_start, line.time_end, line.text))
46
55
  style_exists = false
@@ -51,7 +60,35 @@ class ASSFile
51
60
  end
52
61
  end
53
62
  if not style_exists then
54
- @ass_styles.push(ASSStyle.new(line.style, line.params, font_family, font_size, @width, @height))
63
+ if defined?(@css_file) then
64
+ css_rule = @css_file.find_rule(line.style)
65
+ if not css_rule.nil? then
66
+ css_rule.properties.each do |property|
67
+ case property[:key]
68
+ when 'font-family'
69
+ font_family = property[:value].gsub('"', '').split(' ,').last
70
+ when 'font-size'
71
+ em_size = 1
72
+ #em_size = property[:value][0].eql? '.' ? "0#{property[:value]}" : property[:value]
73
+ if property[:value][0].eql? '.' then
74
+ em_size = "0#{property[:value]}".gsub('em', '').to_f
75
+ end
76
+ font_size = (fs * em_size).to_i
77
+ when 'color'
78
+ font_color = ASSStyle.convert_color(property[:value])
79
+ when 'font-weight'
80
+ if property[:value].eql? 'bold' then
81
+ is_bold = true
82
+ end
83
+ when 'font-style'
84
+ if property[:value].eql? 'italic' then
85
+ is_italic = true
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+ @ass_styles.push(ASSStyle.new(line.style, line.params, font_family, font_size, font_color, is_bold, is_italic, @width, @height))
55
92
  end
56
93
  end
57
94
  end
@@ -1,5 +1,7 @@
1
1
  # Relative imports
2
2
  require_relative 'ASSStyleParams'
3
+ require_relative 'Validator'
4
+ require 'redgreenblue'
3
5
 
4
6
  ##
5
7
  # This class defines an ASS style that can be applied on a subtitle line.
@@ -13,21 +15,31 @@ class ASSStyle
13
15
  # * Requires +params+, a string of VTT styling as input.
14
16
  # * Requires a video +width+ as input.
15
17
  # * Requires a video +height+ as input.
16
- def initialize(style_name, params, font_family, font_size, width, height)
18
+ def initialize(style_name, params, font_family, font_size, font_color, is_bold, is_italic, width, height)
17
19
  @width = width
18
20
  @height = height
19
21
  @font_family = font_family
20
22
  @font_size = font_size
23
+ @font_color = font_color
21
24
  @style_name = style_name
22
25
  @s_params = ASSStyleParams.new(params, width, height)
23
26
  if style_name.eql? 'MainTop' then
24
27
  @s_params.vertical_margin = 50
25
28
  end
29
+ @is_italic = is_italic
30
+ @is_bold = is_bold
26
31
  end
27
32
 
28
33
  ##
29
34
  # This method assigns the object values to an ASS style line and outputs it.
30
35
  def to_s
31
- return "Style: #{@style_name},#{@font_family},#{@font_size},&H00FFFFFF,&H000000FF,&H00020713,&H00000000,-1,0,0,0,100,100,0,0,1,2.0,2.0,#{@s_params.alignment},#{@s_params.horizontal_margin},0,#{@s_params.vertical_margin},1"
36
+ # Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
37
+ return "Style: #{@style_name},#{@font_family},#{@font_size},#{@font_color},&H000000FF,&H00020713,&H00000000,#{@is_bold ? '-1' : '0'},#{@is_italic ? '-1' : '0'},0,0,100,100,0,0,1,2.0,2.0,#{@s_params.alignment},#{@s_params.horizontal_margin},0,#{@s_params.vertical_margin},1"
38
+ end
39
+
40
+ def self.convert_color(color_value)
41
+ color_value.gsub!('#', '')
42
+ color = Validator.hex?(color_value) ? RGB.hex(color_value) : RGB.css(color_value)
43
+ return ("&H00%02x%02x%02x" % [color.b, color.g, color.r]).upcase
32
44
  end
33
45
  end
@@ -9,9 +9,9 @@ class Application
9
9
  ##
10
10
  # Creates a new Application instance.
11
11
  # It receives +options+ that can define the input and output directories.
12
- def initialize(options)
13
- @input = options[:input] ? options[:input].gsub('\\', '/').delete_suffix('/') : "."
14
- @output = options[:output] ? options[:output].gsub('\\', '/').delete_suffix('/') : "."
12
+ def initialize(input, options)
13
+ @input = input ? input.gsub('\\', '/').delete_suffix('/') : "."
14
+ @output = options[:output] ? options[:output].gsub('\\', '/').delete_suffix('/') : nil
15
15
  @width = 1920
16
16
  @height = 1080
17
17
  @font_family = options[:font_family] ? options[:font_family] : 'Open Sans Semibold'
@@ -20,7 +20,9 @@ class Application
20
20
  @title = options[:title]
21
21
  end
22
22
  @quiet = options[:quiet]
23
- @noout = options[:noout]
23
+ if options[:css] then
24
+ @css = options[:css].gsub('\\', '/')
25
+ end
24
26
  end
25
27
 
26
28
  ##
@@ -41,7 +43,9 @@ class Application
41
43
 
42
44
  def convert(input_path)
43
45
  ass_file = vtt_to_ass(input_path)
44
- ass_file.writeToFile(@output + '/' + File.basename(input_path).gsub('.vtt', '.ass')) unless @noout
46
+ if (not @output.nil?) then
47
+ ass_file.writeToFile(@output + '/' + File.basename(input_path).gsub('.vtt', '.ass'))
48
+ end
45
49
  puts ass_file.to_s unless @quiet
46
50
  end
47
51
 
@@ -53,7 +57,8 @@ class Application
53
57
  ass_file = ASSFile.new(
54
58
  (defined?(@title) ? @title : File.basename(file_path).gsub('.vtt', '')),
55
59
  @width,
56
- @height
60
+ @height,
61
+ defined?(@css) ? @css : nil
57
62
  )
58
63
  ass_file.convertVTTtoASS(vtt_file, @font_family, @font_size)
59
64
  return ass_file
@@ -0,0 +1,36 @@
1
+ require 'css_parser'
2
+ require_relative 'CSSRule'
3
+
4
+ class CSSFile
5
+ attr_reader :rules
6
+ include CssParser
7
+
8
+ def initialize(file_path)
9
+ @file_path = file_path
10
+ parser = CssParser::Parser.new
11
+ parser.load_file!(file_path)
12
+ @rules = []
13
+ parser.each_selector do |selector, declarations, specificity|
14
+ css_obj = CSSRule.new(selector, declarations)
15
+ if not css_obj.name.empty? then
16
+ @rules.push(css_obj)
17
+ end
18
+ end
19
+ end
20
+
21
+ def find_rule(value)
22
+ return_rule = nil
23
+ @rules.each do |rule|
24
+ if rule.name == value then
25
+ return_rule = rule
26
+ break
27
+ end
28
+ end
29
+ return return_rule
30
+ end
31
+
32
+ def to_s
33
+ return @file_path
34
+ end
35
+
36
+ end