Universal Container Format (UCF
) Ruby Library¶ ↑
Robert Haines¶ ↑
A Ruby library for creating, editing and validating UCF
files.
Synopsis¶ ↑
This is a Ruby library for working with UCF
documents. See the specification for more details. UCF
is a type of EPUB and very similar to the EPUB Open Container Format (OCF).
Most of this library’s API is provided by the underlying zip-container gem so you will need to consult that documentation as well in addition to this.
There are some examples of how to use the library provided in the examples directory. See the contents of the tests directory for even more.
Usage¶ ↑
This library has two entry points.
The main UCF::File
class is a specialization of ZipContainer::File which largely mimics the rubyzip Zip::File and Zip::FileSystem APIs.
The UCF::Dir
class is a based upon the ZipContainer::Dir class which mimics, where possible, the core ruby Dir API.
There are some examples of how to use the library provided in the examples directory. See the contents of the tests directory for even more.
Files in the META-INF directory¶ ↑
The UCF
specification requires that files in the META-INF directory are validated against a schema if they are present. If the nokogiri gem is available then this library will use it to validate the contents of the container.xml
and manifest.xml
files. This functionality is not enforced on the user in case they are not using the META-INF directory and so would not need the extra dependency on nokogiri.
Ruby version requirements and nokogiri¶ ↑
When used on its own the UCF
library requires Ruby version >=3.0, however, if you are using nokogiri for schema validation then you need to use Ruby version >=3.1 to satisfy its version constraints.
What this library can not do yet¶ ↑
The basic requirements of a UCF
document are all implemented but there are a number of optional features that are not yet provided.
-
Validation of all file contents in the META-INF directory. The
container.xml
andmanifest.xml
files are validated but others are not yet. -
Digital signatures (this feature has been deferred until a future revision of the
UCF
specification. It will be supported by this gem when it is added to the specification). -
Encryption (this feature has been deferred until a future revision of the
UCF
specification. It will be supported by this gem when it is added to the specification).
Library versions¶ ↑
From version 1.0.0 onwards, the principles of semantic versioning are applied when numbering releases with new features or breaking changes.
Developing Ruby UCF
¶ ↑
Please see our Code of Conduct and our contributor guidelines.
Licence¶ ↑
BSD (See LICENCE file or www.opensource.org/licenses/bsd-license.php).