Functionality
This gem processes Asciidoctor documents following a template for generating RSD documents.
The gem currently inherits from the https://github.com/riboseinc/metanorma-standoc gem, and aligns closely to it. Refer to the ISO gem documentation for guidance, including https://github.com/riboseinc/metanorma-iso/wiki/Guidance-for-authoring
The following outputs are generated.
-
(Optional) An HTML preview generated directly from the Asciidoctor document, using native Asciidoctor formatting.
-
AsciiMathML is to be used for mathematical formatting. The gem uses the Ruby AsciiMath parser, which is syntactically stricter than the common MathJax processor; if you do not get expected results, try bracketing terms your in AsciiMathML expressions.
-
-
an XML representation of the document, intended as a document model for RSD International Standards.
-
The XML representation is processed in turn to generate the following outputs as end deliverable RSD standard drafts.
-
DOC
-
HTML
-
This AsciiDoc syntax for writing RSD standards is hereby named "AsciiRSD".
Usage
The preferred way to invoke this gem is via the metanorma
script:
$ metanorma --type rsd a.adoc # output HTML and DOC
$ metanorma --type rsd --extensions html a.adoc # output just HTML
$ metanorma --type rsd --extensions doc a.adoc # output just DOC
$ metanorma --type rsd --extensions xml a.adoc # output RSD XML
The gem translates the document into RSD XML format, and then validates its output against the RSD XML document model; errors are reported to console against the XML, and are intended for users to check that they have provided all necessary components of the document.
The gem then converts the XML into HTML and PDF.
The gem can also be invoked directly within asciidoctor, though this is deprecated:
$ asciidoctor -b rsd -r 'metanorma-rsd' a.adoc
Installation
If you are using a Mac, the https://github.com/riboseinc/metanorma-macos-setup repository has instructions on setting up your machine to run Metanorma scripts such as this one. You need only run the following in a Terminal console:
$ bash <(curl -s https://raw.githubusercontent.com/riboseinc/metanorma-macos-setup/master/metanorma-setup)
$ gem install metanorma-rsd
$ gem install metanorma-cli
Approach
Document model
The Ribose Standard Document model used in this gem is an instance of the StandardDocument model.
The Metanorma XML format intends to introduce rigor into the RSD standards authoring process, and is prescribed in a separate document.
Asciidoctor
Asciidoctor has been selected as the authoring tool to generate the document model representation of RSD standards. It is a document formatting tool like Markdown and DocBook, which combines the relative ease of use of the former (using relatively lightweight markup), and the rigor and expressively of the latter (it has a well-defined syntax, and was in fact initially developed as a DocBook document authoring tool). Asciidoctor has built-in capability to output Text, DocBook and HTML; so it can be used to preview the file as it is being authored.
Generating documents via a document model substantially automated formatting associated with the document, including automating numbering of headings, figures, tables etc, and automatically generating references and citations.
Document Attributes
Common attributes
The gem relies on Asciidoctor document attributes to provide necessary metadata about the document. The metanorma-standoc gem documents the Asciidoctor document attributes common to all metanorma gems. These include:
:edition:
-
The document edition
:revdate:
-
The date the document was last updated
:copyright-year:
-
The year which will be claimed as when the copyright for the document was issued
:title:
-
The main component of the English title of the document (mandatory). (The first line of the AsciiDoc document, which contains the title introduced with
=
, is ignored) :doctype:
-
The document type (see RSD deliverables: The different types of RSD publications) (mandatory). The permitted types are:
-
policy-and-procedures
-
best-practices
-
supporting-document
-
report
-
legal
-
directives
-
proposal
-
standard
-
:status:`
-
The document status. The permitted types are:
proposal
,working-draft
,committee-draft
,draft-standard
,final-draft
,published
,withdrawn
. :committee:
-
The name of the relevant RSD committee (mandatory)
:committee-type:
-
The type of the relevant RSD committee (mandatory):
technical
orprovisional
. :language:
-
The language of the document (only
en
for now) (mandatory)
The attribute :draft:
, if present, includes review notes in the XML output;
these are otherwise suppressed.
Attributes specific to RSD:
:security:
-
Security level classification, e.g., "confidential", "client confidential"
Asciidoctor features specific to CSAND
The metanorma-standoc gem documents the customisations of Asciidoctor markup common to all metanorma gems. The following markup is specific to this gem:
-
[keyword]#...#
: encodes keywords, such as "MUST", "MUST NOT". (Encoded as<span class="keyword">…</span>
.
Data Models
The RSD Standard Document format is an instance of the StandardDocument model. Details of this general model can be found on its page. Details of the RSD modifications to this general model can be found on the RSD model repository.
Examples
-
spec/examples/rfc6350.adoc is an AsciiRSD version of RFC 6350.
-
spec/examples/rfc6350.html is an HTML file generated from the AsciiRSD.
-
spec/examples/rfc6350.doc is a Word document generated from the AsciiRSD.