
Security News
Oxlint Introduces Type-Aware Linting Preview
Oxlint’s new preview brings type-aware linting powered by typescript-go, combining advanced TypeScript rules with native-speed performance.
= Vectory
image:https://img.shields.io/gem/v/vectory.svg["Gem Version", link="https://rubygems.org/gems/vectory"] image:https://github.com/metanorma/vectory/actions/workflows/rake.yml/badge.svg["rake", link="https://github.com/metanorma/vectory/actions/workflows/rake.yml"] image:https://codeclimate.com/github/metanorma/vectory/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/metanorma/vectory"] image:https://img.shields.io/github/issues-pr-raw/metanorma/vectory.svg["Pull Requests", link="https://github.com/metanorma/vectory/pulls"] image:https://img.shields.io/github/commits-since/metanorma/vectory/latest.svg["Commits since latest",link="https://github.com/metanorma/vectory/releases"]
== Purpose
Vectory is a Ruby gem that performs pairwise vector image conversions for common vector image formats (EPS, PS, EMF, SVG).
[quote]
Vectory shall give you a glorious vectory over EPS files.
== Installation
=== Prerequisites
Vectory relies on the following software to be installed:
NOTE: Inkscape 1.3.1+ does not work properly with EPS/PS on Windows. To avoid this issue, the 1.3.0 version of Inkscape can be used.
=== Gem install
Or include it in your gemspec.
== Usage
Where,
format
:: the desired output format (one of: svg
, eps
, ps
, emf
)
input-file-name
:: file path to the input file
output-file-name
:: file path to the desired output file (with the
file extension) (default: writes to a current directory by the input filename
with an extension changed to a desired format)
=== Using the Ruby library
Some examples:
Take EMF as a path to a file and return SVG as a string:
path = "path/to/file.emf"
Take EPS as a string and return EMF as a path to a file:
content = "%!PS-Adobe-3.0 EPSF-3.0\n ... %%Trailer"
Take SVG as a datauri and return EMF as a datauri:
uri = "data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0 ... GRkYiLz48L3N2Zz4="
==== What is supported?
There are several vector classes which support conversion between each other:
Each of them can be instantiated in several ways:
Converting to other formats:
Several ways of getting content of an object:
==== Datauri
Also there is the Vectory::Datauri
class which represents vectory images in
the datauri format.
Convert an SVG datauri to a plain SVG:
Convert an EPS file to its datauri representation:
There is also a simplified API for this case:
==== SVG mapping (for the metanorma project)
Vectory can integrate SVG files into XML or HTML, respecting internal id and link references:
In order to do that an initial XML should support the svgmap
tag with links
mapping. For example, it can convert XML like this:
into XML containing inline SVG tags. Notice changes in the id
attributes and
the a
tags:
It also supports SVG in a form of an inline tag:
and datauri:
==== File system operations
An image object contains information where it is written. It can be obtained
with the #path
API:
Before the first write it raises the NotWrittenToDiskError
error:
After writing it returns a path of the image on a disk:
By default it writes to a temporary directory but it can be changed by providing an argument with a desired path:
Since an image can be initially read from a disk, it also keeps an initial path. To avoid accidental overwrite, this path is used only for read-only purposes.
==== Additional properties
The following additional properties are supported:
== Development
=== Releasing
Releasing is done automatically with GitHub Actions. Just bump and tag with
gem-release
.
For a patch release (0.0.x) use:
For a minor release (0.x.0) use:
== Contributing
Bug reports and pull requests are welcome on GitHub at:
FAQs
Unknown package
We found that vectory demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oxlint’s new preview brings type-aware linting powered by typescript-go, combining advanced TypeScript rules with native-speed performance.
Security News
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.