vtt2ass 0.2.13 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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