shellfie 0.1.0 → 1.0.0

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +95 -236
  4. data/docs/.nojekyll +0 -0
  5. data/docs/index.html +205 -0
  6. data/docs/scripts.js +85 -0
  7. data/docs/styles.css +507 -0
  8. data/examples/simple.yml +3 -3
  9. data/lib/shellfie/animation_frame_builder.rb +178 -0
  10. data/lib/shellfie/animation_scroll_easing.rb +77 -0
  11. data/lib/shellfie/animation_timeline.rb +27 -0
  12. data/lib/shellfie/ansi_colors.rb +94 -0
  13. data/lib/shellfie/ansi_line_buffer.rb +87 -0
  14. data/lib/shellfie/ansi_normalizer.rb +51 -0
  15. data/lib/shellfie/ansi_parser.rb +50 -84
  16. data/lib/shellfie/cli.rb +22 -173
  17. data/lib/shellfie/cli_generate.rb +197 -0
  18. data/lib/shellfie/cli_info.rb +139 -0
  19. data/lib/shellfie/config.rb +108 -25
  20. data/lib/shellfie/config_defaults.rb +64 -0
  21. data/lib/shellfie/config_validation.rb +200 -0
  22. data/lib/shellfie/dependency_checker.rb +76 -0
  23. data/lib/shellfie/errors.rb +11 -1
  24. data/lib/shellfie/font_resolver.rb +58 -0
  25. data/lib/shellfie/format_resolver.rb +15 -0
  26. data/lib/shellfie/gif_generator.rb +83 -87
  27. data/lib/shellfie/gif_palette.rb +101 -0
  28. data/lib/shellfie/headless_theme_registry.rb +42 -0
  29. data/lib/shellfie/image_magick_command_builder.rb +75 -0
  30. data/lib/shellfie/line_layout.rb +137 -0
  31. data/lib/shellfie/output_writer.rb +41 -0
  32. data/lib/shellfie/parser.rb +113 -23
  33. data/lib/shellfie/parser_validation.rb +145 -0
  34. data/lib/shellfie/raster_painter.rb +157 -0
  35. data/lib/shellfie/render_chrome_cache.rb +40 -0
  36. data/lib/shellfie/render_geometry.rb +114 -0
  37. data/lib/shellfie/render_segment.rb +59 -0
  38. data/lib/shellfie/renderer.rb +79 -149
  39. data/lib/shellfie/rendering/shape_helpers.rb +42 -0
  40. data/lib/shellfie/rendering/text_painter.rb +187 -0
  41. data/lib/shellfie/rendering/window_chrome.rb +196 -0
  42. data/lib/shellfie/svg_raster_wrapper.rb +35 -0
  43. data/lib/shellfie/text_metrics.rb +96 -0
  44. data/lib/shellfie/theme_data.rb +80 -0
  45. data/lib/shellfie/theme_registry.rb +131 -0
  46. data/lib/shellfie/themes/base.rb +10 -1
  47. data/lib/shellfie/themes/configured.rb +61 -0
  48. data/lib/shellfie/themes/macos.rb +3 -1
  49. data/lib/shellfie/themes/ubuntu.rb +2 -1
  50. data/lib/shellfie/themes/windows_terminal.rb +7 -1
  51. data/lib/shellfie/version.rb +1 -1
  52. data/lib/shellfie.rb +37 -3
  53. metadata +37 -2
data/lib/shellfie.rb CHANGED
@@ -5,9 +5,43 @@ require_relative "shellfie/errors"
5
5
  require_relative "shellfie/config"
6
6
  require_relative "shellfie/parser"
7
7
  require_relative "shellfie/ansi_parser"
8
- require_relative "shellfie/renderer"
9
- require_relative "shellfie/gif_generator"
10
- require_relative "shellfie/cli"
11
8
 
12
9
  module Shellfie
10
+ autoload :AnimationFrameBuilder, File.expand_path("shellfie/animation_frame_builder", __dir__)
11
+ autoload :AnimationScrollEasing, File.expand_path("shellfie/animation_scroll_easing", __dir__)
12
+ autoload :AnimationTimeline, File.expand_path("shellfie/animation_timeline", __dir__)
13
+ autoload :CLI, File.expand_path("shellfie/cli", __dir__)
14
+ autoload :GifGenerator, File.expand_path("shellfie/gif_generator", __dir__)
15
+ autoload :GifPalette, File.expand_path("shellfie/gif_palette", __dir__)
16
+ autoload :ImageMagickCommandBuilder, File.expand_path("shellfie/image_magick_command_builder", __dir__)
17
+ autoload :RenderChromeCache, File.expand_path("shellfie/render_chrome_cache", __dir__)
18
+ autoload :Renderer, File.expand_path("shellfie/renderer", __dir__)
19
+
20
+ class << self
21
+ def parse(source)
22
+ Parser.parse(source)
23
+ end
24
+
25
+ def validate(source)
26
+ parse(source)
27
+ true
28
+ end
29
+
30
+ def render(config_or_source, output:, animate: nil, scale: 1, shadow: true, transparent: false, format: nil)
31
+ config = config_or_source.is_a?(Config) ? config_or_source : parse(config_or_source)
32
+ animated = animate.nil? ? config.animated? : animate
33
+
34
+ if animated
35
+ GifGenerator.new(config).generate(output, scale: scale, shadow: shadow, transparent: transparent, format: format)
36
+ else
37
+ Renderer.new(config).render(output, scale: scale, shadow: shadow, transparent: transparent, format: format)
38
+ end
39
+ end
40
+
41
+ def inspect_config(source, scale: 1, shadow: true)
42
+ config = parse(source)
43
+ geometry = Renderer.new(config).estimate(scale: scale, shadow: shadow)
44
+ { config: config.to_h, theme: config.theme, geometry: geometry }
45
+ end
46
+ end
13
47
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shellfie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yudai Takada
@@ -39,6 +39,10 @@ files:
39
39
  - README.md
40
40
  - Rakefile
41
41
  - assets/logo-header.svg
42
+ - docs/.nojekyll
43
+ - docs/index.html
44
+ - docs/scripts.js
45
+ - docs/styles.css
42
46
  - examples/animation.yml
43
47
  - examples/colored.yml
44
48
  - examples/demo.gif
@@ -54,14 +58,45 @@ files:
54
58
  - exe/shellfie
55
59
  - exe/shf
56
60
  - lib/shellfie.rb
61
+ - lib/shellfie/animation_frame_builder.rb
62
+ - lib/shellfie/animation_scroll_easing.rb
63
+ - lib/shellfie/animation_timeline.rb
64
+ - lib/shellfie/ansi_colors.rb
65
+ - lib/shellfie/ansi_line_buffer.rb
66
+ - lib/shellfie/ansi_normalizer.rb
57
67
  - lib/shellfie/ansi_parser.rb
58
68
  - lib/shellfie/cli.rb
69
+ - lib/shellfie/cli_generate.rb
70
+ - lib/shellfie/cli_info.rb
59
71
  - lib/shellfie/config.rb
72
+ - lib/shellfie/config_defaults.rb
73
+ - lib/shellfie/config_validation.rb
74
+ - lib/shellfie/dependency_checker.rb
60
75
  - lib/shellfie/errors.rb
76
+ - lib/shellfie/font_resolver.rb
77
+ - lib/shellfie/format_resolver.rb
61
78
  - lib/shellfie/gif_generator.rb
79
+ - lib/shellfie/gif_palette.rb
80
+ - lib/shellfie/headless_theme_registry.rb
81
+ - lib/shellfie/image_magick_command_builder.rb
82
+ - lib/shellfie/line_layout.rb
83
+ - lib/shellfie/output_writer.rb
62
84
  - lib/shellfie/parser.rb
85
+ - lib/shellfie/parser_validation.rb
86
+ - lib/shellfie/raster_painter.rb
87
+ - lib/shellfie/render_chrome_cache.rb
88
+ - lib/shellfie/render_geometry.rb
89
+ - lib/shellfie/render_segment.rb
63
90
  - lib/shellfie/renderer.rb
91
+ - lib/shellfie/rendering/shape_helpers.rb
92
+ - lib/shellfie/rendering/text_painter.rb
93
+ - lib/shellfie/rendering/window_chrome.rb
94
+ - lib/shellfie/svg_raster_wrapper.rb
95
+ - lib/shellfie/text_metrics.rb
96
+ - lib/shellfie/theme_data.rb
97
+ - lib/shellfie/theme_registry.rb
64
98
  - lib/shellfie/themes/base.rb
99
+ - lib/shellfie/themes/configured.rb
65
100
  - lib/shellfie/themes/macos.rb
66
101
  - lib/shellfie/themes/ubuntu.rb
67
102
  - lib/shellfie/themes/windows_terminal.rb
@@ -88,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
123
  - !ruby/object:Gem::Version
89
124
  version: '0'
90
125
  requirements: []
91
- rubygems_version: 4.0.3
126
+ rubygems_version: 4.0.6
92
127
  specification_version: 4
93
128
  summary: Terminal screenshot-style image generator
94
129
  test_files: []