postsvg 0.1.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 (41) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +19 -0
  3. data/.rubocop_todo.yml +141 -0
  4. data/Gemfile +15 -0
  5. data/LICENSE +25 -0
  6. data/README.adoc +473 -0
  7. data/Rakefile +10 -0
  8. data/docs/POSTSCRIPT.adoc +13 -0
  9. data/docs/postscript/fundamentals.adoc +356 -0
  10. data/docs/postscript/graphics-model.adoc +406 -0
  11. data/docs/postscript/implementation-notes.adoc +314 -0
  12. data/docs/postscript/index.adoc +153 -0
  13. data/docs/postscript/operators/arithmetic.adoc +461 -0
  14. data/docs/postscript/operators/control-flow.adoc +230 -0
  15. data/docs/postscript/operators/dictionary.adoc +191 -0
  16. data/docs/postscript/operators/graphics-state.adoc +528 -0
  17. data/docs/postscript/operators/index.adoc +288 -0
  18. data/docs/postscript/operators/painting.adoc +475 -0
  19. data/docs/postscript/operators/path-construction.adoc +553 -0
  20. data/docs/postscript/operators/stack-manipulation.adoc +374 -0
  21. data/docs/postscript/operators/transformations.adoc +479 -0
  22. data/docs/postscript/svg-mapping.adoc +369 -0
  23. data/exe/postsvg +6 -0
  24. data/lib/postsvg/cli.rb +103 -0
  25. data/lib/postsvg/colors.rb +33 -0
  26. data/lib/postsvg/converter.rb +214 -0
  27. data/lib/postsvg/errors.rb +11 -0
  28. data/lib/postsvg/graphics_state.rb +158 -0
  29. data/lib/postsvg/interpreter.rb +891 -0
  30. data/lib/postsvg/matrix.rb +106 -0
  31. data/lib/postsvg/parser/postscript_parser.rb +87 -0
  32. data/lib/postsvg/parser/transform.rb +21 -0
  33. data/lib/postsvg/parser.rb +18 -0
  34. data/lib/postsvg/path_builder.rb +101 -0
  35. data/lib/postsvg/svg_generator.rb +78 -0
  36. data/lib/postsvg/tokenizer.rb +161 -0
  37. data/lib/postsvg/version.rb +5 -0
  38. data/lib/postsvg.rb +78 -0
  39. data/postsvg.gemspec +38 -0
  40. data/scripts/regenerate_fixtures.rb +28 -0
  41. metadata +118 -0
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require_relative "../lib/postsvg"
5
+
6
+ FIXTURES = {
7
+ "spec/fixtures/ps2svg/colors.ps" => "spec/fixtures/ps2svg/colors_expected.svg",
8
+ "spec/fixtures/ps2svg/example_full.ps" => "spec/fixtures/ps2svg/example_full_expected.svg",
9
+ "spec/fixtures/ps2svg/file.ps" => "spec/fixtures/ps2svg/file_expected.svg",
10
+ "spec/fixtures/ps2svg/prog.ps" => "spec/fixtures/ps2svg/prog_expected.svg",
11
+ "spec/fixtures/ps2svg/img.ps" => "spec/fixtures/ps2svg/ref.svg",
12
+ "spec/fixtures/eps2svg/img.eps" => "spec/fixtures/eps2svg/ref.svg",
13
+ }.freeze
14
+
15
+ FIXTURES.each do |input_path, output_path|
16
+ unless File.exist?(input_path)
17
+ puts "Skipping #{input_path} (not found)"
18
+ next
19
+ end
20
+
21
+ puts "Converting #{input_path} -> #{output_path}"
22
+ input_content = File.read(input_path)
23
+ svg_content = Postsvg.convert(input_content)
24
+ File.write(output_path, svg_content)
25
+ puts " ✓ Generated #{output_path}"
26
+ end
27
+
28
+ puts "\nAll fixtures regenerated successfully!"
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: postsvg
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2025-10-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: parslet
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: |
42
+ Postsvg provides a pure Ruby library for converting PostScript (PS) and
43
+ Encapsulated PostScript (EPS) files to clean,
44
+ standards-compliant Scalable Vector Graphics (SVG) format output.
45
+ email:
46
+ - open.source@ribose.com
47
+ executables:
48
+ - postsvg
49
+ extensions: []
50
+ extra_rdoc_files: []
51
+ files:
52
+ - ".rubocop.yml"
53
+ - ".rubocop_todo.yml"
54
+ - Gemfile
55
+ - LICENSE
56
+ - README.adoc
57
+ - Rakefile
58
+ - docs/POSTSCRIPT.adoc
59
+ - docs/postscript/fundamentals.adoc
60
+ - docs/postscript/graphics-model.adoc
61
+ - docs/postscript/implementation-notes.adoc
62
+ - docs/postscript/index.adoc
63
+ - docs/postscript/operators/arithmetic.adoc
64
+ - docs/postscript/operators/control-flow.adoc
65
+ - docs/postscript/operators/dictionary.adoc
66
+ - docs/postscript/operators/graphics-state.adoc
67
+ - docs/postscript/operators/index.adoc
68
+ - docs/postscript/operators/painting.adoc
69
+ - docs/postscript/operators/path-construction.adoc
70
+ - docs/postscript/operators/stack-manipulation.adoc
71
+ - docs/postscript/operators/transformations.adoc
72
+ - docs/postscript/svg-mapping.adoc
73
+ - exe/postsvg
74
+ - lib/postsvg.rb
75
+ - lib/postsvg/cli.rb
76
+ - lib/postsvg/colors.rb
77
+ - lib/postsvg/converter.rb
78
+ - lib/postsvg/errors.rb
79
+ - lib/postsvg/graphics_state.rb
80
+ - lib/postsvg/interpreter.rb
81
+ - lib/postsvg/matrix.rb
82
+ - lib/postsvg/parser.rb
83
+ - lib/postsvg/parser/postscript_parser.rb
84
+ - lib/postsvg/parser/transform.rb
85
+ - lib/postsvg/path_builder.rb
86
+ - lib/postsvg/svg_generator.rb
87
+ - lib/postsvg/tokenizer.rb
88
+ - lib/postsvg/version.rb
89
+ - postsvg.gemspec
90
+ - scripts/regenerate_fixtures.rb
91
+ homepage: https://github.com/metanorma/postsvg
92
+ licenses:
93
+ - BSD-2-Clause
94
+ metadata:
95
+ homepage_uri: https://github.com/metanorma/postsvg
96
+ source_code_uri: https://github.com/metanorma/postsvg
97
+ changelog_uri: https://github.com/metanorma/postsvg
98
+ rubygems_mfa_required: 'true'
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: 3.0.0
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubygems_version: 3.5.22
115
+ signing_key:
116
+ specification_version: 4
117
+ summary: Pure Ruby PostScript/EPS to SVG converter
118
+ test_files: []