metanorma-ogc 1.1.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/macos.yml +0 -1
- data/.github/workflows/ubuntu.yml +10 -7
- data/.github/workflows/windows.yml +0 -1
- data/Rakefile +2 -0
- data/lib/asciidoctor/ogc/boilerplate.xml +3 -3
- data/lib/asciidoctor/ogc/converter.rb +11 -7
- data/lib/asciidoctor/ogc/front.rb +7 -19
- data/lib/asciidoctor/ogc/isodoc.rng +12 -6
- data/lib/asciidoctor/ogc/validate.rb +13 -25
- data/lib/isodoc/ogc/base_convert.rb +2 -26
- data/lib/isodoc/ogc/biblio.rb +33 -4
- data/lib/isodoc/ogc/html/_coverpage.css +195 -0
- data/lib/isodoc/ogc/html/header_wp.html +210 -0
- data/lib/isodoc/ogc/html/htmlstyle.css +1084 -0
- data/lib/isodoc/ogc/html/logo.png +0 -0
- data/lib/isodoc/ogc/html/ogc.css +838 -0
- data/lib/isodoc/ogc/html/ogc.scss +4 -2
- data/lib/isodoc/ogc/html/ogc_wp.css +758 -0
- data/lib/isodoc/ogc/html/ogc_wp.scss +724 -0
- data/lib/isodoc/ogc/html/word_ogc_intro_wp.html +14 -0
- data/lib/isodoc/ogc/html/word_ogc_titlepage_wp.html +175 -0
- data/lib/isodoc/ogc/html/wordstyle.css +1253 -0
- data/lib/isodoc/ogc/html/wordstyle.scss +8 -9
- data/lib/isodoc/ogc/html/wordstyle_wp.css +1181 -0
- data/lib/isodoc/ogc/html/wordstyle_wp.scss +1093 -0
- data/lib/isodoc/ogc/html_convert.rb +2 -0
- data/lib/isodoc/ogc/i18n-en.yaml +1 -0
- data/lib/isodoc/ogc/i18n.rb +10 -0
- data/lib/isodoc/ogc/init.rb +41 -0
- data/lib/isodoc/ogc/metadata.rb +31 -28
- data/lib/isodoc/ogc/ogc.abstract-specification-topic.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.best-practice.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.change-request-supporting-document.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.community-practice.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.community-standard.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.discussion-paper.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.engineering-report.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.other.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.policy.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.reference-model.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.release-notes.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.standard.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.test-suite.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.user-guide.xsl +1690 -1543
- data/lib/isodoc/ogc/ogc.white-paper.xsl +1776 -1864
- data/lib/isodoc/ogc/presentation_xml_convert.rb +128 -1
- data/lib/isodoc/ogc/reqt.rb +4 -26
- data/lib/isodoc/ogc/sections.rb +18 -64
- data/lib/isodoc/ogc/word_convert.rb +26 -7
- data/lib/isodoc/ogc/xref.rb +28 -23
- data/lib/metanorma/ogc/processor.rb +0 -4
- data/lib/metanorma/ogc/version.rb +1 -1
- data/metanorma-ogc.gemspec +3 -4
- metadata +34 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 294cc548cfcdb632298e8cc49a7fe9b83e1961016f6d65e0fca475ff061fcb1b
|
4
|
+
data.tar.gz: dd506401c8631fc0a703c928572c6e8959dd6ba8471667924a02f1f3996571e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 608c44343f8690d6fba5be75d538f9fe4844cc441111de17e2674ecc8573095058ca8d471a2b9d77b17b5edd79294481f9c2e7b0d88ef845b0b50a79251c7730
|
7
|
+
data.tar.gz: c72fd20a20757bec35cd19f64561b01a87e9a28a30a157396f8768d671be2ac1dfd159054f5fbe78d58e04abe47910d432591c7d9e0af2a79aae7abb0a04d6d1
|
data/.github/workflows/macos.yml
CHANGED
@@ -31,7 +31,6 @@ jobs:
|
|
31
31
|
uses: actions/setup-ruby@v1
|
32
32
|
with:
|
33
33
|
ruby-version: ${{ matrix.ruby }}
|
34
|
-
architecture: 'x64'
|
35
34
|
- name: Update gems
|
36
35
|
run: |
|
37
36
|
gem install bundler
|
@@ -39,15 +38,19 @@ jobs:
|
|
39
38
|
- name: Run specs
|
40
39
|
run: |
|
41
40
|
bundle exec rake
|
42
|
-
- name: Trigger
|
43
|
-
if:
|
41
|
+
- name: Trigger repositories
|
42
|
+
if: matrix.ruby == '2.6'
|
44
43
|
env:
|
45
|
-
GH_USERNAME:
|
46
|
-
GH_ACCESS_TOKEN: ${{ secrets.
|
44
|
+
GH_USERNAME: metanorma-ci
|
45
|
+
GH_ACCESS_TOKEN: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
|
47
46
|
run: |
|
48
47
|
curl -LO --retry 3 https://raw.githubusercontent.com/metanorma/metanorma-build-scripts/master/trigger-gh-actions.sh
|
49
48
|
[[ -f ".github/workflows/dependent_repos.env" ]] && source .github/workflows/dependent_repos.env
|
50
|
-
|
49
|
+
CLIENT_PAYLOAD=$(cat <<EOF
|
50
|
+
"{ "ref": "${GITHUB_REF}", "repo": "${GITHUB_REPOSITORY}" }"
|
51
|
+
EOF
|
52
|
+
)
|
53
|
+
for repo in $REPOS
|
51
54
|
do
|
52
|
-
sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "
|
55
|
+
sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "$CLIENT_PAYLOAD"
|
53
56
|
done
|
data/Rakefile
CHANGED
@@ -3,16 +3,16 @@
|
|
3
3
|
<clause>
|
4
4
|
<title>Copyright notice</title>
|
5
5
|
|
6
|
-
<p>Copyright
|
6
|
+
<p align="center">Copyright
|
7
7
|
© {{ docyear }} Open Geospatial Consortium<br/>
|
8
8
|
To obtain additional rights of use, visit
|
9
9
|
<link target="http://www.opengeospatial.org/legal/">http://www.opengeospatial.org/legal/</link></p>
|
10
10
|
</clause>
|
11
11
|
<clause>
|
12
12
|
<title>Note</title>
|
13
|
-
<p>Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.</p>
|
13
|
+
<p align="left">Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.</p>
|
14
14
|
|
15
|
-
<p>Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.</p>
|
15
|
+
<p align="left">Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.</p>
|
16
16
|
</clause>
|
17
17
|
</copyright-statement>
|
18
18
|
<license-statement>
|
@@ -55,9 +55,12 @@ module Asciidoctor
|
|
55
55
|
def outputs(node, ret)
|
56
56
|
File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
|
57
57
|
presentation_xml_converter(node).convert(@filename + ".xml")
|
58
|
-
html_converter(node).convert(@filename + ".presentation.xml",
|
59
|
-
|
60
|
-
|
58
|
+
html_converter(node).convert(@filename + ".presentation.xml",
|
59
|
+
nil, false, "#{@filename}.html")
|
60
|
+
doc_converter(node).convert(@filename + ".presentation.xml",
|
61
|
+
nil, false, "#{@filename}.doc")
|
62
|
+
pdf_converter(node)&.convert(@filename + ".presentation.xml",
|
63
|
+
nil, false, "#{@filename}.pdf")
|
61
64
|
end
|
62
65
|
|
63
66
|
def validate(doc)
|
@@ -84,15 +87,16 @@ module Asciidoctor
|
|
84
87
|
end
|
85
88
|
|
86
89
|
def clause_parse(attrs, xml, node)
|
87
|
-
clausetype = node&.attr("heading")&.downcase || node.title.downcase
|
88
|
-
|
89
|
-
|
90
|
-
super
|
90
|
+
case clausetype = node&.attr("heading")&.downcase || node.title.downcase
|
91
|
+
when "submitters" then return submitters_parse(attrs, xml, node)
|
92
|
+
when "conformance" then attrs = attrs.merge(type: "conformance")
|
91
93
|
end
|
94
|
+
super
|
92
95
|
end
|
93
96
|
|
94
97
|
def submitters_parse(attrs, xml, node)
|
95
98
|
xml.submitters **attr_code(attrs) do |xml_section|
|
99
|
+
xml_section.title @i18n.submitters
|
96
100
|
xml_section << node.content
|
97
101
|
end
|
98
102
|
end
|
@@ -12,8 +12,8 @@ module Asciidoctor
|
|
12
12
|
|
13
13
|
def corporate_author(node, xml)
|
14
14
|
return unless node.attr("submitting-organizations")
|
15
|
-
HTMLEntities.new.decode(node.attr("submitting-organizations"))
|
16
|
-
|
15
|
+
csv_split(HTMLEntities.new.decode(node.attr("submitting-organizations")),
|
16
|
+
";")&.each do |org|
|
17
17
|
xml.contributor do |c|
|
18
18
|
c.role **{ type: "author" }
|
19
19
|
c.organization do |a|
|
@@ -63,13 +63,8 @@ module Asciidoctor
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
def
|
67
|
-
|
68
|
-
c.role **{ type: "publisher" }
|
69
|
-
c.organization do |a|
|
70
|
-
a.name Metanorma::Ogc::ORGANIZATION_NAME_SHORT
|
71
|
-
end
|
72
|
-
end
|
66
|
+
def default_publisher
|
67
|
+
"Open Geospatial Consortium"
|
73
68
|
end
|
74
69
|
|
75
70
|
def metadata_committee(node, xml)
|
@@ -123,16 +118,9 @@ module Asciidoctor
|
|
123
118
|
end
|
124
119
|
|
125
120
|
def metadata_copyright(node, xml)
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
c.from from
|
130
|
-
c.owner do |owner|
|
131
|
-
owner.organization do |o|
|
132
|
-
o.name Metanorma::Ogc::ORGANIZATION_NAME_SHORT
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
121
|
+
node.attr("copyrightyear") and
|
122
|
+
node.set_attr("copyright-year", node.attr("copyrightyear"))
|
123
|
+
super
|
136
124
|
end
|
137
125
|
|
138
126
|
def metadata_date(node, xml)
|
@@ -922,6 +922,9 @@
|
|
922
922
|
<optional>
|
923
923
|
<attribute name="script"/>
|
924
924
|
</optional>
|
925
|
+
<optional>
|
926
|
+
<attribute name="type"/>
|
927
|
+
</optional>
|
925
928
|
<optional>
|
926
929
|
<attribute name="obligation">
|
927
930
|
<choice>
|
@@ -961,9 +964,6 @@
|
|
961
964
|
</define>
|
962
965
|
<define name="content-subsection">
|
963
966
|
<element name="clause">
|
964
|
-
<optional>
|
965
|
-
<attribute name="type"/>
|
966
|
-
</optional>
|
967
967
|
<ref name="Content-Section"/>
|
968
968
|
</element>
|
969
969
|
</define>
|
@@ -992,6 +992,9 @@
|
|
992
992
|
</choice>
|
993
993
|
</attribute>
|
994
994
|
</optional>
|
995
|
+
<optional>
|
996
|
+
<attribute name="type"/>
|
997
|
+
</optional>
|
995
998
|
<optional>
|
996
999
|
<ref name="section-title"/>
|
997
1000
|
</optional>
|
@@ -1011,9 +1014,6 @@
|
|
1011
1014
|
</define>
|
1012
1015
|
<define name="clause">
|
1013
1016
|
<element name="clause">
|
1014
|
-
<optional>
|
1015
|
-
<attribute name="type"/>
|
1016
|
-
</optional>
|
1017
1017
|
<ref name="Clause-Section"/>
|
1018
1018
|
</element>
|
1019
1019
|
</define>
|
@@ -1042,6 +1042,9 @@
|
|
1042
1042
|
</choice>
|
1043
1043
|
</attribute>
|
1044
1044
|
</optional>
|
1045
|
+
<optional>
|
1046
|
+
<attribute name="type"/>
|
1047
|
+
</optional>
|
1045
1048
|
<optional>
|
1046
1049
|
<ref name="section-title"/>
|
1047
1050
|
</optional>
|
@@ -1180,6 +1183,9 @@
|
|
1180
1183
|
<optional>
|
1181
1184
|
<attribute name="script"/>
|
1182
1185
|
</optional>
|
1186
|
+
<optional>
|
1187
|
+
<attribute name="type"/>
|
1188
|
+
</optional>
|
1183
1189
|
<optional>
|
1184
1190
|
<attribute name="obligation">
|
1185
1191
|
<choice>
|
@@ -49,35 +49,25 @@ module Asciidoctor
|
|
49
49
|
[
|
50
50
|
{
|
51
51
|
msg: "Prefatory material must be followed by (clause) Scope",
|
52
|
-
val: [
|
52
|
+
val: ["./self::clause[@type = 'scope']" ]
|
53
53
|
},
|
54
54
|
{
|
55
55
|
msg: "Scope must be followed by Conformance",
|
56
|
-
val: [
|
56
|
+
val: ["./self::clause[@type = 'conformance']" ]
|
57
57
|
},
|
58
58
|
{
|
59
59
|
msg: "Normative References must be followed by "\
|
60
60
|
"Terms and Definitions",
|
61
|
-
val: [
|
62
|
-
{ tag: "terms", title: "Terms and definitions" },
|
63
|
-
{ tag: "clause", title: "Terms and definitions" },
|
64
|
-
{
|
65
|
-
tag: "terms",
|
66
|
-
title: "Terms, definitions, symbols and abbreviated terms",
|
67
|
-
},
|
68
|
-
{
|
69
|
-
tag: "clause",
|
70
|
-
title: "Terms, definitions, symbols and abbreviated terms",
|
71
|
-
},
|
72
|
-
],
|
61
|
+
val: ["./self::terms | .//terms"]
|
73
62
|
},
|
74
63
|
].freeze
|
75
64
|
|
76
65
|
def seqcheck(names, msg, accepted)
|
77
66
|
n = names.shift
|
78
|
-
|
67
|
+
return [] if n.nil?
|
68
|
+
test = accepted.map { |a| n.at(a) }
|
69
|
+
if test.all? { |a| a.nil? }
|
79
70
|
@log.add("Style", nil, msg)
|
80
|
-
names = []
|
81
71
|
end
|
82
72
|
names
|
83
73
|
end
|
@@ -85,23 +75,21 @@ module Asciidoctor
|
|
85
75
|
def sections_sequence_validate(root)
|
86
76
|
return unless STANDARDTYPE.include?(
|
87
77
|
root&.at("//bibdata/ext/doctype")&.text)
|
88
|
-
|
89
|
-
names =
|
90
|
-
names = seqcheck(names, SEQ[
|
91
|
-
names = seqcheck(names, SEQ[
|
92
|
-
names = seqcheck(names, SEQ[2][:msg], SEQ[2][:val]) || return
|
78
|
+
names = root.xpath("//sections/* | //bibliography/*")
|
79
|
+
names = seqcheck(names, SEQ[0][:msg], SEQ[0][:val])
|
80
|
+
names = seqcheck(names, SEQ[1][:msg], SEQ[1][:val])
|
81
|
+
names = seqcheck(names, SEQ[2][:msg], SEQ[2][:val])
|
93
82
|
n = names.shift
|
94
|
-
if
|
83
|
+
if n&.at("./self::definitions")
|
95
84
|
n = names.shift
|
96
85
|
end
|
97
|
-
|
86
|
+
if n.nil? || n.name != "clause"
|
98
87
|
@log.add("Style", nil, "Document must contain at least one clause")
|
99
88
|
return
|
100
89
|
end
|
101
90
|
root.at("//references | //clause[descendant::references]"\
|
102
91
|
"[not(parent::clause)]") or
|
103
|
-
|
104
|
-
"Normative References are mandatory", [{tag: "references"}])
|
92
|
+
@log.add("Style", nil, "Normative References are mandatory")
|
105
93
|
end
|
106
94
|
|
107
95
|
def preface_sequence_validate(root)
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require "isodoc"
|
2
|
-
require_relative "metadata"
|
3
2
|
require_relative "reqt"
|
4
3
|
require_relative "biblio"
|
5
4
|
require_relative "sections"
|
@@ -8,18 +7,6 @@ require "fileutils"
|
|
8
7
|
module IsoDoc
|
9
8
|
module Ogc
|
10
9
|
module BaseConvert
|
11
|
-
def metadata_init(lang, script, labels)
|
12
|
-
@meta = Metadata.new(lang, script, labels)
|
13
|
-
end
|
14
|
-
|
15
|
-
def xref_init(lang, script, klass, labels, options)
|
16
|
-
@xrefs = Xref.new(lang, script, klass, labels, options)
|
17
|
-
end
|
18
|
-
|
19
|
-
def fileloc(loc)
|
20
|
-
File.join(File.dirname(__FILE__), loc)
|
21
|
-
end
|
22
|
-
|
23
10
|
def cleanup(docxml)
|
24
11
|
requirement_table_cleanup(docxml)
|
25
12
|
super
|
@@ -55,14 +42,6 @@ module IsoDoc
|
|
55
42
|
docxml
|
56
43
|
end
|
57
44
|
|
58
|
-
def load_yaml(lang, script)
|
59
|
-
y = if @i18nyaml then YAML.load_file(@i18nyaml)
|
60
|
-
else
|
61
|
-
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
|
62
|
-
end
|
63
|
-
super.merge(y)
|
64
|
-
end
|
65
|
-
|
66
45
|
def example_parse(node, out)
|
67
46
|
name = node.at(ns("./name"))
|
68
47
|
example_name_parse(node, out, name) #if name
|
@@ -73,17 +52,14 @@ module IsoDoc
|
|
73
52
|
end
|
74
53
|
|
75
54
|
def example_name_parse(node, div, name)
|
76
|
-
lbl = @xrefs.anchor(node['id'], :label, false)
|
77
55
|
div.p **{ class: "SourceTitle", style: "text-align:center;" } do |p|
|
78
|
-
lbl.nil? or p << l10n("#{@example_lbl} #{lbl}")
|
79
|
-
name and !lbl.nil? and p << " — "
|
80
56
|
name&.children&.each { |n| parse(n, p) }
|
81
57
|
end
|
82
58
|
end
|
83
59
|
|
84
60
|
def middle_clause
|
85
|
-
"//clause[parent::sections][not(
|
86
|
-
"
|
61
|
+
"//clause[parent::sections][not(@type = 'scope' or "\
|
62
|
+
"@type = 'conformance')][not(descendant::terms)]"
|
87
63
|
end
|
88
64
|
|
89
65
|
def middle(isoxml, out)
|
data/lib/isodoc/ogc/biblio.rb
CHANGED
@@ -60,13 +60,34 @@ module IsoDoc
|
|
60
60
|
return [multiplenames_and(names), (abbrs.map { |x| x.text }).join("/")]
|
61
61
|
end
|
62
62
|
|
63
|
+
def extract_author(b)
|
64
|
+
c = b.xpath(ns("./contributor[role/@type = 'author']"))
|
65
|
+
c = b.xpath(ns("./contributor[role/@type = 'editor']")) if c.empty?
|
66
|
+
return nil if c.empty?
|
67
|
+
c.map do |c1|
|
68
|
+
c1&.at(ns("./organization/name"))&.text || extract_person_name(c1)
|
69
|
+
end.reject { |e| e.nil? || e.empty? }.join(", ")
|
70
|
+
end
|
71
|
+
|
72
|
+
def extract_person_name(b)
|
73
|
+
p = b.at(ns("./person/name")) or return
|
74
|
+
c = p.at(ns("./completename")) and return c.text
|
75
|
+
s = p&.at(ns("./surname"))&.text or return
|
76
|
+
i = p.xpath(ns("./initial")) and
|
77
|
+
front = i.map { |e| e.text.gsub(/[^[:upper:]]/, "") }.join("")
|
78
|
+
i.empty? and f = p.xpath(ns("./forename")) and
|
79
|
+
front = f.map { |e| e.text[0].upcase }.join("")
|
80
|
+
front ? "#{s} #{front}" : s
|
81
|
+
end
|
82
|
+
|
83
|
+
|
63
84
|
def date_render(date)
|
64
85
|
return nil if date.nil?
|
65
86
|
on = date&.at(ns("./on"))&.text
|
66
87
|
from = date&.at(ns("./from"))&.text
|
67
88
|
to = date&.at(ns("./to"))&.text
|
68
|
-
return on if on
|
69
|
-
return "#{from}–#{to}" if from
|
89
|
+
return on if on && !on.empty?
|
90
|
+
return "#{from}–#{to}" if from && !from.empty?
|
70
91
|
nil
|
71
92
|
end
|
72
93
|
|
@@ -82,17 +103,24 @@ module IsoDoc
|
|
82
103
|
b.at(ns("./place"))
|
83
104
|
end
|
84
105
|
|
106
|
+
def extract_uri(b)
|
107
|
+
b.at(ns("./uri"))
|
108
|
+
end
|
109
|
+
|
85
110
|
# {author}: {document identifier}, {title}. {publisher}, {city} ({year})
|
86
111
|
def standard_citation(out, b)
|
87
112
|
if ftitle = b.at(ns("./formattedref"))
|
88
113
|
ftitle&.children&.each { |n| parse(n, out) }
|
89
114
|
else
|
90
115
|
pub, pub_abbrev = extract_publisher(b)
|
116
|
+
author = extract_author(b)
|
91
117
|
c = extract_city(b)
|
92
118
|
y = extract_year(b)
|
93
|
-
|
119
|
+
u = extract_uri(b)
|
120
|
+
out << "#{author || pub_abbrev}: " if author || pub_abbrev
|
94
121
|
id = render_identifier(inline_bibitem_ref_code(b))
|
95
122
|
out << id[1] if id[1]
|
123
|
+
out << " (Draft)" if ogc_draft_ref?(b)
|
96
124
|
out << ", "
|
97
125
|
out.i do |i|
|
98
126
|
iso_title(b)&.children&.each { |n| parse(n, i) }
|
@@ -102,7 +130,8 @@ module IsoDoc
|
|
102
130
|
out << ", " if pub && c
|
103
131
|
c&.children&.each { |n| parse(n, out) }
|
104
132
|
out << " " if (pub || c) && y
|
105
|
-
out << "(#{y})." if y
|
133
|
+
out << "(#{y}). " if y
|
134
|
+
u and out << "<a href='#{u.text}'>#{u.text}</a>"
|
106
135
|
end
|
107
136
|
end
|
108
137
|
|
@@ -0,0 +1,195 @@
|
|
1
|
+
.coverpage-maturity, .coverpage-stage {
|
2
|
+
font-family: {{headerfont}};
|
3
|
+
font-weight: 400;
|
4
|
+
font-size: 1.3em;
|
5
|
+
margin: 0 0 2em 0;
|
6
|
+
text-transform: uppercase; }
|
7
|
+
|
8
|
+
.icon-svg {
|
9
|
+
width: 100%;
|
10
|
+
color: #5ecf86; }
|
11
|
+
|
12
|
+
.wrapper-top {
|
13
|
+
background: #00335b;
|
14
|
+
background: linear-gradient(130deg, #00335b 45%, #f1f8ff 100%);
|
15
|
+
color: #ffffff;
|
16
|
+
padding: 5em 0;
|
17
|
+
width: 100%; }
|
18
|
+
|
19
|
+
.wrapper-top-bottom {
|
20
|
+
width: 0;
|
21
|
+
height: 0;
|
22
|
+
border-top: 100px solid #00335b;
|
23
|
+
border-right: 100px solid transparent;
|
24
|
+
position: absolute; }
|
25
|
+
|
26
|
+
.coverpage-metadata {
|
27
|
+
margin-top: 35px;
|
28
|
+
padding-top: 15px;
|
29
|
+
margin-right: 25px;
|
30
|
+
border-top: solid 1px white; }
|
31
|
+
|
32
|
+
.coverpage-metadata,
|
33
|
+
.coverpage-alt-formats {
|
34
|
+
font-size: 12px;
|
35
|
+
font-family: {{headerfont}};
|
36
|
+
margin-left: 1em;
|
37
|
+
text-align: left; }
|
38
|
+
.coverpage-metadata span,
|
39
|
+
.coverpage-alt-formats span {
|
40
|
+
display: block;
|
41
|
+
text-align: left; }
|
42
|
+
.coverpage-metadata span a,
|
43
|
+
.coverpage-alt-formats span a {
|
44
|
+
color: white; }
|
45
|
+
.coverpage-metadata span a:hover,
|
46
|
+
.coverpage-alt-formats span a:hover {
|
47
|
+
text-decoration: underline;
|
48
|
+
background: none;
|
49
|
+
box-shadow: none !important;
|
50
|
+
font-weight: 400; }
|
51
|
+
.coverpage-metadata .value,
|
52
|
+
.coverpage-alt-formats .value {
|
53
|
+
font-size: 15px;
|
54
|
+
margin-bottom: 15px; }
|
55
|
+
.coverpage-metadata .label,
|
56
|
+
.coverpage-alt-formats .label {
|
57
|
+
font-size: 12px;
|
58
|
+
padding: 0; }
|
59
|
+
|
60
|
+
.coverpage-alt-formats span {
|
61
|
+
display: inline;
|
62
|
+
text-align: left; }
|
63
|
+
.coverpage-alt-formats span a {
|
64
|
+
padding-right: 5px; }
|
65
|
+
|
66
|
+
.coverpage-title {
|
67
|
+
padding-bottom: 0.5em;
|
68
|
+
font-family: {{headerfont}};
|
69
|
+
font-weight: 100;
|
70
|
+
padding-left: 1em;
|
71
|
+
padding-right: 1em; }
|
72
|
+
.coverpage-title span {
|
73
|
+
font-family: {{headerfont}};
|
74
|
+
font-size: 1.8em;
|
75
|
+
line-height: 1; }
|
76
|
+
|
77
|
+
.docstage-box table {
|
78
|
+
width: auto; }
|
79
|
+
|
80
|
+
.docstage-box th {
|
81
|
+
background-color: #93c0d6; }
|
82
|
+
|
83
|
+
.docstage-box td {
|
84
|
+
vertical-align: top;
|
85
|
+
background-color: #daeef3;
|
86
|
+
padding: 0.5em;
|
87
|
+
border: 0; }
|
88
|
+
|
89
|
+
.docstage-box th:first-child {
|
90
|
+
border-radius: 1em 0 0 0; }
|
91
|
+
|
92
|
+
.docstage-box th:last-child {
|
93
|
+
border-radius: 0 1em 0 0; }
|
94
|
+
|
95
|
+
.docstage-box tr:first-child {
|
96
|
+
border-radius: 0 0 0 1em; }
|
97
|
+
|
98
|
+
.docstage-box tr:last-child {
|
99
|
+
border-radius: 0 1em 0 0; }
|
100
|
+
|
101
|
+
.docstage-box tr:last-child > td:first-child {
|
102
|
+
border-radius: 0 0 0 1em; }
|
103
|
+
|
104
|
+
.docstage-box tr:last-child > td:last-child {
|
105
|
+
border-radius: 0 0 1em 0; }
|
106
|
+
|
107
|
+
.WordSection11 {
|
108
|
+
padding: 0 2em 0 3em; }
|
109
|
+
|
110
|
+
.info-section {
|
111
|
+
padding: 0 2em 0 5em; }
|
112
|
+
|
113
|
+
.prefatory-section {
|
114
|
+
padding: 0 3em 0 6em; }
|
115
|
+
|
116
|
+
.zzSTDTitle1, .MsoCommentText {
|
117
|
+
display: none; }
|
118
|
+
|
119
|
+
.coverpage {
|
120
|
+
text-align: center;
|
121
|
+
padding-left: 1.5em; }
|
122
|
+
|
123
|
+
.coverpage-logo span, .coverpage-tc-name span {
|
124
|
+
font-family: {{bodyfont}};
|
125
|
+
text-transform: none;
|
126
|
+
font-weight: 300;
|
127
|
+
margin-left: 1em; }
|
128
|
+
|
129
|
+
.coverpage-tc-name {
|
130
|
+
font-size: 1.2em;
|
131
|
+
line-height: 1.2em;
|
132
|
+
margin: 0.25em 0; }
|
133
|
+
|
134
|
+
.copyright {
|
135
|
+
padding: 1em;
|
136
|
+
font-size: 0.9em;
|
137
|
+
text-align: left; }
|
138
|
+
|
139
|
+
/* Document Identity */
|
140
|
+
.coverpage-doc-identity {
|
141
|
+
font-size: 2em;
|
142
|
+
line-height: 2em; }
|
143
|
+
|
144
|
+
.coverpage-title .title-second {
|
145
|
+
display: none; }
|
146
|
+
|
147
|
+
.coverpage-stage-block {
|
148
|
+
font-family: {{headerfont}};
|
149
|
+
font-weight: 600;
|
150
|
+
font-size: 1.25em;
|
151
|
+
margin: 2em 0em 2em 0em;
|
152
|
+
text-transform: uppercase; }
|
153
|
+
|
154
|
+
.authors {
|
155
|
+
margin-top: 2em; }
|
156
|
+
.authors span {
|
157
|
+
display: block;
|
158
|
+
line-height: 2; }
|
159
|
+
.authors span.roletag {
|
160
|
+
display: inline-block;
|
161
|
+
font-size: 12px;
|
162
|
+
color: #00335b;
|
163
|
+
background-color: white;
|
164
|
+
padding: 2px 5px;
|
165
|
+
margin-left: 7px;
|
166
|
+
border-radius: 5px; }
|
167
|
+
|
168
|
+
/* Draft Warning */
|
169
|
+
.coverpage-warning {
|
170
|
+
border: #f36f36 solid 2px;
|
171
|
+
color: #f36f36 !important;
|
172
|
+
margin: 1em 2em;
|
173
|
+
color: #2e81c2;
|
174
|
+
padding: 2em 1em 1em 1em;
|
175
|
+
border-radius: 25px; }
|
176
|
+
.coverpage-warning h1 {
|
177
|
+
font-family: {{headerfont}};
|
178
|
+
font-weight: 300;
|
179
|
+
text-transform: uppercase;
|
180
|
+
font-size: 1.2em; }
|
181
|
+
|
182
|
+
@media print {
|
183
|
+
.document-info, .copyright {
|
184
|
+
page-break-before: always; }
|
185
|
+
.coverpage {
|
186
|
+
height: 23cm; }
|
187
|
+
.info-section {
|
188
|
+
display: none; }
|
189
|
+
.wrapper-top {
|
190
|
+
top: 0;
|
191
|
+
padding-top: 4cm;
|
192
|
+
padding-bottom: 4cm; }
|
193
|
+
.wrapper-top-bottom {
|
194
|
+
margin-top: -5px;
|
195
|
+
display: none; } }
|