metanorma-m3aawg 1.5.6 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +27 -8
- data/README.adoc +2 -4
- data/lib/asciidoctor/m3aawg/converter.rb +4 -49
- data/lib/asciidoctor/m3aawg/isodoc.rng +13 -0
- data/lib/isodoc/m3aawg/base_convert.rb +2 -12
- data/lib/isodoc/m3aawg/html_convert.rb +7 -31
- data/lib/isodoc/m3aawg/i18n.rb +3 -4
- data/lib/isodoc/m3aawg/init.rb +2 -5
- data/lib/isodoc/m3aawg/m3d.report.xsl +99 -22
- data/lib/isodoc/m3aawg/metadata.rb +5 -17
- data/lib/isodoc/m3aawg/presentation_xml_convert.rb +11 -6
- data/lib/isodoc/m3aawg/word_convert.rb +4 -35
- data/lib/isodoc/m3aawg/xref.rb +5 -0
- data/lib/metanorma/m3aawg.rb +28 -2
- data/lib/metanorma/m3aawg/processor.rb +4 -1
- data/lib/metanorma/m3aawg/version.rb +1 -1
- data/metanorma-m3d.gemspec +1 -1
- data/metanorma.yml +45 -0
- metadata +6 -6
- data/lib/asciidoctor/m3aawg/validate.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2fd3488774323dab01d7b10d584bae9492abebe8d22376a1a3a5351026cd8f2
|
4
|
+
data.tar.gz: f3d059e05c404ad418f7bce4251e36b00781dd8e7df08891957e8becd64477be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce3566f1142e13b1e7643dff05304bfe46e00a45aefcd147fcc7b6c995cf390bf7ead57f1951aab95327408908611810f8a6b00abcd4231e5a66418de1953f21
|
7
|
+
data.tar.gz: f46acdf4f84b6a3c14cbe24c4ef9115254150afba1bda0dbc8583478a265eb9f1148f2bdacec040f8dcea820c9e270cf31b94660aaba49328318c810ac97ab80
|
data/.github/workflows/rake.yml
CHANGED
@@ -4,7 +4,8 @@ name: rake
|
|
4
4
|
|
5
5
|
on:
|
6
6
|
push:
|
7
|
-
branches: [ master ]
|
7
|
+
branches: [ master, main ]
|
8
|
+
tags: [ v* ]
|
8
9
|
pull_request:
|
9
10
|
|
10
11
|
jobs:
|
@@ -31,14 +32,32 @@ jobs:
|
|
31
32
|
steps:
|
32
33
|
- uses: actions/checkout@master
|
33
34
|
|
34
|
-
-
|
35
|
-
uses: ruby/setup-ruby@v1
|
35
|
+
- uses: ruby/setup-ruby@v1
|
36
36
|
with:
|
37
37
|
ruby-version: ${{ matrix.ruby }}
|
38
|
-
bundler-cache: true
|
39
38
|
|
40
|
-
-
|
41
|
-
|
39
|
+
- uses: actions/cache@v1
|
40
|
+
with:
|
41
|
+
path: vendor/bundle
|
42
|
+
key: bundle-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('**/*.gemspec') }}
|
43
|
+
restore-keys: bundle-${{ matrix.os }}-${{ matrix.ruby }}
|
44
|
+
|
45
|
+
- run: bundle config set path 'vendor/bundle'
|
46
|
+
|
47
|
+
- run: bundle install --jobs 4 --retry 3
|
42
48
|
|
43
|
-
-
|
44
|
-
|
49
|
+
- run: bundle exec rake
|
50
|
+
|
51
|
+
notify:
|
52
|
+
name: Trigger notify workflow
|
53
|
+
needs: rake
|
54
|
+
runs-on: ubuntu-latest
|
55
|
+
steps:
|
56
|
+
- name: Trigger notify workflow
|
57
|
+
uses: Sibz/github-status-action@v1
|
58
|
+
with:
|
59
|
+
authToken: ${{ secrets.GITHUB_TOKEN }}
|
60
|
+
context: 'tests-passed-successfully'
|
61
|
+
description: 'Tests passed successfully'
|
62
|
+
state: 'success'
|
63
|
+
sha: ${{ github.event.pull_request.head.sha || github.sha }}
|
data/README.adoc
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
= Metanorma processor for M3AAWG documents
|
2
2
|
|
3
3
|
https://github.com/metanorma/metanorma-m3aawg[metanorma-m3aawg] image:https://img.shields.io/gem/v/metanorma-m3aawg.svg["Gem Version", link="https://rubygems.org/gems/metanorma-m3aawg"]::
|
4
|
-
image:https://github.com/metanorma/metanorma-m3aawg/workflows/
|
5
|
-
image:https://github.com/metanorma/metanorma-m3aawg/workflows/windows/badge.svg["Build Status", link="https://github.com/metanorma/metanorma-m3aawg/actions?workflow=windows"]
|
6
|
-
image:https://github.com/metanorma/metanorma-m3aawg/workflows/ubuntu/badge.svg["Build Status", link="https://github.com/metanorma/metanorma-m3aawg/actions?workflow=ubuntu"]
|
4
|
+
image:https://github.com/metanorma/metanorma-m3aawg/workflows/rake/badge.svg["Build Status", link="https://github.com/metanorma/metanorma-m3aawg/actions?workflow=rake"]
|
7
5
|
image:https://codeclimate.com/github/metanorma/metanorma-m3aawg/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/metanorma/metanorma-m3aawg"]
|
8
6
|
image:https://img.shields.io/github/issues-pr-raw/metanorma/metanorma-m3aawg.svg["Pull Requests", link="https://github.com/metanorma/metanorma-m3aawg/pulls"]
|
9
7
|
image:https://img.shields.io/github/commits-since/metanorma/metanorma-m3aawg/latest.svg["Commits since latest",link="https://github.com/metanorma/metanorma-m3aawg/releases"]
|
@@ -12,7 +10,7 @@ _Formerly known as_ `asciidoctor-m3d`.
|
|
12
10
|
|
13
11
|
== Functionality
|
14
12
|
|
15
|
-
This gem processes
|
13
|
+
This gem processes https://www.metanorma.com[Metanorma documents] following
|
16
14
|
a template for generating M3AAWG documents.
|
17
15
|
|
18
16
|
The gem currently inherits from the https://github.com/metanorma/metanorma-standoc
|
@@ -1,27 +1,14 @@
|
|
1
|
-
require "asciidoctor"
|
2
|
-
require "metanorma/m3aawg/version"
|
3
|
-
require "isodoc/m3aawg/html_convert"
|
4
|
-
require "isodoc/m3aawg/word_convert"
|
5
|
-
require "isodoc/m3aawg/pdf_convert"
|
6
1
|
require "asciidoctor/standoc/converter"
|
7
|
-
require
|
8
|
-
require_relative "./validate.rb"
|
2
|
+
require 'asciidoctor/generic/converter'
|
9
3
|
|
10
4
|
module Asciidoctor
|
11
5
|
module M3AAWG
|
12
|
-
|
13
|
-
# A {Converter} implementation that generates M3D output, and a document
|
14
|
-
# schema encapsulation of the document for validation
|
15
|
-
class Converter < Standoc::Converter
|
6
|
+
class Converter < Asciidoctor::Generic::Converter
|
16
7
|
XML_ROOT_TAG = "m3d-standard".freeze
|
17
8
|
XML_NAMESPACE = "https://www.metanorma.org/ns/m3d".freeze
|
18
9
|
|
19
10
|
register_for "m3aawg"
|
20
11
|
|
21
|
-
def default_publisher
|
22
|
-
"Messaging Malware and Mobile Anti-Abuse Working Group"
|
23
|
-
end
|
24
|
-
|
25
12
|
def metadata_committee(node, xml)
|
26
13
|
return unless node.attr("technical-committee")
|
27
14
|
xml.editorialgroup do |a|
|
@@ -36,21 +23,8 @@ module Asciidoctor
|
|
36
23
|
end
|
37
24
|
end
|
38
25
|
|
39
|
-
|
40
|
-
|
41
|
-
dn = node.attr("docnumber")
|
42
|
-
if docstatus
|
43
|
-
abbr = IsoDoc::M3AAWG::Metadata.new("en", "Latn", @i18n).
|
44
|
-
stage_abbr(docstatus)
|
45
|
-
dn = "#{dn}(#{abbr})" unless abbr.empty?
|
46
|
-
end
|
47
|
-
node.attr("copyright-year") and dn += ":#{node.attr("copyright-year")}"
|
48
|
-
xml.docidentifier dn, **{type: "M3AAWG"}
|
49
|
-
xml.docnumber { |i| i << node.attr("docnumber") }
|
50
|
-
end
|
51
|
-
|
52
|
-
def title_validate(root)
|
53
|
-
nil
|
26
|
+
def configuration
|
27
|
+
Metanorma::M3AAWG.configuration
|
54
28
|
end
|
55
29
|
|
56
30
|
def makexml(node)
|
@@ -58,15 +32,6 @@ module Asciidoctor
|
|
58
32
|
super
|
59
33
|
end
|
60
34
|
|
61
|
-
def doctype(node)
|
62
|
-
d = super
|
63
|
-
unless %w{policy best-practices supporting-document report}.include? d
|
64
|
-
@log.add("Document Attributes", nil, "#{d} is not a legal document type: reverting to 'report'")
|
65
|
-
d = "report"
|
66
|
-
end
|
67
|
-
d
|
68
|
-
end
|
69
|
-
|
70
35
|
def outputs(node, ret)
|
71
36
|
File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
|
72
37
|
presentation_xml_converter(node).convert(@filename + ".xml")
|
@@ -75,12 +40,6 @@ module Asciidoctor
|
|
75
40
|
pdf_converter(node)&.convert(@filename + ".presentation.xml", nil, false, "#{@filename}.pdf")
|
76
41
|
end
|
77
42
|
|
78
|
-
def validate(doc)
|
79
|
-
content_validate(doc)
|
80
|
-
schema_validate(formattedstr_strip(doc.dup),
|
81
|
-
File.join(File.dirname(__FILE__), "m3d.rng"))
|
82
|
-
end
|
83
|
-
|
84
43
|
def sections_cleanup(x)
|
85
44
|
super
|
86
45
|
x.xpath("//*[@inline-header]").each do |h|
|
@@ -88,10 +47,6 @@ module Asciidoctor
|
|
88
47
|
end
|
89
48
|
end
|
90
49
|
|
91
|
-
def style(n, t)
|
92
|
-
return
|
93
|
-
end
|
94
|
-
|
95
50
|
def presentation_xml_converter(node)
|
96
51
|
IsoDoc::M3AAWG::PresentationXMLConvert.new(html_extract_attributes(node))
|
97
52
|
end
|
@@ -24,6 +24,14 @@
|
|
24
24
|
<start>
|
25
25
|
<ref name="standard-document"/>
|
26
26
|
</start>
|
27
|
+
<define name="doctype">
|
28
|
+
<element name="doctype">
|
29
|
+
<optional>
|
30
|
+
<attribute name="abbreviation"/>
|
31
|
+
</optional>
|
32
|
+
<ref name="DocumentType"/>
|
33
|
+
</element>
|
34
|
+
</define>
|
27
35
|
<define name="hyperlink">
|
28
36
|
<element name="link">
|
29
37
|
<attribute name="target">
|
@@ -141,6 +149,11 @@
|
|
141
149
|
<data type="boolean"/>
|
142
150
|
</attribute>
|
143
151
|
</optional>
|
152
|
+
<optional>
|
153
|
+
<attribute name="key">
|
154
|
+
<data type="boolean"/>
|
155
|
+
</attribute>
|
156
|
+
</optional>
|
144
157
|
<oneOrMore>
|
145
158
|
<ref name="dt"/>
|
146
159
|
<ref name="dd"/>
|
@@ -3,18 +3,8 @@ require "fileutils"
|
|
3
3
|
module IsoDoc
|
4
4
|
module M3AAWG
|
5
5
|
module BaseRender
|
6
|
-
def
|
7
|
-
|
8
|
-
term_cleanup(docxml)
|
9
|
-
end
|
10
|
-
|
11
|
-
def term_cleanup(docxml)
|
12
|
-
docxml.xpath("//p[@class = 'Terms']").each do |d|
|
13
|
-
h2 = d.at("./preceding-sibling::*[@class = 'TermNum'][1]")
|
14
|
-
h2.add_child(" ")
|
15
|
-
h2.add_child(d.remove)
|
16
|
-
end
|
17
|
-
docxml
|
6
|
+
def configuration
|
7
|
+
Metanorma::M3AAWG.configuration
|
18
8
|
end
|
19
9
|
end
|
20
10
|
end
|
@@ -1,35 +1,18 @@
|
|
1
1
|
require "isodoc"
|
2
|
+
require "isodoc/generic/html_convert"
|
2
3
|
require_relative "base_convert"
|
3
4
|
require_relative "init"
|
4
5
|
|
5
6
|
module IsoDoc
|
6
7
|
module M3AAWG
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def initialize(options)
|
11
|
-
@libdir = File.dirname(__FILE__)
|
12
|
-
super
|
13
|
-
end
|
14
|
-
|
15
|
-
def default_fonts(options)
|
16
|
-
{
|
17
|
-
bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' :
|
18
|
-
'"Overpass",sans-serif'),
|
19
|
-
headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' :
|
20
|
-
'"Overpass",sans-serif'),
|
21
|
-
monospacefont: '"Space Mono",monospace'
|
22
|
-
}
|
8
|
+
class HtmlConvert < IsoDoc::Generic::HtmlConvert
|
9
|
+
def configuration
|
10
|
+
Metanorma::M3AAWG.configuration
|
23
11
|
end
|
24
12
|
|
25
|
-
def
|
26
|
-
|
27
|
-
|
28
|
-
htmlcoverpage: html_doc_path("html_m3d_titlepage.html"),
|
29
|
-
htmlintropage: html_doc_path("html_m3d_intro.html"),
|
30
|
-
standardstylesheet: nil,
|
31
|
-
scripts: html_doc_path("scripts.html"),
|
32
|
-
}
|
13
|
+
def initialize(options)
|
14
|
+
#require "byebug"; byebug
|
15
|
+
super
|
33
16
|
end
|
34
17
|
|
35
18
|
def colophon(body, docxml)
|
@@ -45,13 +28,6 @@ module IsoDoc
|
|
45
28
|
end
|
46
29
|
end
|
47
30
|
|
48
|
-
def googlefonts()
|
49
|
-
<<~HEAD.freeze
|
50
|
-
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i|Space+Mono:400,700" rel="stylesheet">
|
51
|
-
<link href="https://fonts.googleapis.com/css?family=Overpass:300,300i,600,900" rel="stylesheet">
|
52
|
-
HEAD
|
53
|
-
end
|
54
|
-
|
55
31
|
def make_body(xml, docxml)
|
56
32
|
body_attr = { lang: "EN-US", link: "blue", vlink: "#954F72",
|
57
33
|
"xml:lang": "EN-US", class: "container" }
|
data/lib/isodoc/m3aawg/i18n.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
module IsoDoc
|
2
2
|
module M3AAWG
|
3
|
-
class I18n < IsoDoc::I18n
|
4
|
-
def
|
5
|
-
|
6
|
-
super.merge(y)
|
3
|
+
class I18n < IsoDoc::Generic::I18n
|
4
|
+
def configuration
|
5
|
+
Metanorma::M3AAWG.configuration
|
7
6
|
end
|
8
7
|
end
|
9
8
|
end
|
data/lib/isodoc/m3aawg/init.rb
CHANGED
@@ -11,16 +11,13 @@ module IsoDoc
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def xref_init(lang, script, klass, labels, options)
|
14
|
-
|
14
|
+
html = HtmlConvert.new(language: lang, script: script)
|
15
|
+
@xrefs = Xref.new(lang, script, html, labels, options)
|
15
16
|
end
|
16
17
|
|
17
18
|
def i18n_init(lang, script, i18nyaml = nil)
|
18
19
|
@i18n = I18n.new(lang, script, i18nyaml || @i18nyaml)
|
19
20
|
end
|
20
|
-
|
21
|
-
def fileloc(loc)
|
22
|
-
File.join(File.dirname(__FILE__), loc)
|
23
|
-
end
|
24
21
|
end
|
25
22
|
end
|
26
23
|
end
|
@@ -908,13 +908,22 @@
|
|
908
908
|
<title-part lang="en">
|
909
909
|
|
910
910
|
|
911
|
+
|
911
912
|
</title-part>
|
912
913
|
<title-part lang="fr">
|
913
914
|
|
914
915
|
|
916
|
+
|
915
917
|
</title-part>
|
916
918
|
<title-part lang="zh">第 # 部分:</title-part>
|
917
919
|
|
920
|
+
<title-subpart lang="en">
|
921
|
+
|
922
|
+
</title-subpart>
|
923
|
+
<title-subpart lang="fr">
|
924
|
+
|
925
|
+
</title-subpart>
|
926
|
+
|
918
927
|
<title-modified lang="en">modified</title-modified>
|
919
928
|
<title-modified lang="fr">modifiée</title-modified>
|
920
929
|
|
@@ -1380,7 +1389,9 @@
|
|
1380
1389
|
|
1381
1390
|
|
1382
1391
|
|
1383
|
-
|
1392
|
+
<!-- <xsl:if test="$namespace = 'bipm'">
|
1393
|
+
<fo:block> </fo:block>
|
1394
|
+
</xsl:if> -->
|
1384
1395
|
|
1385
1396
|
<!-- $namespace = 'iso' or -->
|
1386
1397
|
|
@@ -1543,6 +1554,7 @@
|
|
1543
1554
|
<xsl:if test="normalize-space() != ''">
|
1544
1555
|
<fo:block xsl:use-attribute-sets="table-name-style">
|
1545
1556
|
|
1557
|
+
|
1546
1558
|
<xsl:apply-templates/>
|
1547
1559
|
</fo:block>
|
1548
1560
|
</xsl:if>
|
@@ -1896,6 +1908,7 @@
|
|
1896
1908
|
|
1897
1909
|
|
1898
1910
|
|
1911
|
+
|
1899
1912
|
<!-- <xsl:if test="$namespace = 'bipm'">
|
1900
1913
|
<xsl:attribute name="height">8mm</xsl:attribute>
|
1901
1914
|
</xsl:if> -->
|
@@ -1981,7 +1994,8 @@
|
|
1981
1994
|
</xsl:attribute>
|
1982
1995
|
</xsl:if>
|
1983
1996
|
<xsl:call-template name="display-align"/>
|
1984
|
-
<fo:block>
|
1997
|
+
<fo:block>
|
1998
|
+
|
1985
1999
|
<xsl:apply-templates/>
|
1986
2000
|
</fo:block>
|
1987
2001
|
</fo:table-cell>
|
@@ -2193,7 +2207,11 @@
|
|
2193
2207
|
<xsl:apply-templates/>
|
2194
2208
|
</fo:inline>
|
2195
2209
|
</xsl:template><xsl:template match="*[local-name()='dl']">
|
2196
|
-
<fo:block-container
|
2210
|
+
<fo:block-container>
|
2211
|
+
|
2212
|
+
<xsl:attribute name="margin-left">0mm</xsl:attribute>
|
2213
|
+
|
2214
|
+
|
2197
2215
|
<xsl:if test="parent::*[local-name() = 'note']">
|
2198
2216
|
<xsl:attribute name="margin-left">
|
2199
2217
|
<xsl:choose>
|
@@ -2203,8 +2221,11 @@
|
|
2203
2221
|
</xsl:attribute>
|
2204
2222
|
|
2205
2223
|
</xsl:if>
|
2206
|
-
<fo:block-container
|
2207
|
-
|
2224
|
+
<fo:block-container>
|
2225
|
+
|
2226
|
+
<xsl:attribute name="margin-left">0mm</xsl:attribute>
|
2227
|
+
|
2228
|
+
|
2208
2229
|
<xsl:variable name="parent" select="local-name(..)"/>
|
2209
2230
|
|
2210
2231
|
<xsl:variable name="key_iso">
|
@@ -2218,9 +2239,12 @@
|
|
2218
2239
|
<fo:block margin-bottom="12pt" text-align="left">
|
2219
2240
|
|
2220
2241
|
<xsl:variable name="title-where">
|
2221
|
-
|
2222
|
-
|
2223
|
-
|
2242
|
+
|
2243
|
+
|
2244
|
+
<xsl:call-template name="getTitle">
|
2245
|
+
<xsl:with-param name="name" select="'title-where'"/>
|
2246
|
+
</xsl:call-template>
|
2247
|
+
|
2224
2248
|
</xsl:variable>
|
2225
2249
|
<xsl:value-of select="$title-where"/><xsl:text> </xsl:text>
|
2226
2250
|
<xsl:apply-templates select="*[local-name()='dt']/*"/>
|
@@ -2236,9 +2260,12 @@
|
|
2236
2260
|
|
2237
2261
|
|
2238
2262
|
<xsl:variable name="title-where">
|
2239
|
-
|
2240
|
-
|
2241
|
-
|
2263
|
+
|
2264
|
+
|
2265
|
+
<xsl:call-template name="getTitle">
|
2266
|
+
<xsl:with-param name="name" select="'title-where'"/>
|
2267
|
+
</xsl:call-template>
|
2268
|
+
|
2242
2269
|
</xsl:variable>
|
2243
2270
|
<xsl:value-of select="$title-where"/>
|
2244
2271
|
</fo:block>
|
@@ -2249,9 +2276,12 @@
|
|
2249
2276
|
|
2250
2277
|
|
2251
2278
|
<xsl:variable name="title-key">
|
2252
|
-
|
2253
|
-
|
2254
|
-
|
2279
|
+
|
2280
|
+
|
2281
|
+
<xsl:call-template name="getTitle">
|
2282
|
+
<xsl:with-param name="name" select="'title-key'"/>
|
2283
|
+
</xsl:call-template>
|
2284
|
+
|
2255
2285
|
</xsl:variable>
|
2256
2286
|
<xsl:value-of select="$title-key"/>
|
2257
2287
|
</fo:block>
|
@@ -2827,7 +2857,18 @@
|
|
2827
2857
|
<xsl:with-param name="previousRow" select="$newRow"/>
|
2828
2858
|
</xsl:apply-templates>
|
2829
2859
|
</xsl:template><xsl:template name="getLang">
|
2830
|
-
<xsl:variable name="
|
2860
|
+
<xsl:variable name="language_current" select="normalize-space(//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
|
2861
|
+
<xsl:variable name="language">
|
2862
|
+
<xsl:choose>
|
2863
|
+
<xsl:when test="$language_current != ''">
|
2864
|
+
<xsl:value-of select="$language_current"/>
|
2865
|
+
</xsl:when>
|
2866
|
+
<xsl:otherwise>
|
2867
|
+
<xsl:value-of select="//*[local-name()='bibdata']//*[local-name()='language']"/>
|
2868
|
+
</xsl:otherwise>
|
2869
|
+
</xsl:choose>
|
2870
|
+
</xsl:variable>
|
2871
|
+
|
2831
2872
|
<xsl:choose>
|
2832
2873
|
<xsl:when test="$language = 'English'">en</xsl:when>
|
2833
2874
|
<xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise>
|
@@ -2862,6 +2903,7 @@
|
|
2862
2903
|
<xsl:value-of select="substring($str, 2)"/>
|
2863
2904
|
</xsl:template><xsl:template match="mathml:math">
|
2864
2905
|
<fo:inline font-family="STIX Two Math"> <!-- -->
|
2906
|
+
|
2865
2907
|
<xsl:variable name="mathml">
|
2866
2908
|
<xsl:apply-templates select="." mode="mathml"/>
|
2867
2909
|
</xsl:variable>
|
@@ -2944,10 +2986,14 @@
|
|
2944
2986
|
</fo:inline>
|
2945
2987
|
</xsl:template><xsl:template match="*[local-name() = 'modification']">
|
2946
2988
|
<xsl:variable name="title-modified">
|
2947
|
-
|
2948
|
-
|
2949
|
-
|
2989
|
+
|
2990
|
+
|
2991
|
+
<xsl:call-template name="getTitle">
|
2992
|
+
<xsl:with-param name="name" select="'title-modified'"/>
|
2993
|
+
</xsl:call-template>
|
2994
|
+
|
2950
2995
|
</xsl:variable>
|
2996
|
+
|
2951
2997
|
<xsl:choose>
|
2952
2998
|
<xsl:when test="$lang = 'zh'"><xsl:text>、</xsl:text><xsl:value-of select="$title-modified"/><xsl:text>—</xsl:text></xsl:when>
|
2953
2999
|
<xsl:otherwise><xsl:text>, </xsl:text><xsl:value-of select="$title-modified"/><xsl:text> — </xsl:text></xsl:otherwise>
|
@@ -3824,9 +3870,12 @@
|
|
3824
3870
|
</fo:block>
|
3825
3871
|
</xsl:template><xsl:template match="*[local-name() = 'deprecates']">
|
3826
3872
|
<xsl:variable name="title-deprecated">
|
3827
|
-
|
3828
|
-
|
3829
|
-
|
3873
|
+
|
3874
|
+
|
3875
|
+
<xsl:call-template name="getTitle">
|
3876
|
+
<xsl:with-param name="name" select="'title-deprecated'"/>
|
3877
|
+
</xsl:call-template>
|
3878
|
+
|
3830
3879
|
</xsl:variable>
|
3831
3880
|
<fo:block xsl:use-attribute-sets="deprecates-style">
|
3832
3881
|
<xsl:value-of select="$title-deprecated"/>: <xsl:apply-templates/>
|
@@ -4194,13 +4243,22 @@
|
|
4194
4243
|
</xsl:template><xsl:template name="split">
|
4195
4244
|
<xsl:param name="pText" select="."/>
|
4196
4245
|
<xsl:param name="sep" select="','"/>
|
4246
|
+
<xsl:param name="normalize-space" select="'true'"/>
|
4197
4247
|
<xsl:if test="string-length($pText) >0">
|
4198
4248
|
<item>
|
4199
|
-
<xsl:
|
4249
|
+
<xsl:choose>
|
4250
|
+
<xsl:when test="$normalize-space = 'true'">
|
4251
|
+
<xsl:value-of select="normalize-space(substring-before(concat($pText, $sep), $sep))"/>
|
4252
|
+
</xsl:when>
|
4253
|
+
<xsl:otherwise>
|
4254
|
+
<xsl:value-of select="substring-before(concat($pText, $sep), $sep)"/>
|
4255
|
+
</xsl:otherwise>
|
4256
|
+
</xsl:choose>
|
4200
4257
|
</item>
|
4201
4258
|
<xsl:call-template name="split">
|
4202
4259
|
<xsl:with-param name="pText" select="substring-after($pText, $sep)"/>
|
4203
4260
|
<xsl:with-param name="sep" select="$sep"/>
|
4261
|
+
<xsl:with-param name="normalize-space" select="$normalize-space"/>
|
4204
4262
|
</xsl:call-template>
|
4205
4263
|
</xsl:if>
|
4206
4264
|
</xsl:template><xsl:template name="getDocumentId">
|
@@ -4266,4 +4324,23 @@
|
|
4266
4324
|
<xsl:with-param name="letter-spacing" select="$letter-spacing"/>
|
4267
4325
|
</xsl:call-template>
|
4268
4326
|
</xsl:if>
|
4327
|
+
</xsl:template><xsl:template name="repeat">
|
4328
|
+
<xsl:param name="char" select="'*'"/>
|
4329
|
+
<xsl:param name="count"/>
|
4330
|
+
<xsl:if test="$count > 0">
|
4331
|
+
<xsl:value-of select="$char"/>
|
4332
|
+
<xsl:call-template name="repeat">
|
4333
|
+
<xsl:with-param name="char" select="$char"/>
|
4334
|
+
<xsl:with-param name="count" select="$count - 1"/>
|
4335
|
+
</xsl:call-template>
|
4336
|
+
</xsl:if>
|
4337
|
+
</xsl:template><xsl:template name="getLocalizedString">
|
4338
|
+
<xsl:param name="key"/>
|
4339
|
+
|
4340
|
+
<xsl:variable name="curr_lang">
|
4341
|
+
<xsl:call-template name="getLang"/>
|
4342
|
+
</xsl:variable>
|
4343
|
+
|
4344
|
+
<xsl:value-of select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
|
4345
|
+
|
4269
4346
|
</xsl:template></xsl:stylesheet>
|
@@ -2,9 +2,11 @@ require "isodoc"
|
|
2
2
|
|
3
3
|
module IsoDoc
|
4
4
|
module M3AAWG
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
class Metadata < IsoDoc::Generic::Metadata
|
6
|
+
def configuration
|
7
|
+
Metanorma::M3AAWG.configuration
|
8
|
+
end
|
9
|
+
|
8
10
|
def initialize(lang, script, labels)
|
9
11
|
super
|
10
12
|
here = File.dirname(__FILE__)
|
@@ -34,20 +36,6 @@ module IsoDoc
|
|
34
36
|
docnumber = isoxml.at(ns("//bibdata/docidentifier"))
|
35
37
|
set(:docnumber, docnumber&.text)
|
36
38
|
end
|
37
|
-
|
38
|
-
def stage_abbr(status)
|
39
|
-
case status
|
40
|
-
when "working-draft" then "wd"
|
41
|
-
when "committee-draft" then "cd"
|
42
|
-
when "draft-standard" then "d"
|
43
|
-
else
|
44
|
-
""
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def unpublished(status)
|
49
|
-
!%w(published withdrawn).include? status.downcase
|
50
|
-
end
|
51
39
|
end
|
52
40
|
end
|
53
41
|
end
|
@@ -1,16 +1,21 @@
|
|
1
1
|
require_relative "init"
|
2
|
+
require "metanorma-generic"
|
2
3
|
require "isodoc"
|
3
4
|
|
4
5
|
module IsoDoc
|
5
6
|
module M3AAWG
|
6
|
-
class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
|
7
|
+
class PresentationXMLConvert < IsoDoc::Generic::PresentationXMLConvert
|
8
|
+
def configuration
|
9
|
+
Metanorma::M3AAWG.configuration
|
10
|
+
end
|
11
|
+
|
7
12
|
def annex1(f)
|
8
|
-
|
9
|
-
|
10
|
-
|
13
|
+
lbl = @xrefs.anchor(f['id'], :label)
|
14
|
+
if t = f.at(ns("./title"))
|
15
|
+
t.children = "<strong>#{t.children.to_xml}</strong>"
|
16
|
+
end
|
17
|
+
prefix_name(f, "<br/>", lbl, "title")
|
11
18
|
end
|
12
|
-
prefix_name(f, "<br/>", lbl, "title")
|
13
|
-
end
|
14
19
|
|
15
20
|
include Init
|
16
21
|
end
|
@@ -1,39 +1,13 @@
|
|
1
1
|
require "isodoc"
|
2
2
|
require_relative "base_convert"
|
3
|
+
require "isodoc/generic/word_convert"
|
3
4
|
require_relative "init"
|
4
5
|
|
5
6
|
module IsoDoc
|
6
7
|
module M3AAWG
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
class WordConvert < IsoDoc::WordConvert
|
11
|
-
def initialize(options)
|
12
|
-
@libdir = File.dirname(__FILE__)
|
13
|
-
super
|
14
|
-
end
|
15
|
-
|
16
|
-
def default_fonts(options)
|
17
|
-
{
|
18
|
-
bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' : '"Garamond",serif'),
|
19
|
-
headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' : '"Garamond",serif'),
|
20
|
-
monospacefont: '"Courier New",monospace'
|
21
|
-
}
|
22
|
-
end
|
23
|
-
|
24
|
-
def default_file_locations(_options)
|
25
|
-
{
|
26
|
-
htmlstylesheet: html_doc_path("htmlstyle.scss"),
|
27
|
-
htmlcoverpage: html_doc_path("html_m3d_titlepage.html"),
|
28
|
-
htmlintropage: html_doc_path("html_m3d_intro.html"),
|
29
|
-
scripts: html_doc_path("scripts.html"),
|
30
|
-
wordstylesheet: html_doc_path("wordstyle.scss"),
|
31
|
-
standardstylesheet: html_doc_path("m3d.scss"),
|
32
|
-
header: html_doc_path("header.html"),
|
33
|
-
wordintropage: html_doc_path("word_m3d_intro.html"),
|
34
|
-
ulstyle: "l3",
|
35
|
-
olstyle: "l2",
|
36
|
-
}
|
8
|
+
class WordConvert < IsoDoc::Generic::WordConvert
|
9
|
+
def configuration
|
10
|
+
Metanorma::M3AAWG.configuration
|
37
11
|
end
|
38
12
|
|
39
13
|
def colophon(body, docxml)
|
@@ -51,11 +25,6 @@ module IsoDoc
|
|
51
25
|
end
|
52
26
|
end
|
53
27
|
|
54
|
-
def title(isoxml, _out)
|
55
|
-
main = isoxml&.at(ns("//title[@language='en']"))&.text
|
56
|
-
set_metadata(:doctitle, main)
|
57
|
-
end
|
58
|
-
|
59
28
|
include BaseRender
|
60
29
|
include Init
|
61
30
|
end
|
data/lib/isodoc/m3aawg/xref.rb
CHANGED
data/lib/metanorma/m3aawg.rb
CHANGED
@@ -1,7 +1,33 @@
|
|
1
|
-
|
1
|
+
require "metanorma"
|
2
|
+
require "metanorma-generic"
|
3
|
+
require "metanorma/m3aawg/processor"
|
2
4
|
|
3
5
|
module Metanorma
|
4
|
-
module
|
6
|
+
module M3AAWG
|
5
7
|
|
8
|
+
class Configuration < Metanorma::Generic::Configuration
|
9
|
+
def initialize(*args)
|
10
|
+
super
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class << self
|
15
|
+
extend Forwardable
|
16
|
+
|
17
|
+
attr_accessor :configuration
|
18
|
+
|
19
|
+
Configuration::CONFIG_ATTRS.each do |attr_name|
|
20
|
+
def_delegator :@configuration, attr_name
|
21
|
+
end
|
22
|
+
|
23
|
+
def configure
|
24
|
+
self.configuration ||= Configuration.new
|
25
|
+
yield(configuration)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
configure {}
|
6
30
|
end
|
7
31
|
end
|
32
|
+
Metanorma::Registry.instance.register(Metanorma::M3AAWG::Processor)
|
33
|
+
|
data/metanorma-m3d.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency "htmlentities", "~> 4.3.4"
|
32
32
|
spec.add_dependency "thread_safe"
|
33
33
|
|
34
|
-
spec.add_dependency "metanorma-
|
34
|
+
spec.add_dependency "metanorma-generic", "~> 1.7.0"
|
35
35
|
spec.add_dependency "isodoc", "~> 1.2.0"
|
36
36
|
|
37
37
|
spec.add_development_dependency "byebug", "~> 9.1"
|
data/metanorma.yml
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
metanorma_name: m3aawg
|
2
|
+
organization_name_short: M3AAWG
|
3
|
+
organization_name_long: Messaging Malware and Mobile Anti-Abuse Working Group
|
4
|
+
document_namespace: https://www.metanorma.org/ns/m3d
|
5
|
+
xml_root_tag: m3d-standard
|
6
|
+
html_bodyfont: '"Overpass",sans-serif'
|
7
|
+
html_headerfont: '"Overpass",sans-serif'
|
8
|
+
html_monospacefont: '"Space Mono",monospace'
|
9
|
+
i18nyaml: lib/isodoc/m3aawg/i18n-en.yaml
|
10
|
+
validate_rng_file: lib/asciidoctor/m3aawg/m3d.rng
|
11
|
+
htmlcoverpage: lib/isodoc/m3aawg/html/html_m3d_titlepage.html
|
12
|
+
htmlintropage: lib/isodoc/m3aawg/html/html_m3d_intro.html
|
13
|
+
htmlstylesheet: lib/isodoc/m3aawg/html/htmlstyle.scss
|
14
|
+
scripts: lib/isodoc/m3aawg/html/scripts.html
|
15
|
+
word_bodyfont: '"Garamond",serif'
|
16
|
+
word_headerfont: '"Garamond",serif'
|
17
|
+
word_monospacefont: '"Courier New",monospace'
|
18
|
+
standardstylesheet: lib/isodoc/m3aawg/html/m3d.scss
|
19
|
+
header: lib/isodoc/m3aawg/html/header.html
|
20
|
+
wordcoverpage: ""
|
21
|
+
wordintropage: lib/isodoc/m3aawg/html/word_m3d_intro.html
|
22
|
+
wordstylesheet: lib/isodoc/m3aawg/html/wordstyle.scss
|
23
|
+
webfont:
|
24
|
+
- "https://fonts.googleapis.com/css?family=Overpass:300,300i,600,900"
|
25
|
+
- "https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i|Space+Mono:400,700"
|
26
|
+
docid_template: "{{ docnumeric }}{% if stageabbr %}({{ stageabbr }}){%endif%}{% if docyear %}:{{docyear}}{%endif%}"
|
27
|
+
doctypes:
|
28
|
+
- policy
|
29
|
+
- best-practices
|
30
|
+
- supporting-document
|
31
|
+
- report
|
32
|
+
default_doctype: report
|
33
|
+
published_stages:
|
34
|
+
- published
|
35
|
+
- withdrawn
|
36
|
+
default_stage: published
|
37
|
+
stage_abbreviations:
|
38
|
+
proposal:
|
39
|
+
working-draft: wd
|
40
|
+
committee-draft: cd
|
41
|
+
draft-standard: d
|
42
|
+
final-draft:
|
43
|
+
published:
|
44
|
+
withdrawn:
|
45
|
+
logo_path: ""
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-m3aawg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: htmlentities
|
@@ -39,19 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: metanorma-
|
42
|
+
name: metanorma-generic
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.7.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.7.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: isodoc
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,7 +238,6 @@ files:
|
|
238
238
|
- lib/asciidoctor/m3aawg/isodoc.rng
|
239
239
|
- lib/asciidoctor/m3aawg/m3d.rng
|
240
240
|
- lib/asciidoctor/m3aawg/reqt.rng
|
241
|
-
- lib/asciidoctor/m3aawg/validate.rb
|
242
241
|
- lib/isodoc/m3aawg/base_convert.rb
|
243
242
|
- lib/isodoc/m3aawg/html/dots-w@2x.png
|
244
243
|
- lib/isodoc/m3aawg/html/dots@2x.png
|
@@ -271,6 +270,7 @@ files:
|
|
271
270
|
- lib/metanorma/m3aawg/processor.rb
|
272
271
|
- lib/metanorma/m3aawg/version.rb
|
273
272
|
- metanorma-m3d.gemspec
|
273
|
+
- metanorma.yml
|
274
274
|
homepage: https://github.com/metanorma/metanorma-m3aawg
|
275
275
|
licenses:
|
276
276
|
- BSD-2-Clause
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module Asciidoctor
|
2
|
-
module M3AAWG
|
3
|
-
class Converter < Standoc::Converter
|
4
|
-
def content_validate(doc)
|
5
|
-
super
|
6
|
-
bibdata_validate(doc.root)
|
7
|
-
end
|
8
|
-
|
9
|
-
def bibdata_validate(doc)
|
10
|
-
stage_validate(doc)
|
11
|
-
end
|
12
|
-
|
13
|
-
def stage_validate(xmldoc)
|
14
|
-
stage = xmldoc&.at("//bibdata/status/stage")&.text
|
15
|
-
%w(proposal working-draft committee-draft draft-standard final-draft
|
16
|
-
published withdrawn).include? stage or
|
17
|
-
@log.add("Document Attributes", nil, "#{stage} is not a recognised status")
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|