asciidoctor-m3d 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 842e662db881efd542ce7d9212b641a29f7d0e09
4
+ data.tar.gz: 726174ec00747868c445e860e4ee14823496d3d9
5
+ SHA512:
6
+ metadata.gz: 47d301acc7da5911dcc256392ebbb85c5fd84f305127f5a5bdca58aac7b489f03110ab90391495a80572778cfb67f36d083a3d79f05a7e913e0f07be996be1a8
7
+ data.tar.gz: ac46f2e039e772a2056c71e76573cfa82d795617365ab5e5b850eef524f3238baa4987af58fa60f49eb3ceeb43d439428b15f31b5ff002a7c30d9cf5174fb740
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ .DS_Store
@@ -0,0 +1,74 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at open.source@ribose.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "https://rubygems.org"
2
+ git_source(:github) {|repo| "https://github.com/#{repo}" }
3
+
4
+ gem "isodoc", github: "riboseinc/isodoc"
5
+ gem "asciidoctor-iso", github: "riboseinc/asciidoctor-iso"
6
+
7
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,182 @@
1
+ GIT
2
+ remote: https://github.com/riboseinc/asciidoctor-iso
3
+ revision: acb439aa79a102bff01f876b6f19bdf468a47861
4
+ specs:
5
+ asciidoctor-iso (0.7.5)
6
+ asciidoctor (~> 1.5.6)
7
+ html2doc
8
+ htmlentities (~> 4.3.4)
9
+ isodoc
10
+ nokogiri
11
+ ruby-jing
12
+ sass
13
+ thread_safe
14
+ uuidtools
15
+
16
+ GIT
17
+ remote: https://github.com/riboseinc/isodoc
18
+ revision: 71a0d3a0f6ed4c001968949187103247de97a879
19
+ specs:
20
+ isodoc (0.5.9)
21
+ asciimath
22
+ html2doc
23
+ htmlentities (~> 4.3.4)
24
+ image_size
25
+ liquid
26
+ mime-types
27
+ nokogiri
28
+ roman-numerals
29
+ ruby-xslt
30
+ thread_safe
31
+ uuidtools
32
+
33
+ PATH
34
+ remote: .
35
+ specs:
36
+ asciidoctor-m3d (0.2.5)
37
+ asciidoctor (~> 1.5.7)
38
+ asciidoctor-iso (>= 0.7.5)
39
+ asciimath
40
+ htmlentities (~> 4.3.4)
41
+ image_size
42
+ isodoc
43
+ mime-types
44
+ nokogiri
45
+ ruby-jing
46
+ ruby-xslt
47
+ thread_safe
48
+ uuidtools
49
+
50
+ GEM
51
+ remote: https://rubygems.org/
52
+ specs:
53
+ asciidoctor (1.5.7.1)
54
+ asciimath (1.0.4)
55
+ ast (2.4.0)
56
+ byebug (9.1.0)
57
+ coderay (1.1.2)
58
+ diff-lcs (1.3)
59
+ docile (1.3.0)
60
+ equivalent-xml (0.6.0)
61
+ nokogiri (>= 1.4.3)
62
+ ffi (1.9.23)
63
+ formatador (0.2.5)
64
+ guard (2.14.2)
65
+ formatador (>= 0.2.4)
66
+ listen (>= 2.7, < 4.0)
67
+ lumberjack (>= 1.0.12, < 2.0)
68
+ nenv (~> 0.1)
69
+ notiffany (~> 0.0)
70
+ pry (>= 0.9.12)
71
+ shellany (~> 0.0)
72
+ thor (>= 0.18.1)
73
+ guard-compat (1.2.1)
74
+ guard-rspec (4.7.3)
75
+ guard (~> 2.1)
76
+ guard-compat (~> 1.1)
77
+ rspec (>= 2.99.0, < 4.0)
78
+ html2doc (0.7.0)
79
+ asciimath
80
+ htmlentities (~> 4.3.4)
81
+ image_size
82
+ mime-types
83
+ nokogiri
84
+ ruby-xslt
85
+ thread_safe
86
+ uuidtools
87
+ htmlentities (4.3.4)
88
+ image_size (2.0.0)
89
+ json (2.1.0)
90
+ liquid (4.0.0)
91
+ listen (3.1.5)
92
+ rb-fsevent (~> 0.9, >= 0.9.4)
93
+ rb-inotify (~> 0.9, >= 0.9.7)
94
+ ruby_dep (~> 1.2)
95
+ lumberjack (1.0.13)
96
+ method_source (0.9.0)
97
+ mime-types (3.1)
98
+ mime-types-data (~> 3.2015)
99
+ mime-types-data (3.2016.0521)
100
+ mini_portile2 (2.3.0)
101
+ nenv (0.3.0)
102
+ nokogiri (1.8.2)
103
+ mini_portile2 (~> 2.3.0)
104
+ notiffany (0.1.1)
105
+ nenv (~> 0.1)
106
+ shellany (~> 0.0)
107
+ optout (0.0.2)
108
+ parallel (1.12.1)
109
+ parser (2.5.1.0)
110
+ ast (~> 2.4.0)
111
+ powerpack (0.1.1)
112
+ pry (0.11.3)
113
+ coderay (~> 1.1.0)
114
+ method_source (~> 0.9.0)
115
+ rainbow (3.0.0)
116
+ rake (12.3.1)
117
+ rb-fsevent (0.10.3)
118
+ rb-inotify (0.9.10)
119
+ ffi (>= 0.5.0, < 2)
120
+ roman-numerals (0.3.0)
121
+ rspec (3.7.0)
122
+ rspec-core (~> 3.7.0)
123
+ rspec-expectations (~> 3.7.0)
124
+ rspec-mocks (~> 3.7.0)
125
+ rspec-core (3.7.1)
126
+ rspec-support (~> 3.7.0)
127
+ rspec-expectations (3.7.0)
128
+ diff-lcs (>= 1.2.0, < 2.0)
129
+ rspec-support (~> 3.7.0)
130
+ rspec-mocks (3.7.0)
131
+ diff-lcs (>= 1.2.0, < 2.0)
132
+ rspec-support (~> 3.7.0)
133
+ rspec-support (3.7.1)
134
+ rubocop (0.56.0)
135
+ parallel (~> 1.10)
136
+ parser (>= 2.5)
137
+ powerpack (~> 0.1)
138
+ rainbow (>= 2.2.2, < 4.0)
139
+ ruby-progressbar (~> 1.7)
140
+ unicode-display_width (~> 1.0, >= 1.0.1)
141
+ ruby-jing (0.0.1)
142
+ optout (>= 0.0.2)
143
+ ruby-progressbar (1.9.0)
144
+ ruby-xslt (0.9.10)
145
+ ruby_dep (1.5.0)
146
+ sass (3.5.6)
147
+ sass-listen (~> 4.0.0)
148
+ sass-listen (4.0.0)
149
+ rb-fsevent (~> 0.9, >= 0.9.4)
150
+ rb-inotify (~> 0.9, >= 0.9.7)
151
+ shellany (0.0.1)
152
+ simplecov (0.16.1)
153
+ docile (~> 1.1)
154
+ json (>= 1.8, < 3)
155
+ simplecov-html (~> 0.10.0)
156
+ simplecov-html (0.10.2)
157
+ thor (0.20.0)
158
+ thread_safe (0.3.6)
159
+ timecop (0.9.1)
160
+ unicode-display_width (1.3.2)
161
+ uuidtools (2.1.5)
162
+
163
+ PLATFORMS
164
+ ruby
165
+
166
+ DEPENDENCIES
167
+ asciidoctor-m3d!
168
+ asciidoctor-iso!
169
+ bundler (~> 1.15)
170
+ byebug (~> 9.1)
171
+ equivalent-xml (~> 0.6)
172
+ guard (~> 2.14)
173
+ guard-rspec (~> 4.7)
174
+ isodoc!
175
+ rake (~> 12.0)
176
+ rspec (~> 3.6)
177
+ rubocop (~> 0.50)
178
+ simplecov (~> 0.15)
179
+ timecop (~> 0.9)
180
+
181
+ BUNDLED WITH
182
+ 1.16.1
data/LICENSE ADDED
@@ -0,0 +1,25 @@
1
+ BSD 2-Clause License
2
+
3
+ Copyright (c) 2018, Ribose
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ * Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.adoc ADDED
@@ -0,0 +1,275 @@
1
+ = AsciiM3D: Asciidoctor processor for Ribose Standard Documents (M3D)
2
+
3
+ image:https://img.shields.io/gem/v/asciidoctor-m3d.svg["Gem Version", link="https://rubygems.org/gems/asciidoctor-m3d"]
4
+ image:https://img.shields.io/travis/riboseinc/asciidoctor-m3d/master.svg["Build Status", link="https://travis-ci.org/riboseinc/asciidoctor-m3d"]
5
+ image:https://codeclimate.com/github/riboseinc/asciidoctor-m3d/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/riboseinc/asciidoctor-m3d"]
6
+
7
+ WARNING: This gem is still under development.
8
+
9
+ == Functionality
10
+
11
+ This gem processes http://asciidoctor.org/[Asciidoctor] documents following
12
+ a template for generating M3D documents.
13
+
14
+ The gem currently inherits from the https://github.com/riboseinc/asciidoctor-iso
15
+ gem, and aligns closely to it. Refer to the ISO gem
16
+ for guidance, including https://github.com/riboseinc/asciidoctor-iso/wiki/Guidance-for-authoring
17
+
18
+ The following outputs are generated.
19
+
20
+ * (Optional) An HTML preview generated directly from the Asciidoctor document,
21
+ using native Asciidoctor formatting.
22
+ ** http://asciimath.org[AsciiMathML] is to be used for mathematical formatting.
23
+ The gem uses the https://github.com/asciidoctor/asciimath[Ruby AsciiMath parser],
24
+ which is syntactically stricter than the common MathJax processor;
25
+ if you do not get expected results, try bracketing terms your in AsciiMathML
26
+ expressions.
27
+ * an XML representation of the document, intended as a document model for M3D
28
+ International Standards.
29
+ * The XML representation is processed in turn to generate the following outputs
30
+ as end deliverable M3D standard drafts.
31
+ ** Microsoft Word output (`.doc`), following the style conventions of the
32
+ https://www.m3d.org/m3d-templates.html[M3D Standard Microsoft Word template].
33
+ (In development)
34
+ ** PDF (forthcoming)
35
+ ** HTML (forthcoming)
36
+
37
+ This AsciiDoc syntax for writing M3D standards is hereby named "AsciiM3D".
38
+
39
+ == Usage
40
+
41
+ [source,console]
42
+ ----
43
+ $ asciidoctor a.adoc # HTML output of Asciidoc file
44
+ $ asciidoctor -b m3d -r 'asciidoctor-m3d' a.adoc # M3D XML output
45
+ ----
46
+
47
+ The gem translates the document into M3D XML format, and then
48
+ validates its output against the M3D XML document model; errors are
49
+ reported to console against the XML, and are intended for users to
50
+ check that they have provided all necessary components of the
51
+ document.
52
+
53
+ TODO: The gem will then convert the XML to Word Document, HTML, and
54
+ PDF, and output those files with the appropriate file suffixes.
55
+ `lib/asciidoctor/m3d/m3d2wordhtml.rb` is work in progress, and not yet
56
+ integrated into the executable.
57
+
58
+ === Content Warnings
59
+
60
+ The gem also realises several format checks as prescribed in ISO/IEC
61
+ DIR 2, and warns the user about them in the console:
62
+
63
+ * Numbers with what looks like dots instead of commas for decimal points.
64
+
65
+ * Groups of numbers without spacing for every three digits. (The gem attempts
66
+ to ignore M3D references.)
67
+
68
+ * No space before percent sign.
69
+
70
+ * No bracketing of tolerance in percentage (e.g. `15 ± 7 % .`)
71
+
72
+ * No recommendations, permissions or requirements (detected by keyword) in:
73
+ foreword, scope, introduction, term examples and examples, notes, footnotes.
74
+
75
+ * No subclauses that are the only child of a clause. (In clauses, annexes, or
76
+ scopes.)
77
+
78
+ * 5 levels of subclause nesting. (Never actuated, AsciiDoc only permits 4
79
+ levels of subsections.)
80
+
81
+ * Non-M3D/IEC reference turning up as normative.
82
+
83
+ * Term definition starts with an article, or ends with a period.
84
+
85
+ * Title intro or title part appears in only one of French or English.
86
+
87
+ == Approach
88
+
89
+ === Document model
90
+
91
+ The Ribose Standard Document model is an instance of the
92
+ https://github.com/riboseinc/isodoc-models[StandardDocument model].
93
+
94
+ The M3D format ("M3D XML") intends to introduce rigor into the M3D
95
+ standards authoring process, and is prescribed in a separate document.
96
+
97
+ M3D XML is still under development, but it already contains all the markup
98
+ needed to render a M3D document into HTML.
99
+
100
+ WARNING: The current RNG model of M3D XML is out of sync with the UML.
101
+
102
+ === Asciidoctor
103
+
104
+ Asciidoctor has been selected as the authoring tool to generate the document
105
+ model representation of M3D standards. It is a document formatting tool like
106
+ Markdown and DocBook, which combines the relative ease of use of the former
107
+ (using relatively lightweight markup), and the rigor and expressively of the
108
+ latter (it has a well-defined syntax, and was in fact initially developed as a
109
+ DocBook document authoring tool). Asciidoctor has built-in capability to output
110
+ Text, DocBook and HTML; so it can be used to preview the file as it is being
111
+ authored.
112
+
113
+ Note that in order to generate HTML preview output close to what is intended
114
+ in the M3D standard, the Asciidoc
115
+ document includes a fair amount of formatting instructions (e.g. disabling
116
+ section numbering where appropriate, the titling of Appendixes as Annexes), as
117
+ well as M3D boilerplate text, and predefined section headers (sections are
118
+ recognised by fixed titles such as `Normative References`). Authoring M3D
119
+ standards in this fashion assumes that users will be populating an Asciidoc
120
+ template, and not removing needed formatting instructions.
121
+
122
+ === Features not visible in HTML preview
123
+
124
+ The gem uses built-in Asciidoc formatting as much as possible, so that users
125
+ can retain the ability to preview documents; for _Terms and Definitions_
126
+ clauses, which have a good deal of explicit structure, macros have been
127
+ introduced for semantic markup (admitted terms, deprecated terms, etc). The
128
+ default HTML output of an Asciidoc-formatted M3D document is quite close to the
129
+ intended final output, with the following exceptions. Note that the final
130
+ outputs of the conversion (Microsoft Word, PDF, HTML) do not have these exceptions,
131
+ and comply with the M3D Standard specifications.
132
+
133
+ * _Terms and Definitions_: each term is marked up as an unnumbered subclause,
134
+ the semantic markup of alternate and other terms is not rendered visually.
135
+
136
+ * _Formulas_: Asciidoctor has no provision for the automated numbering of
137
+ isolated block formulas ("stem"), and does not display the number assigned a
138
+ block formula in its default HTML processor—although it does provide automated
139
+ numbering of examples. Formula numbering is provided in the final outputs
140
+ of the conversion.
141
+
142
+ * _Missing elements_: The document model does not yet include Asciidoc elements
143
+ that do not appear to be relevant to M3D Standards; these will be ignored in
144
+ generating M3D XML. Those elements include:
145
+ * sidebars (`aside`) (as distinct from warnings),
146
+ * ASCII art/preformatted text (`literal`) (as distinct from sourcecode listings),
147
+ * page breaks (`thematic break`).
148
+
149
+ * _Markup_: Some connecting text which is used to convey markup structure is
150
+ left out: in particular, `DEPRECATED` and `SOURCE` (replaced by formatting
151
+ macros).
152
+
153
+ * _Tables_: Table footnotes are treated like all other footnotes: they are
154
+ rendered at the bottom of the document, rather than the bottom of the table,
155
+ and they are not numbered separately.
156
+
157
+ * _Cross-references_: Footnoted cross-references are indicated with the reference
158
+ text `fn` in m3dlation, or `fn:` as a prefix to the reference text. The default
159
+ HTML processor leaves these as is: if no reference text is given, only `fn`
160
+ will be displayed (though it will still hyperlink to the right reference).
161
+
162
+ * _References_: The convention for references is that M3D documents are cited
163
+ without brackets by M3D number, and optionally year, whether they are normative
164
+ or in the bibliography (e.g. `M3D 20483:2013`); while all other references are
165
+ cited by bracketed number in the bibliography (e.g. `[1]`). The default HTML
166
+ processor treats all references the same, and will bracket them (e.g. `[M3D
167
+ 20483:2013]`). For the same reason, M3D references listed in the bibliography
168
+ will be listed under an M3D reference, rather than a bracketed number.
169
+
170
+ * _References_: References are rendered cited throughout, since they are
171
+ automated. For that reason, if reference is to be made to both an undated and a
172
+ dated version of an M3D reference, these need to be explicitly listed as
173
+ separate references. (This is not done in the Rice model document, which lists
174
+ M3D 6646, but under _Terms and Definitions_ cites the dated M3D 6646:2011.
175
+
176
+ * _References_: M3D references that are undated but published have their date
177
+ indicated under the M3D standards format in an explanatory footnote. Because of
178
+ constraints introduced by Asciidoctor, that explanation is instead given in
179
+ square brackets in Asciidoc format.
180
+
181
+ * _Annexes_: Subheadings cannot preserve subsection numbering, while also
182
+ appearing inline with their text (e.g. Rice document, Annex B.2): they appear
183
+ as headings in separate lines.
184
+
185
+ * _Annexes_: Cross-references to Annex subclauses are automatically prefixed
186
+ with `Clause` rather than `Annex` or nothing.
187
+
188
+ * _Metadata_: Document metadata such as document numbers, technical committees
189
+ and title wording are not rendered in the default HTML output.
190
+
191
+ * _Patent Notice_: Patent notices are treated and rendered as a subsection of
192
+ the introduction, with an explicit subheading.
193
+
194
+ * _Numbering_: The numbering of figures and tables is sequential in the default
195
+ HTML processor: it does not include the Clause or Annex number. This,
196
+ _Figure 1_, not _Figure A.1_.
197
+
198
+ * _Notes_: There is no automatic note numbering by the default HTML processor.
199
+
200
+ * _Review Notes_: The reviewer on the review note is not displayed.
201
+
202
+ * _Keys_: Keys to formulas and figures are expected to be marked up as
203
+ definition lists consistently, rather than as inline prose.
204
+
205
+ * _Figures_: Simple figures are marked up as images, figures containing
206
+ subfigures as examples. Numbering by the default HTML processor may be
207
+ inconsistent. Subfigures are automatically numbered as independent figures.
208
+
209
+ * _Markup_: The default HTML processor does not support CSS extensions such as
210
+ small caps or strike through, though these can be marked up as CSS classes
211
+ through custom macros in Asciidoctor: a custom CSS stylesheet will be needed to
212
+ render them.
213
+
214
+
215
+
216
+ TODO: May need to only encode figures as examples.
217
+
218
+ == Document Attributes
219
+
220
+ The gem relies on Asciidoctor document attributes to provide necessary
221
+ metadata about the document. These include:
222
+
223
+ `:edition:`:: The document edition
224
+
225
+ `:revdate:`:: The date the document was last updated
226
+
227
+ `:copyright-year:`:: The year which will be claimed as when the copyright for
228
+ the document was issued
229
+
230
+ `:title:`:: The main component of the English title of the document
231
+ (mandatory). (The first line of the AsciiDoc document, which contains the title
232
+ introduced with `=`, is ignored)
233
+
234
+ `:doctype:`:: The document type (see M3D deliverables: The different types of
235
+ M3D publications) (mandatory). The permitted types are:
236
+ +
237
+ --
238
+ code:: Code Artifact
239
+ presentation:: Presentation
240
+ proposal:: Proposal; includes IETF DRAFT
241
+ standard:: Recommendation; includes IETF RFC
242
+ report:: report
243
+ --
244
+
245
+ `:status:``:: The document status. The permitted types are: `proposal`,
246
+ `working-draft`, `committee-draft`, `draft-standard`, `final-draft`,
247
+ `published`, `withdrawn`.
248
+
249
+ `:technical-committee:`:: The name of the relevant M3D technical committee
250
+ (mandatory)
251
+
252
+ `:language:` :: The language of the document (only `en` for now) (mandatory)
253
+
254
+
255
+ The attribute `:draft:`, if present, includes review notes in the XML output;
256
+ these are otherwise suppressed.
257
+
258
+ == AsciiM3D features not also present in AsciiISO
259
+
260
+ * `+[keyword]#...#+`: encodes keywords, such as "MUST", "MUST NOT". (Encoded as
261
+ `<span class="keyword">...</span>`.
262
+
263
+ == Data Models
264
+
265
+ The M3D Standard Document format is an instance of the
266
+ https://github.com/riboseinc/isodoc-models[StandardDocument model]. Details of
267
+ this general model can be found on its page. Details of the M3D modifications
268
+ to this general model can be found on the https://github.com/riboseinc/m3d[M3D model]
269
+ repository.
270
+
271
+ == Examples
272
+
273
+ * link:spec/examples/rfc6350.adoc[] is an AsciiM3D version of https://tools.ietf.org/html/rfc6350[RFC 6350].
274
+ * link:spec/examples/rfc6350.html[] is an HTML file generated from the AsciiM3D.
275
+ * link:spec/examples/rfc6350.doc[] is a Word document generated from the AsciiM3D.