postsvg 0.1.0 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +105 -0
- data/CLAUDE.md +173 -0
- data/Gemfile +2 -3
- data/README.adoc +456 -179
- data/Rakefile +100 -0
- data/TODO.roadmap/00-architecture.md +139 -0
- data/TODO.roadmap/01-autoload-migration.md +39 -0
- data/TODO.roadmap/02-isolate-dormant-code.md +51 -0
- data/TODO.roadmap/03-domain-model.md +66 -0
- data/TODO.roadmap/04-lexer.md +40 -0
- data/TODO.roadmap/05-parser.md +43 -0
- data/TODO.roadmap/06-graphics-state.md +45 -0
- data/TODO.roadmap/07-matrix-and-color.md +37 -0
- data/TODO.roadmap/08-svg-builder.md +51 -0
- data/TODO.roadmap/09-renderer.md +52 -0
- data/TODO.roadmap/10-visitor.md +58 -0
- data/TODO.roadmap/11-operator-coverage.md +103 -0
- data/TODO.roadmap/12-svg-domain.md +62 -0
- data/TODO.roadmap/13-translation-handlers.md +69 -0
- data/TODO.roadmap/14-ps-serializer.md +49 -0
- data/TODO.roadmap/15-cli-and-public-api.md +47 -0
- data/TODO.roadmap/16-specs.md +84 -0
- data/TODO.roadmap/17-docs-sync.md +47 -0
- data/TODO.roadmap/18-performance-and-determinism.md +47 -0
- data/TODO.roadmap/19-error-model.md +45 -0
- data/TODO.roadmap/20-font-and-text.md +46 -0
- data/TODO.roadmap/21-images.md +45 -0
- data/TODO.roadmap/22-forms-and-resources.md +25 -0
- data/TODO.roadmap/23-level2-level3.md +52 -0
- data/TODO.roadmap/24-ci-and-release.md +42 -0
- data/TODO.roadmap/README.md +77 -0
- data/docs/.gitignore +29 -0
- data/docs/CHANGELOG.md +114 -0
- data/docs/COMPLETE_DOCUMENTATION_STATUS.md +376 -0
- data/docs/DEPLOYMENT.md +456 -0
- data/docs/DEPLOYMENT_INSTRUCTIONS.md +229 -0
- data/docs/DOCUMENTATION_PLAN.md +425 -0
- data/docs/FINAL_SUMMARY.md +657 -0
- data/docs/Gemfile +15 -0
- data/docs/README.md +327 -0
- data/docs/_config.yml +99 -0
- data/docs/advanced-topics.adoc +370 -0
- data/docs/api-reference/colors.adoc +705 -0
- data/docs/api-reference/converter.adoc +699 -0
- data/docs/api-reference/execution-context.adoc +1210 -0
- data/docs/api-reference/graphics-state.adoc +1070 -0
- data/docs/api-reference/interpreter.adoc +810 -0
- data/docs/api-reference/matrix.adoc +1179 -0
- data/docs/api-reference/path-builder.adoc +1284 -0
- data/docs/api-reference/postsvg-module.adoc +388 -0
- data/docs/api-reference/svg-generator.adoc +891 -0
- data/docs/api-reference/tokenizer.adoc +925 -0
- data/docs/api-reference.adoc +221 -0
- data/docs/architecture/command-registry.adoc +1191 -0
- data/docs/architecture/conversion-pipeline.adoc +746 -0
- data/docs/architecture/design-decisions.adoc +999 -0
- data/docs/architecture/generator-stage.adoc +1115 -0
- data/docs/architecture/graphics-state-model.adoc +1089 -0
- data/docs/architecture/interpreter-stage.adoc +1125 -0
- data/docs/architecture/parser-stage.adoc +1051 -0
- data/docs/architecture.adoc +354 -0
- data/docs/cli-reference/batch-command.adoc +616 -0
- data/docs/cli-reference/check-command.adoc +677 -0
- data/docs/cli-reference/cli-options.adoc +802 -0
- data/docs/cli-reference/convert-command.adoc +462 -0
- data/docs/cli-reference/version-command.adoc +296 -0
- data/docs/cli-reference.adoc +317 -0
- data/docs/concepts/conversion-pipeline.adoc +903 -0
- data/docs/concepts/coordinate-systems.adoc +836 -0
- data/docs/concepts/graphics-state.adoc +861 -0
- data/docs/concepts/path-operations.adoc +1076 -0
- data/docs/concepts/postscript-language.adoc +859 -0
- data/docs/concepts/svg-generation.adoc +937 -0
- data/docs/concepts.adoc +198 -0
- data/docs/contributing.adoc +443 -0
- data/docs/development.adoc +420 -0
- data/docs/faq.adoc +493 -0
- data/docs/getting-started/basic-usage.adoc +538 -0
- data/docs/getting-started/common-workflows.adoc +577 -0
- data/docs/getting-started/first-conversion.adoc +492 -0
- data/docs/getting-started/installation.adoc +534 -0
- data/docs/getting-started.adoc +94 -0
- data/docs/index.adoc +248 -0
- data/docs/optimization.adoc +196 -0
- data/docs/ps2svg_compatibility.adoc +149 -0
- data/docs/quick-reference.adoc +453 -0
- data/docs/sitemap.adoc +337 -0
- data/docs/troubleshooting.adoc +486 -0
- data/docs/validation.adoc +772 -0
- data/exe/postsvg +1 -0
- data/lib/postsvg/cli.rb +104 -57
- data/lib/postsvg/color.rb +132 -0
- data/lib/postsvg/errors.rb +68 -3
- data/lib/postsvg/format_number.rb +22 -0
- data/lib/postsvg/graphics_context.rb +80 -0
- data/lib/postsvg/graphics_stack.rb +43 -0
- data/lib/postsvg/model/literals/array.rb +41 -0
- data/lib/postsvg/model/literals/dictionary.rb +34 -0
- data/lib/postsvg/model/literals/hex.rb +37 -0
- data/lib/postsvg/model/literals/name.rb +40 -0
- data/lib/postsvg/model/literals/number.rb +36 -0
- data/lib/postsvg/model/literals/procedure.rb +41 -0
- data/lib/postsvg/model/literals/string.rb +30 -0
- data/lib/postsvg/model/literals.rb +19 -0
- data/lib/postsvg/model/operator.rb +58 -0
- data/lib/postsvg/model/operators/arithmetic.rb +264 -0
- data/lib/postsvg/model/operators/boolean.rb +182 -0
- data/lib/postsvg/model/operators/color.rb +74 -0
- data/lib/postsvg/model/operators/container.rb +186 -0
- data/lib/postsvg/model/operators/control_flow.rb +119 -0
- data/lib/postsvg/model/operators/device.rb +21 -0
- data/lib/postsvg/model/operators/dictionary.rb +118 -0
- data/lib/postsvg/model/operators/font.rb +121 -0
- data/lib/postsvg/model/operators/graphics_state.rb +84 -0
- data/lib/postsvg/model/operators/painting.rb +29 -0
- data/lib/postsvg/model/operators/path.rb +169 -0
- data/lib/postsvg/model/operators/stack.rb +72 -0
- data/lib/postsvg/model/operators/transformations.rb +103 -0
- data/lib/postsvg/model/operators.rb +89 -0
- data/lib/postsvg/model/program.rb +68 -0
- data/lib/postsvg/model/token.rb +43 -0
- data/lib/postsvg/model.rb +17 -0
- data/lib/postsvg/options.rb +29 -0
- data/lib/postsvg/renderer.rb +85 -0
- data/lib/postsvg/serializer.rb +325 -0
- data/lib/postsvg/source/ast_builder.rb +308 -0
- data/lib/postsvg/source/lexer.rb +322 -0
- data/lib/postsvg/source/operand_stack.rb +55 -0
- data/lib/postsvg/source.rb +21 -0
- data/lib/postsvg/svg/attribute_parser.rb +45 -0
- data/lib/postsvg/svg/clip_path_registry.rb +44 -0
- data/lib/postsvg/svg/document.rb +22 -0
- data/lib/postsvg/svg/element.rb +84 -0
- data/lib/postsvg/svg/elements/circle.rb +36 -0
- data/lib/postsvg/svg/elements/clip_path.rb +26 -0
- data/lib/postsvg/svg/elements/defs.rb +24 -0
- data/lib/postsvg/svg/elements/ellipse.rb +38 -0
- data/lib/postsvg/svg/elements/group.rb +37 -0
- data/lib/postsvg/svg/elements/image.rb +35 -0
- data/lib/postsvg/svg/elements/line.rb +36 -0
- data/lib/postsvg/svg/elements/path.rb +32 -0
- data/lib/postsvg/svg/elements/polygon.rb +12 -0
- data/lib/postsvg/svg/elements/polyline.rb +32 -0
- data/lib/postsvg/svg/elements/rect.rb +44 -0
- data/lib/postsvg/svg/elements/svg.rb +39 -0
- data/lib/postsvg/svg/elements/text.rb +42 -0
- data/lib/postsvg/svg/elements.rb +31 -0
- data/lib/postsvg/svg/paint.rb +34 -0
- data/lib/postsvg/svg/parser.rb +39 -0
- data/lib/postsvg/svg/path_data/command.rb +27 -0
- data/lib/postsvg/svg/path_data/parser.rb +82 -0
- data/lib/postsvg/svg/path_data.rb +17 -0
- data/lib/postsvg/svg/stroke.rb +31 -0
- data/lib/postsvg/svg/transform_list.rb +59 -0
- data/lib/postsvg/svg.rb +22 -0
- data/lib/postsvg/svg_builder.rb +249 -0
- data/lib/postsvg/translation/arc_converter.rb +86 -0
- data/lib/postsvg/translation/bounding_box.rb +59 -0
- data/lib/postsvg/translation/context.rb +34 -0
- data/lib/postsvg/translation/handler_registry.rb +38 -0
- data/lib/postsvg/translation/handlers/circle_handler.rb +28 -0
- data/lib/postsvg/translation/handlers/clip_path_handler.rb +13 -0
- data/lib/postsvg/translation/handlers/defs_handler.rb +15 -0
- data/lib/postsvg/translation/handlers/ellipse_handler.rb +31 -0
- data/lib/postsvg/translation/handlers/group_handler.rb +21 -0
- data/lib/postsvg/translation/handlers/image_handler.rb +20 -0
- data/lib/postsvg/translation/handlers/line_handler.rb +23 -0
- data/lib/postsvg/translation/handlers/open_handler.rb +18 -0
- data/lib/postsvg/translation/handlers/path_handler.rb +356 -0
- data/lib/postsvg/translation/handlers/polygon_handler.rb +33 -0
- data/lib/postsvg/translation/handlers/polyline_handler.rb +31 -0
- data/lib/postsvg/translation/handlers/rect_handler.rb +27 -0
- data/lib/postsvg/translation/handlers/shared.rb +110 -0
- data/lib/postsvg/translation/handlers/svg_handler.rb +25 -0
- data/lib/postsvg/translation/handlers/text_handler.rb +56 -0
- data/lib/postsvg/translation/handlers.rb +25 -0
- data/lib/postsvg/translation/ps_renderer.rb +105 -0
- data/lib/postsvg/translation/record_emitter.rb +35 -0
- data/lib/postsvg/translation.rb +17 -0
- data/lib/postsvg/version.rb +1 -1
- data/lib/postsvg/visitors/ps_visitor/arithmetic.rb +125 -0
- data/lib/postsvg/visitors/ps_visitor/boolean.rb +105 -0
- data/lib/postsvg/visitors/ps_visitor/color.rb +53 -0
- data/lib/postsvg/visitors/ps_visitor/common.rb +66 -0
- data/lib/postsvg/visitors/ps_visitor/container.rb +164 -0
- data/lib/postsvg/visitors/ps_visitor/control_flow.rb +110 -0
- data/lib/postsvg/visitors/ps_visitor/device.rb +20 -0
- data/lib/postsvg/visitors/ps_visitor/dictionary.rb +89 -0
- data/lib/postsvg/visitors/ps_visitor/font.rb +93 -0
- data/lib/postsvg/visitors/ps_visitor/graphics_state.rb +55 -0
- data/lib/postsvg/visitors/ps_visitor/painting.rb +90 -0
- data/lib/postsvg/visitors/ps_visitor/path.rb +112 -0
- data/lib/postsvg/visitors/ps_visitor/stack.rb +47 -0
- data/lib/postsvg/visitors/ps_visitor/transformations.rb +101 -0
- data/lib/postsvg/visitors/ps_visitor.rb +208 -0
- data/lib/postsvg/visitors.rb +9 -0
- data/lib/postsvg.rb +93 -59
- data/lychee.toml +86 -0
- metadata +216 -11
- data/postsvg.gemspec +0 -38
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
= Installation
|
|
2
|
+
:page-nav_order: 1
|
|
3
|
+
:page-parent: Getting Started
|
|
4
|
+
|
|
5
|
+
== Purpose
|
|
6
|
+
|
|
7
|
+
This guide provides detailed instructions for installing Postsvg on various platforms and environments. Whether you're installing for development, production use, or integration into an existing project, this guide covers all installation methods.
|
|
8
|
+
|
|
9
|
+
== References
|
|
10
|
+
|
|
11
|
+
* link:../index.adoc[Documentation Home]
|
|
12
|
+
* link:../getting-started.adoc[Getting Started Overview]
|
|
13
|
+
* link:basic-usage.adoc[Basic Usage]
|
|
14
|
+
* link:https://rubygems.org/gems/postsvg[RubyGems Package]
|
|
15
|
+
|
|
16
|
+
== Concepts
|
|
17
|
+
|
|
18
|
+
**RubyGems**:: The Ruby package manager used to distribute and install Ruby libraries.
|
|
19
|
+
|
|
20
|
+
**Bundler**:: A dependency management tool for Ruby that ensures consistent gem versions across environments.
|
|
21
|
+
|
|
22
|
+
**Gem**:: A packaged Ruby library or application that can be installed and managed by RubyGems.
|
|
23
|
+
|
|
24
|
+
== System Requirements
|
|
25
|
+
|
|
26
|
+
=== Ruby Version
|
|
27
|
+
|
|
28
|
+
Postsvg requires **Ruby 2.7 or higher**.
|
|
29
|
+
|
|
30
|
+
Check your Ruby version:
|
|
31
|
+
|
|
32
|
+
[source,sh]
|
|
33
|
+
----
|
|
34
|
+
ruby -v
|
|
35
|
+
# Should output: ruby 2.7.0 or higher
|
|
36
|
+
----
|
|
37
|
+
|
|
38
|
+
=== Operating Systems
|
|
39
|
+
|
|
40
|
+
Postsvg works on all platforms that support Ruby:
|
|
41
|
+
|
|
42
|
+
* **macOS**: 10.15 (Catalina) or higher
|
|
43
|
+
* **Linux**: Any modern distribution (Ubuntu, Debian, CentOS, etc.)
|
|
44
|
+
* **Windows**: Windows 10 or higher with Ruby installed
|
|
45
|
+
|
|
46
|
+
=== Dependencies
|
|
47
|
+
|
|
48
|
+
**None!** Postsvg is a pure Ruby library with no external dependencies. You don't need:
|
|
49
|
+
|
|
50
|
+
* ❌ Ghostscript
|
|
51
|
+
* ❌ Inkscape
|
|
52
|
+
* ❌ ImageMagick
|
|
53
|
+
* ❌ Native compilation tools
|
|
54
|
+
|
|
55
|
+
== Installation Methods
|
|
56
|
+
|
|
57
|
+
=== Method 1: Install from RubyGems (Recommended)
|
|
58
|
+
|
|
59
|
+
The simplest way to install Postsvg:
|
|
60
|
+
|
|
61
|
+
[source,sh]
|
|
62
|
+
----
|
|
63
|
+
gem install postsvg
|
|
64
|
+
----
|
|
65
|
+
|
|
66
|
+
This installs:
|
|
67
|
+
* The `postsvg` gem and all its Ruby dependencies
|
|
68
|
+
* The `postsvg` command-line tool
|
|
69
|
+
* API documentation
|
|
70
|
+
|
|
71
|
+
.Verify installation
|
|
72
|
+
[example]
|
|
73
|
+
====
|
|
74
|
+
[source,sh]
|
|
75
|
+
----
|
|
76
|
+
postsvg version
|
|
77
|
+
# Output: postsvg version 0.1.0
|
|
78
|
+
|
|
79
|
+
which postsvg
|
|
80
|
+
# Output: /path/to/bin/postsvg
|
|
81
|
+
----
|
|
82
|
+
====
|
|
83
|
+
|
|
84
|
+
=== Method 2: Install with Bundler (For Projects)
|
|
85
|
+
|
|
86
|
+
For Ruby projects using Bundler:
|
|
87
|
+
|
|
88
|
+
**1. Add to Gemfile:**
|
|
89
|
+
|
|
90
|
+
[source,ruby]
|
|
91
|
+
----
|
|
92
|
+
# Gemfile
|
|
93
|
+
source 'https://rubygems.org'
|
|
94
|
+
|
|
95
|
+
gem 'postsvg'
|
|
96
|
+
----
|
|
97
|
+
|
|
98
|
+
**2. Install dependencies:**
|
|
99
|
+
|
|
100
|
+
[source,sh]
|
|
101
|
+
----
|
|
102
|
+
bundle install
|
|
103
|
+
----
|
|
104
|
+
|
|
105
|
+
**3. Use in your project:**
|
|
106
|
+
|
|
107
|
+
[source,ruby]
|
|
108
|
+
----
|
|
109
|
+
require 'postsvg'
|
|
110
|
+
|
|
111
|
+
svg = Postsvg.convert(ps_content)
|
|
112
|
+
----
|
|
113
|
+
|
|
114
|
+
**4. Run CLI via Bundler:**
|
|
115
|
+
|
|
116
|
+
[source,sh]
|
|
117
|
+
----
|
|
118
|
+
bundle exec postsvg convert input.ps output.svg
|
|
119
|
+
----
|
|
120
|
+
|
|
121
|
+
.Lock to specific version
|
|
122
|
+
[example]
|
|
123
|
+
====
|
|
124
|
+
[source,ruby]
|
|
125
|
+
----
|
|
126
|
+
# Gemfile - lock to exact version
|
|
127
|
+
gem 'postsvg', '0.1.0'
|
|
128
|
+
|
|
129
|
+
# Gemfile - lock to minor version
|
|
130
|
+
gem 'postsvg', '~> 0.1'
|
|
131
|
+
|
|
132
|
+
# Gemfile - latest version
|
|
133
|
+
gem 'postsvg'
|
|
134
|
+
----
|
|
135
|
+
====
|
|
136
|
+
|
|
137
|
+
=== Method 3: Install from Source (For Development)
|
|
138
|
+
|
|
139
|
+
For contributing to Postsvg or using unreleased features:
|
|
140
|
+
|
|
141
|
+
[source,sh]
|
|
142
|
+
----
|
|
143
|
+
# Clone repository
|
|
144
|
+
git clone https://github.com/metanorma/postsvg.git
|
|
145
|
+
cd postsvg
|
|
146
|
+
|
|
147
|
+
# Install dependencies
|
|
148
|
+
bundle install
|
|
149
|
+
|
|
150
|
+
# Build and install gem locally
|
|
151
|
+
gem build postsvg.gemspec
|
|
152
|
+
gem install postsvg-*.gem
|
|
153
|
+
|
|
154
|
+
# Or use directly via bundle exec
|
|
155
|
+
bundle exec postsvg version
|
|
156
|
+
----
|
|
157
|
+
|
|
158
|
+
== Installation by Platform
|
|
159
|
+
|
|
160
|
+
=== macOS
|
|
161
|
+
|
|
162
|
+
**1. Install Ruby (if not present):**
|
|
163
|
+
|
|
164
|
+
[source,sh]
|
|
165
|
+
----
|
|
166
|
+
# Using Homebrew
|
|
167
|
+
brew install ruby
|
|
168
|
+
|
|
169
|
+
# Or using rbenv (recommended)
|
|
170
|
+
brew install rbenv
|
|
171
|
+
rbenv install 3.2.0
|
|
172
|
+
rbenv global 3.2.0
|
|
173
|
+
----
|
|
174
|
+
|
|
175
|
+
**2. Install Postsvg:**
|
|
176
|
+
|
|
177
|
+
[source,sh]
|
|
178
|
+
----
|
|
179
|
+
gem install postsvg
|
|
180
|
+
----
|
|
181
|
+
|
|
182
|
+
**3. Verify installation:**
|
|
183
|
+
|
|
184
|
+
[source,sh]
|
|
185
|
+
----
|
|
186
|
+
postsvg version
|
|
187
|
+
----
|
|
188
|
+
|
|
189
|
+
.Troubleshooting macOS installation
|
|
190
|
+
[example]
|
|
191
|
+
====
|
|
192
|
+
If `postsvg` command is not found, add gem bin directory to PATH:
|
|
193
|
+
|
|
194
|
+
[source,sh]
|
|
195
|
+
----
|
|
196
|
+
# Find gem bin directory
|
|
197
|
+
gem environment | grep "EXECUTABLE DIRECTORY"
|
|
198
|
+
|
|
199
|
+
# Add to ~/.zshrc or ~/.bash_profile
|
|
200
|
+
export PATH="$PATH:/usr/local/lib/ruby/gems/3.2.0/bin"
|
|
201
|
+
|
|
202
|
+
# Reload shell
|
|
203
|
+
source ~/.zshrc
|
|
204
|
+
----
|
|
205
|
+
====
|
|
206
|
+
|
|
207
|
+
=== Linux (Ubuntu/Debian)
|
|
208
|
+
|
|
209
|
+
**1. Install Ruby:**
|
|
210
|
+
|
|
211
|
+
[source,sh]
|
|
212
|
+
----
|
|
213
|
+
# Update package list
|
|
214
|
+
sudo apt-get update
|
|
215
|
+
|
|
216
|
+
# Install Ruby
|
|
217
|
+
sudo apt-get install ruby-full
|
|
218
|
+
|
|
219
|
+
# Verify
|
|
220
|
+
ruby -v
|
|
221
|
+
----
|
|
222
|
+
|
|
223
|
+
**2. Install Postsvg:**
|
|
224
|
+
|
|
225
|
+
[source,sh]
|
|
226
|
+
----
|
|
227
|
+
# Install for current user (recommended)
|
|
228
|
+
gem install --user-install postsvg
|
|
229
|
+
|
|
230
|
+
# Or system-wide (requires sudo)
|
|
231
|
+
sudo gem install postsvg
|
|
232
|
+
----
|
|
233
|
+
|
|
234
|
+
**3. Add to PATH (if using --user-install):**
|
|
235
|
+
|
|
236
|
+
[source,sh]
|
|
237
|
+
----
|
|
238
|
+
# Add to ~/.bashrc
|
|
239
|
+
echo 'export PATH="$HOME/.gem/ruby/3.0.0/bin:$PATH"' >> ~/.bashrc
|
|
240
|
+
source ~/.bashrc
|
|
241
|
+
----
|
|
242
|
+
|
|
243
|
+
=== Linux (CentOS/RHEL)
|
|
244
|
+
|
|
245
|
+
**1. Install Ruby:**
|
|
246
|
+
|
|
247
|
+
[source,sh]
|
|
248
|
+
----
|
|
249
|
+
# Install Ruby via yum
|
|
250
|
+
sudo yum install ruby ruby-devel
|
|
251
|
+
|
|
252
|
+
# Or use rbenv
|
|
253
|
+
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-installer | bash
|
|
254
|
+
----
|
|
255
|
+
|
|
256
|
+
**2. Install Postsvg:**
|
|
257
|
+
|
|
258
|
+
[source,sh]
|
|
259
|
+
----
|
|
260
|
+
gem install postsvg
|
|
261
|
+
----
|
|
262
|
+
|
|
263
|
+
=== Windows
|
|
264
|
+
|
|
265
|
+
**1. Install Ruby:**
|
|
266
|
+
|
|
267
|
+
Download and install from link:https://rubyinstaller.org/[RubyInstaller for Windows]
|
|
268
|
+
|
|
269
|
+
* Download Ruby+Devkit installer
|
|
270
|
+
* Run installer with default options
|
|
271
|
+
* Select "Add Ruby executables to PATH"
|
|
272
|
+
|
|
273
|
+
**2. Install Postsvg:**
|
|
274
|
+
|
|
275
|
+
[source,cmd]
|
|
276
|
+
----
|
|
277
|
+
gem install postsvg
|
|
278
|
+
----
|
|
279
|
+
|
|
280
|
+
**3. Verify:**
|
|
281
|
+
|
|
282
|
+
[source,cmd]
|
|
283
|
+
----
|
|
284
|
+
postsvg version
|
|
285
|
+
----
|
|
286
|
+
|
|
287
|
+
.Windows PATH issues
|
|
288
|
+
[example]
|
|
289
|
+
====
|
|
290
|
+
If `postsvg` is not recognized:
|
|
291
|
+
|
|
292
|
+
1. Find gem bin directory:
|
|
293
|
+
[source,cmd]
|
|
294
|
+
----
|
|
295
|
+
gem environment
|
|
296
|
+
----
|
|
297
|
+
|
|
298
|
+
2. Add to System PATH via Environment Variables:
|
|
299
|
+
* Settings → System → Advanced system settings
|
|
300
|
+
* Environment Variables
|
|
301
|
+
* Edit PATH variable
|
|
302
|
+
* Add gem bin directory
|
|
303
|
+
====
|
|
304
|
+
|
|
305
|
+
== Docker Installation
|
|
306
|
+
|
|
307
|
+
For containerized deployments:
|
|
308
|
+
|
|
309
|
+
**Dockerfile:**
|
|
310
|
+
|
|
311
|
+
[source,dockerfile]
|
|
312
|
+
----
|
|
313
|
+
FROM ruby:3.2-slim
|
|
314
|
+
|
|
315
|
+
# Install Postsvg
|
|
316
|
+
RUN gem install postsvg
|
|
317
|
+
|
|
318
|
+
# Set working directory
|
|
319
|
+
WORKDIR /app
|
|
320
|
+
|
|
321
|
+
# Default command
|
|
322
|
+
CMD ["postsvg", "version"]
|
|
323
|
+
----
|
|
324
|
+
|
|
325
|
+
**Build and run:**
|
|
326
|
+
|
|
327
|
+
[source,sh]
|
|
328
|
+
----
|
|
329
|
+
# Build image
|
|
330
|
+
docker build -t postsvg .
|
|
331
|
+
|
|
332
|
+
# Run conversion
|
|
333
|
+
docker run -v $(pwd):/app postsvg convert input.ps output.svg
|
|
334
|
+
|
|
335
|
+
# Interactive shell
|
|
336
|
+
docker run -it -v $(pwd):/app postsvg bash
|
|
337
|
+
----
|
|
338
|
+
|
|
339
|
+
== CI/CD Installation
|
|
340
|
+
|
|
341
|
+
=== GitHub Actions
|
|
342
|
+
|
|
343
|
+
[source,yaml]
|
|
344
|
+
----
|
|
345
|
+
name: Convert PostScript
|
|
346
|
+
|
|
347
|
+
on: [push]
|
|
348
|
+
|
|
349
|
+
jobs:
|
|
350
|
+
convert:
|
|
351
|
+
runs-on: ubuntu-latest
|
|
352
|
+
steps:
|
|
353
|
+
- uses: actions/checkout@v3
|
|
354
|
+
|
|
355
|
+
- name: Set up Ruby
|
|
356
|
+
uses: ruby/setup-ruby@v1
|
|
357
|
+
with:
|
|
358
|
+
ruby-version: '3.2'
|
|
359
|
+
|
|
360
|
+
- name: Install Postsvg
|
|
361
|
+
run: gem install postsvg
|
|
362
|
+
|
|
363
|
+
- name: Convert files
|
|
364
|
+
run: postsvg batch ps_files/ svg_files/
|
|
365
|
+
----
|
|
366
|
+
|
|
367
|
+
=== GitLab CI
|
|
368
|
+
|
|
369
|
+
[source,yaml]
|
|
370
|
+
----
|
|
371
|
+
convert:
|
|
372
|
+
image: ruby:3.2
|
|
373
|
+
script:
|
|
374
|
+
- gem install postsvg
|
|
375
|
+
- postsvg batch ps_files/ svg_files/
|
|
376
|
+
artifacts:
|
|
377
|
+
paths:
|
|
378
|
+
- svg_files/
|
|
379
|
+
----
|
|
380
|
+
|
|
381
|
+
== Verifying Installation
|
|
382
|
+
|
|
383
|
+
After installation, verify Postsvg is working correctly:
|
|
384
|
+
|
|
385
|
+
[source,sh]
|
|
386
|
+
----
|
|
387
|
+
# Check version
|
|
388
|
+
postsvg version
|
|
389
|
+
|
|
390
|
+
# Get help
|
|
391
|
+
postsvg help
|
|
392
|
+
|
|
393
|
+
# Test conversion (create test file first)
|
|
394
|
+
echo '%!PS-Adobe-3.0
|
|
395
|
+
%%BoundingBox: 0 0 100 100
|
|
396
|
+
newpath
|
|
397
|
+
50 50 moveto
|
|
398
|
+
90 50 lineto
|
|
399
|
+
stroke' > test.ps
|
|
400
|
+
|
|
401
|
+
postsvg convert test.ps test.svg
|
|
402
|
+
cat test.svg
|
|
403
|
+
----
|
|
404
|
+
|
|
405
|
+
Expected output should include valid SVG markup.
|
|
406
|
+
|
|
407
|
+
== Updating Postsvg
|
|
408
|
+
|
|
409
|
+
=== Update via RubyGems
|
|
410
|
+
|
|
411
|
+
[source,sh]
|
|
412
|
+
----
|
|
413
|
+
# Update to latest version
|
|
414
|
+
gem update postsvg
|
|
415
|
+
|
|
416
|
+
# Check installed version
|
|
417
|
+
gem list postsvg
|
|
418
|
+
|
|
419
|
+
# Install specific version
|
|
420
|
+
gem install postsvg -v '0.2.0'
|
|
421
|
+
----
|
|
422
|
+
|
|
423
|
+
=== Update via Bundler
|
|
424
|
+
|
|
425
|
+
[source,sh]
|
|
426
|
+
----
|
|
427
|
+
# Update Gemfile.lock
|
|
428
|
+
bundle update postsvg
|
|
429
|
+
|
|
430
|
+
# Or update all gems
|
|
431
|
+
bundle update
|
|
432
|
+
----
|
|
433
|
+
|
|
434
|
+
== Uninstalling
|
|
435
|
+
|
|
436
|
+
=== Remove gem
|
|
437
|
+
|
|
438
|
+
[source,sh]
|
|
439
|
+
----
|
|
440
|
+
# Uninstall Postsvg
|
|
441
|
+
gem uninstall postsvg
|
|
442
|
+
|
|
443
|
+
# Remove all versions
|
|
444
|
+
gem uninstall postsvg --all
|
|
445
|
+
----
|
|
446
|
+
|
|
447
|
+
=== Clean Bundler
|
|
448
|
+
|
|
449
|
+
[source,sh]
|
|
450
|
+
----
|
|
451
|
+
# Remove from Gemfile
|
|
452
|
+
# Then update bundle
|
|
453
|
+
bundle install
|
|
454
|
+
----
|
|
455
|
+
|
|
456
|
+
== Troubleshooting
|
|
457
|
+
|
|
458
|
+
=== Permission Denied
|
|
459
|
+
|
|
460
|
+
**Problem:**
|
|
461
|
+
[source]
|
|
462
|
+
----
|
|
463
|
+
ERROR: While executing gem ... (Errno::EACCES)
|
|
464
|
+
Permission denied
|
|
465
|
+
----
|
|
466
|
+
|
|
467
|
+
**Solution:**
|
|
468
|
+
|
|
469
|
+
[source,sh]
|
|
470
|
+
----
|
|
471
|
+
# Use user install
|
|
472
|
+
gem install --user-install postsvg
|
|
473
|
+
|
|
474
|
+
# Or use sudo (not recommended)
|
|
475
|
+
sudo gem install postsvg
|
|
476
|
+
----
|
|
477
|
+
|
|
478
|
+
=== Command Not Found
|
|
479
|
+
|
|
480
|
+
**Problem:**
|
|
481
|
+
[source]
|
|
482
|
+
----
|
|
483
|
+
bash: postsvg: command not found
|
|
484
|
+
----
|
|
485
|
+
|
|
486
|
+
**Solution:**
|
|
487
|
+
|
|
488
|
+
[source,sh]
|
|
489
|
+
----
|
|
490
|
+
# Find gem bin directory
|
|
491
|
+
gem environment gemdir
|
|
492
|
+
|
|
493
|
+
# Add to PATH
|
|
494
|
+
export PATH="$PATH:$(gem environment gemdir)/bin"
|
|
495
|
+
----
|
|
496
|
+
|
|
497
|
+
=== Wrong Ruby Version
|
|
498
|
+
|
|
499
|
+
**Problem:**
|
|
500
|
+
[source]
|
|
501
|
+
----
|
|
502
|
+
Postsvg requires Ruby >= 2.7
|
|
503
|
+
----
|
|
504
|
+
|
|
505
|
+
**Solution:**
|
|
506
|
+
|
|
507
|
+
[source,sh]
|
|
508
|
+
----
|
|
509
|
+
# Check current version
|
|
510
|
+
ruby -v
|
|
511
|
+
|
|
512
|
+
# Install newer Ruby via rbenv
|
|
513
|
+
rbenv install 3.2.0
|
|
514
|
+
rbenv global 3.2.0
|
|
515
|
+
|
|
516
|
+
# Verify
|
|
517
|
+
ruby -v
|
|
518
|
+
----
|
|
519
|
+
|
|
520
|
+
== Next Steps
|
|
521
|
+
|
|
522
|
+
After successful installation:
|
|
523
|
+
|
|
524
|
+
* Try link:basic-usage.adoc[Basic Usage] examples
|
|
525
|
+
* Follow link:first-conversion.adoc[First Conversion] tutorial
|
|
526
|
+
* Explore link:../cli-reference.adoc[CLI Reference]
|
|
527
|
+
* Review link:../api-reference.adoc[API Reference] for programmatic use
|
|
528
|
+
|
|
529
|
+
== Bibliography
|
|
530
|
+
|
|
531
|
+
* link:https://rubygems.org/gems/postsvg[Postsvg on RubyGems]
|
|
532
|
+
* link:https://bundler.io/[Bundler Documentation]
|
|
533
|
+
* link:https://www.ruby-lang.org/[Ruby Programming Language]
|
|
534
|
+
* link:basic-usage.adoc[Basic Usage Guide]
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
= Getting Started
|
|
2
|
+
:page-nav_order: 2
|
|
3
|
+
|
|
4
|
+
== Purpose
|
|
5
|
+
|
|
6
|
+
This guide helps you get started with Postsvg, from installation through your first successful PostScript to SVG conversion.
|
|
7
|
+
|
|
8
|
+
Whether you're converting a single file or processing batches, validating PostScript documents, or integrating Postsvg into your application, this section provides the foundational knowledge you need.
|
|
9
|
+
|
|
10
|
+
== References
|
|
11
|
+
|
|
12
|
+
* link:index.adoc[Documentation Home]
|
|
13
|
+
* link:api-reference.adoc[API Reference]
|
|
14
|
+
* link:cli-reference.adoc[CLI Reference]
|
|
15
|
+
* link:https://github.com/metanorma/postsvg[GitHub Repository]
|
|
16
|
+
|
|
17
|
+
== Concepts
|
|
18
|
+
|
|
19
|
+
**PostScript**:: A page description language used for printing and graphics. PostScript files contain commands that describe how to draw vector graphics.
|
|
20
|
+
|
|
21
|
+
**EPS (Encapsulated PostScript)**:: A subset of PostScript designed for embedding graphics in documents. EPS files include a BoundingBox comment that defines the graphic's dimensions.
|
|
22
|
+
|
|
23
|
+
**SVG (Scalable Vector Graphics)**:: An XML-based vector graphics format supported by all modern web browsers. SVG can scale to any size without loss of quality.
|
|
24
|
+
|
|
25
|
+
**Conversion Pipeline**:: The process of reading PostScript commands, interpreting them, and generating equivalent SVG markup.
|
|
26
|
+
|
|
27
|
+
== Getting Started Topics
|
|
28
|
+
|
|
29
|
+
link:getting-started/installation.adoc[**Installation**]::
|
|
30
|
+
How to install Postsvg using RubyGems or Bundler, system requirements, and verifying your installation.
|
|
31
|
+
|
|
32
|
+
link:getting-started/basic-usage.adoc[**Basic Usage**]::
|
|
33
|
+
Convert your first PostScript file using both the Ruby API and command-line interface.
|
|
34
|
+
|
|
35
|
+
link:getting-started/first-conversion.adoc[**First Conversion Tutorial**]::
|
|
36
|
+
Step-by-step walkthrough of converting a PostScript file to SVG, understanding the output, and troubleshooting common issues.
|
|
37
|
+
|
|
38
|
+
link:getting-started/common-workflows.adoc[**Common Workflows**]::
|
|
39
|
+
Typical usage patterns including batch conversion, validation workflows, and integration with build systems.
|
|
40
|
+
|
|
41
|
+
== Quick Reference
|
|
42
|
+
|
|
43
|
+
=== Installation
|
|
44
|
+
|
|
45
|
+
[source,sh]
|
|
46
|
+
----
|
|
47
|
+
# Install from RubyGems
|
|
48
|
+
gem install postsvg
|
|
49
|
+
|
|
50
|
+
# Or add to Gemfile
|
|
51
|
+
gem 'postsvg'
|
|
52
|
+
----
|
|
53
|
+
|
|
54
|
+
=== Ruby API
|
|
55
|
+
|
|
56
|
+
[source,ruby]
|
|
57
|
+
----
|
|
58
|
+
require 'postsvg'
|
|
59
|
+
|
|
60
|
+
# Convert content
|
|
61
|
+
svg = Postsvg.convert(ps_content)
|
|
62
|
+
|
|
63
|
+
# Convert file
|
|
64
|
+
Postsvg.convert_file('input.eps', 'output.svg')
|
|
65
|
+
----
|
|
66
|
+
|
|
67
|
+
=== Command Line
|
|
68
|
+
|
|
69
|
+
[source,sh]
|
|
70
|
+
----
|
|
71
|
+
# Convert single file
|
|
72
|
+
postsvg convert input.eps output.svg
|
|
73
|
+
|
|
74
|
+
# Batch convert directory
|
|
75
|
+
postsvg batch ps_files/ svg_files/
|
|
76
|
+
|
|
77
|
+
# Validate file
|
|
78
|
+
postsvg check document.ps
|
|
79
|
+
----
|
|
80
|
+
|
|
81
|
+
== Next Steps
|
|
82
|
+
|
|
83
|
+
After completing the getting started guides, explore:
|
|
84
|
+
|
|
85
|
+
* link:concepts.adoc[Core Concepts] - Understand how Postsvg works internally
|
|
86
|
+
* link:cli-reference.adoc[CLI Reference] - Complete command-line reference
|
|
87
|
+
* link:api-reference.adoc[API Reference] - Detailed Ruby API documentation
|
|
88
|
+
* link:postscript.adoc[PostScript Language] - Learn about supported PostScript operators
|
|
89
|
+
|
|
90
|
+
== Bibliography
|
|
91
|
+
|
|
92
|
+
* link:https://rubygems.org/gems/postsvg[Postsvg on RubyGems]
|
|
93
|
+
* link:getting-started/installation.adoc[Installation Guide]
|
|
94
|
+
* link:getting-started/basic-usage.adoc[Basic Usage Guide]
|