screenkit 0.0.9 → 0.0.11

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.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: screenkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
@@ -304,16 +304,14 @@ files:
304
304
  - lib/screenkit/callout/styles/inline_block.rb
305
305
  - lib/screenkit/callout/styles/shadow_block.rb
306
306
  - lib/screenkit/callout/styles/social.rb
307
- - lib/screenkit/callout/text_style.rb
308
307
  - lib/screenkit/cli.rb
309
308
  - lib/screenkit/cli/base.rb
310
309
  - lib/screenkit/cli/episode.rb
311
310
  - lib/screenkit/cli/root.rb
312
- - lib/screenkit/config/base.rb
313
- - lib/screenkit/config/episode.rb
314
- - lib/screenkit/config/project.rb
311
+ - lib/screenkit/config.rb
315
312
  - lib/screenkit/content_type.rb
316
313
  - lib/screenkit/core_ext.rb
314
+ - lib/screenkit/core_ext/hash.rb
317
315
  - lib/screenkit/core_ext/json.rb
318
316
  - lib/screenkit/core_ext/string.rb
319
317
  - lib/screenkit/duration.rb
@@ -322,6 +320,7 @@ files:
322
320
  - lib/screenkit/exporter/image.rb
323
321
  - lib/screenkit/exporter/intro.rb
324
322
  - lib/screenkit/exporter/outro.rb
323
+ - lib/screenkit/exporter/playwright.rb
325
324
  - lib/screenkit/exporter/segment.rb
326
325
  - lib/screenkit/exporter/video.rb
327
326
  - lib/screenkit/generators/episode.rb
@@ -331,6 +330,7 @@ files:
331
330
  - lib/screenkit/generators/episode/scripts/001.txt
332
331
  - lib/screenkit/generators/project.rb
333
332
  - lib/screenkit/generators/project/.github/screenkit.yml
333
+ - lib/screenkit/generators/project/.gitignore
334
334
  - lib/screenkit/generators/project/Gemfile.erb
335
335
  - lib/screenkit/generators/project/resources/backtracks/default.aac
336
336
  - lib/screenkit/generators/project/resources/fonts/open-sans/OFL.txt
@@ -344,6 +344,7 @@ files:
344
344
  - lib/screenkit/generators/project/resources/sounds/whoosh.mp3
345
345
  - lib/screenkit/generators/project/screenkit.yml
346
346
  - lib/screenkit/http.rb
347
+ - lib/screenkit/image_magick.rb
347
348
  - lib/screenkit/logfile.rb
348
349
  - lib/screenkit/parallel_processor.rb
349
350
  - lib/screenkit/path_lookup.rb
@@ -370,8 +371,7 @@ files:
370
371
  - lib/screenkit/schemas/callout_styles/social.json
371
372
  - lib/screenkit/schemas/callouts/inline_block.json
372
373
  - lib/screenkit/schemas/callouts/shadow_block.json
373
- - lib/screenkit/schemas/episode.json
374
- - lib/screenkit/schemas/project.json
374
+ - lib/screenkit/schemas/config.json
375
375
  - lib/screenkit/schemas/refs/anchor.json
376
376
  - lib/screenkit/schemas/refs/animation.json
377
377
  - lib/screenkit/schemas/refs/background.json
@@ -384,6 +384,7 @@ files:
384
384
  - lib/screenkit/schemas/refs/intro.json
385
385
  - lib/screenkit/schemas/refs/logo.json
386
386
  - lib/screenkit/schemas/refs/outro.json
387
+ - lib/screenkit/schemas/refs/playwright.json
387
388
  - lib/screenkit/schemas/refs/position.json
388
389
  - lib/screenkit/schemas/refs/scenes.json
389
390
  - lib/screenkit/schemas/refs/size.json
@@ -401,6 +402,7 @@ files:
401
402
  - lib/screenkit/sound.rb
402
403
  - lib/screenkit/spacing.rb
403
404
  - lib/screenkit/spinner.rb
405
+ - lib/screenkit/text_style.rb
404
406
  - lib/screenkit/time_formatter.rb
405
407
  - lib/screenkit/transition.rb
406
408
  - lib/screenkit/tts/base.rb
@@ -418,10 +420,10 @@ metadata:
418
420
  rubygems_mfa_required: 'true'
419
421
  homepage_uri: https://github.com/fnando/screenkit
420
422
  bug_tracker_uri: https://github.com/fnando/screenkit/issues
421
- source_code_uri: https://github.com/fnando/screenkit/tree/v0.0.9
422
- changelog_uri: https://github.com/fnando/screenkit/tree/v0.0.9/CHANGELOG.md
423
- documentation_uri: https://github.com/fnando/screenkit/tree/v0.0.9/README.md
424
- license_uri: https://github.com/fnando/screenkit/tree/v0.0.9/LICENSE.md
423
+ source_code_uri: https://github.com/fnando/screenkit/tree/v0.0.11
424
+ changelog_uri: https://github.com/fnando/screenkit/tree/v0.0.11/CHANGELOG.md
425
+ documentation_uri: https://github.com/fnando/screenkit/tree/v0.0.11/README.md
426
+ license_uri: https://github.com/fnando/screenkit/tree/v0.0.11/LICENSE.md
425
427
  rdoc_options: []
426
428
  require_paths:
427
429
  - lib
@@ -436,7 +438,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
436
438
  - !ruby/object:Gem::Version
437
439
  version: '0'
438
440
  requirements: []
439
- rubygems_version: 3.6.9
441
+ rubygems_version: 4.0.0
440
442
  specification_version: 4
441
443
  summary: Terminal to screencast, simplified
442
444
  test_files: []
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ScreenKit
4
- class Callout
5
- class TextStyle
6
- attr_reader :color, :size, :font_path, :align
7
-
8
- def initialize(source:, **kwargs)
9
- @source = source
10
-
11
- kwargs.each do |key, value|
12
- value = case key.to_sym
13
- when :font_path
14
- @source.search(value)
15
- else
16
- value
17
- end
18
-
19
- instance_variable_set(:"@#{key}", value)
20
- end
21
- end
22
-
23
- # Convert hex color (with optional alpha) to RGB + opacity
24
- # #RRGGBB or #RRGGBBAA
25
- def rgb_color
26
- color.match(/#([0-9a-fA-F]{6})/) {|m| m[1] }
27
- end
28
-
29
- def opacity
30
- if color.length == 9
31
- color.match(/#[0-9a-fA-F]{6}([0-9a-fA-F]{2})/) do |m|
32
- m[1].to_i(16) / 255.0
33
- end
34
- else
35
- 1.0
36
- end
37
- end
38
-
39
- def as_json(*)
40
- {color:, size:, font_path:, rgb_color:, opacity:, align:}
41
- end
42
- end
43
- end
44
- end
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ScreenKit
4
- module Config
5
- class Base
6
- extend SchemaValidator
7
-
8
- attr_reader :raw_options
9
-
10
- def self.load_file(path)
11
- unless File.file?(path)
12
- raise FileNotFoundError, "Config file not found: #{path}"
13
- end
14
-
15
- template = File.read(path)
16
- contents = ERB.new(template).result
17
-
18
- config = YAML.load(contents, symbolize_names: true)
19
- load(config)
20
- end
21
-
22
- def self.load(config)
23
- validate!(config)
24
-
25
- new(**config)
26
- end
27
-
28
- def initialize(**kwargs)
29
- @raw_options = kwargs
30
-
31
- kwargs.each do |key, value|
32
- value = process(key, value)
33
- instance_variable_set(:"@#{key}", value)
34
- end
35
- end
36
-
37
- def process(_key, value)
38
- value
39
- end
40
-
41
- def to_h
42
- instance_variables.each_with_object({}) do |var, hash|
43
- key = var.to_s.delete_prefix("@").to_sym
44
- value = instance_variable_get(var)
45
-
46
- hash[key] =
47
- if value.respond_to?(:as_json)
48
- value.as_json
49
- elsif value.is_a?(Array)
50
- value.map {|v| v.respond_to?(:as_json) ? v.as_json : v }
51
- else
52
- value
53
- end
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ScreenKit
4
- module Config
5
- class Episode < Base
6
- # The scenes configuration for the episode.
7
- attr_reader :scenes
8
-
9
- # The title of the episode.
10
- attr_reader :title
11
-
12
- # The episode's TTS engine configuration.
13
- attr_reader :tts
14
-
15
- # The episode's backtrack music configuration.
16
- attr_reader :backtrack
17
-
18
- # The watermark configuration.
19
- attr_reader :watermark
20
-
21
- # The demotape configuration.
22
- attr_reader :demotape
23
-
24
- # The callout styles configuration.
25
- attr_reader :callout_styles
26
-
27
- def self.schema_path
28
- @schema_path ||=
29
- ScreenKit.root_dir.join("schemas/episode.json")
30
- end
31
-
32
- def initialize(**)
33
- @scenes = {}
34
-
35
- super
36
- end
37
-
38
- def process(key, value)
39
- case key.to_sym
40
- when /_(dir|path)$/
41
- Pathname(value)
42
- else
43
- value
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ScreenKit
4
- module Config
5
- class Project < Base
6
- # The directory where episode source files are stored.
7
- attr_reader :episode_dir
8
-
9
- # The directory where resources files are stored.
10
- attr_reader :resources_dir
11
-
12
- # The output directory for exported files.
13
- attr_reader :output_dir
14
-
15
- # Callout styles
16
- attr_reader :callout_styles
17
-
18
- # Scene configurations
19
- attr_reader :scenes
20
-
21
- # TTS configuration
22
- attr_reader :tts
23
-
24
- # The backtrack music configuration.
25
- attr_reader :backtrack
26
-
27
- # The watermark configuration.
28
- attr_reader :watermark
29
-
30
- # The demotape configuration.
31
- attr_reader :demotape
32
-
33
- def self.schema_path
34
- @schema_path ||=
35
- ScreenKit.root_dir.join("schemas/project.json")
36
- end
37
-
38
- private def process(key, value)
39
- case key.to_sym
40
- when :resources_dir
41
- Array(value)
42
- when /_(dir|path)$/
43
- Pathname(value)
44
- else
45
- value
46
- end
47
- end
48
-
49
- def to_h
50
- raw_options
51
- end
52
- end
53
- end
54
- end
@@ -1,26 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://screenkit.dev/schemas/episode.json",
4
- "title": "ScreenKit Episode Configuration (config.yml)",
5
- "type": "object",
6
- "required": ["title"],
7
- "properties": {
8
- "backtrack": { "$ref": "refs/sound.json" },
9
- "scenes": { "$ref": "refs/scenes.json" },
10
- "tts": { "$ref": "refs/tts.json" },
11
- "watermark": { "$ref": "refs/watermark.json" },
12
- "title": {
13
- "type": "string",
14
- "description": "The episode title",
15
- "minLength": 1,
16
- "pattern": "\\S"
17
- },
18
- "demotape": { "$ref": "refs/demotape.json" },
19
- "callout_styles": {
20
- "type": "object",
21
- "additionalProperties": {
22
- "$ref": "refs/callout_style.json"
23
- }
24
- }
25
- }
26
- }