asciidoctor-iso 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +7 -10
  3. data/README.adoc +118 -6
  4. data/asciidoctor-iso.gemspec +1 -4
  5. data/lib/asciidoctor-iso.rb +2 -0
  6. data/lib/asciidoctor/iso/base.rb +20 -95
  7. data/lib/asciidoctor/iso/blocks.rb +47 -39
  8. data/lib/asciidoctor/iso/cleanup.rb +25 -97
  9. data/lib/asciidoctor/iso/cleanup_block.rb +10 -1
  10. data/lib/asciidoctor/iso/cleanup_ref.rb +100 -0
  11. data/lib/asciidoctor/iso/converter.rb +5 -2
  12. data/lib/asciidoctor/iso/front.rb +52 -24
  13. data/lib/asciidoctor/iso/html/header.html +10 -10
  14. data/lib/asciidoctor/iso/html/html_iso_intro.html +1 -1
  15. data/lib/asciidoctor/iso/html/html_iso_titlepage.html +5 -5
  16. data/lib/asciidoctor/iso/html/htmlstyle.css +0 -21
  17. data/lib/asciidoctor/iso/html/isodoc.css +13 -28
  18. data/lib/asciidoctor/iso/html/word_iso_intro.html +2 -2
  19. data/lib/asciidoctor/iso/html/word_iso_titlepage.html +7 -7
  20. data/lib/asciidoctor/iso/html/wordstyle.css +998 -0
  21. data/lib/asciidoctor/iso/inline.rb +128 -0
  22. data/lib/asciidoctor/iso/isodoc.rng +1516 -0
  23. data/lib/asciidoctor/iso/isostandard.rnc +38 -39
  24. data/lib/asciidoctor/iso/isostandard.rng +529 -1276
  25. data/lib/asciidoctor/iso/isostandard_diff.rnc +40 -56
  26. data/lib/asciidoctor/iso/lists.rb +30 -28
  27. data/lib/asciidoctor/iso/macros.rb +37 -0
  28. data/lib/asciidoctor/iso/section.rb +1 -1
  29. data/lib/asciidoctor/iso/utils.rb +9 -0
  30. data/lib/asciidoctor/iso/validate.rb +41 -120
  31. data/lib/asciidoctor/iso/validate_section.rb +117 -0
  32. data/lib/asciidoctor/iso/validate_style.rb +5 -7
  33. data/lib/asciidoctor/iso/version.rb +1 -1
  34. data/spec/examples/rice.adoc +41 -8
  35. data/spec/examples/rice.doc +2885 -2859
  36. data/spec/examples/rice.html +316 -649
  37. data/spec/examples/rice.preview.html +51 -10
  38. data/spec/examples/rice.xml +418 -343
  39. metadata +12 -50
  40. data/lib/asciidoctor/iso/inline_anchor.rb +0 -59
  41. data/lib/asciidoctor/iso/validate.make.sh +0 -8
@@ -1,11 +1,10 @@
1
1
  require "date"
2
2
  require "nokogiri"
3
- require "htmlentities"
4
- require "json"
5
3
  require "pathname"
6
4
  require "open-uri"
7
5
  require "pp"
8
6
  require_relative "./cleanup_block.rb"
7
+ require_relative "./cleanup_ref.rb"
9
8
 
10
9
  module Asciidoctor
11
10
  module ISO
@@ -15,15 +14,18 @@ module Asciidoctor
15
14
  end
16
15
 
17
16
  def cleanup(xmldoc)
17
+ sections_cleanup(xmldoc)
18
18
  termdef_cleanup(xmldoc)
19
19
  isotitle_cleanup(xmldoc)
20
20
  table_cleanup(xmldoc)
21
21
  formula_cleanup(xmldoc)
22
22
  figure_cleanup(xmldoc)
23
23
  ref_cleanup(xmldoc)
24
- review_note_cleanup(xmldoc)
24
+ note_cleanup(xmldoc)
25
25
  normref_cleanup(xmldoc)
26
+ reference_names(xmldoc)
26
27
  xref_cleanup(xmldoc)
28
+ quotesource_cleanup(xmldoc)
27
29
  para_cleanup(xmldoc)
28
30
  callout_cleanup(xmldoc)
29
31
  origin_cleanup(xmldoc)
@@ -51,37 +53,16 @@ module Asciidoctor
51
53
  end
52
54
  end
53
55
 
54
- def xref_cleanup(xmldoc)
55
- reference_names(xmldoc)
56
- xmldoc.xpath("//xref").each do |x|
57
- #if InlineAnchor::is_refid? x["target"]
58
- if is_refid? x["target"]
59
- x.name = "eref"
60
- x["bibitemid"] = x["target"]
61
- x["citeas"] = @anchors[x["target"]][:xref]
62
- x.delete("target")
63
- else
64
- x.delete("type")
65
- end
66
- end
67
- end
68
-
69
- def origin_cleanup(xmldoc)
70
- xmldoc.xpath("//origin").each do |x|
71
- x["citeas"] = @anchors[x["bibitemid"]][:xref]
72
- n = x.next_element
73
- if !n.nil? && n.name == "isosection"
74
- n.name = "locality"
75
- n["type"] = "section"
76
- n.parent = x
77
- end
78
- end
79
- end
56
+ LOCALITY_REGEX_STR = <<~REGEXP
57
+ ^((?<locality>section|clause|part|paragraph|chapter|page)\\s+
58
+ (?<ref>\\S+?)|(?<locality>whole))[,:]?\\s*
59
+ (?<text>.*)$
60
+ REGEXP
61
+ LOCALITY_RE = Regexp.new(LOCALITY_REGEX_STR.gsub(/\s/, ""),
62
+ Regexp::IGNORECASE|Regexp::MULTILINE)
80
63
 
81
64
  def termdef_warn(text, re, term, msg)
82
- if re.match? text
83
- warn "ISO style: #{term}: #{msg}"
84
- end
65
+ re.match? text and warn "ISO style: #{term}: #{msg}"
85
66
  end
86
67
 
87
68
  def termdef_style(xmldoc)
@@ -120,9 +101,7 @@ module Asciidoctor
120
101
  t = Nokogiri::XML::Element.new("definition", xmldoc)
121
102
  first_child.replace(t)
122
103
  t << first_child.remove
123
- d.xpath("./p | ./figure | ./formula").each do |n|
124
- t << n.remove
125
- end
104
+ d.xpath("./p | ./figure | ./formula").each { |n| t << n.remove }
126
105
  end
127
106
  end
128
107
 
@@ -143,69 +122,18 @@ module Asciidoctor
143
122
  termdef_style(xmldoc)
144
123
  end
145
124
 
146
- def isotitle_cleanup(xmldoc)
147
- # Remove italicised ISO titles
148
- xmldoc.xpath("//isotitle").each do |a|
149
- if a.elements.size == 1 && a.elements[0].name == "em"
150
- a.children = a.elements[0].children
151
- end
152
- end
153
- end
154
-
155
- def dl_table_cleanup(xmldoc)
156
- # move Key dl after table footer
157
- q = "//table/following-sibling::*[1]"\
158
- "[self::p and normalize-space() = 'Key']"
159
- xmldoc.xpath(q).each do |s|
160
- if !s.next_element.nil? && s.next_element.name == "dl"
161
- s.previous_element << s.next_element.remove
162
- s.remove
163
- end
164
- end
165
- end
166
-
167
- def ref_cleanup(xmldoc)
168
- # move ref before p
169
- xmldoc.xpath("//p/ref").each do |r|
170
- parent = r.parent
171
- parent.previous = r.remove
172
- end
173
- xmldoc
174
- end
175
-
176
- def review_note_cleanup(xmldoc)
177
- xmldoc.xpath("//review").each do |n|
178
- prev = n.previous_element
179
- if !prev.nil? && prev.name == "p"
180
- n.parent = prev
181
- end
182
- end
183
- end
184
-
185
- def normref_cleanup(xmldoc)
186
- q = "//references[title = 'Normative References']"
187
- r = xmldoc.at(q)
188
- r.elements.each do |n|
189
- unless ["title", "bibitem"].include? n.name
190
- n.remove
191
- end
192
- end
193
- end
194
-
195
- def format_ref(ref, isopub)
196
- return "ISO #{ref}" if isopub
197
- return "[#{ref}]" if /^\d+$/.match?(ref) && !/^\[.*\]$/.match?(ref)
198
- ref
199
- end
125
+ ELEMS_ALLOW_NOTES =
126
+ %w[p formula quote sourcecode example admonition ul ol dl figure]
200
127
 
201
- def reference_names(xmldoc)
202
- xmldoc.xpath("//bibitem").each do |ref|
203
- isopub = ref.at(("./publisher/affiliation[name = 'ISO']"))
204
- docid = ref.at(("./docidentifier"))
205
- date = ref.at(("./publisherdate"))
206
- reference = format_ref(docid.text, isopub)
207
- reference += ": #{date.text}" if date && isopub
208
- @anchors[ref["id"]] = { xref: reference }
128
+ # if a note is at the end of a section, it is left alone
129
+ # if a note is followed by a non-note block,
130
+ # it is moved inside its preceding block
131
+ def note_cleanup(xmldoc)
132
+ q = "//note[following-sibling::*[not(local-name() = 'note')]]"
133
+ xmldoc.xpath(q).each do |n|
134
+ next unless n.ancestors("table").empty?
135
+ prev = n.previous_element or next
136
+ n.parent = prev if ELEMS_ALLOW_NOTES.include? prev.name
209
137
  end
210
138
  end
211
139
 
@@ -113,7 +113,7 @@ module Asciidoctor
113
113
  figure_footnote_cleanup(xmldoc)
114
114
  figure_dl_cleanup(xmldoc)
115
115
  subfigure_cleanup(xmldoc)
116
- end
116
+ end
117
117
 
118
118
  def table_footnote_renumber(xmldoc)
119
119
  xmldoc.xpath("//table | //figure").each do |t|
@@ -152,6 +152,15 @@ module Asciidoctor
152
152
  other_footnote_renumber(xmldoc)
153
153
  end
154
154
 
155
+ def sections_cleanup(x)
156
+ s = x.at("//sections")
157
+ foreword = x.at("//foreword")
158
+ s.previous = foreword.remove
159
+ introduction = x.at("//introduction")
160
+ s.previous = introduction.remove if introduction
161
+ x.xpath("//sections/references").reverse_each { |r| s.next = r.remove }
162
+ x.xpath("//sections/annex").reverse_each { |r| s.next = r.remove }
163
+ end
155
164
  end
156
165
  end
157
166
  end
@@ -0,0 +1,100 @@
1
+ module Asciidoctor
2
+ module ISO
3
+ module Cleanup
4
+
5
+ def extract_localities(x)
6
+ text = x.children.first.remove.text
7
+ m = LOCALITY_RE.match text
8
+ while !m.nil?
9
+ ref = m[:ref] ? "<reference>#{m[:ref]}</reference>" : ""
10
+ locality = m[:locality].downcase
11
+ x.add_child("<locality type='#{locality}'>#{ref}</locality>")
12
+ text = m[:text]
13
+ m = LOCALITY_RE.match text
14
+ end
15
+ x.add_child(text)
16
+ end
17
+
18
+ def xref_to_eref(x)
19
+ x["bibitemid"] = x["target"]
20
+ x["citeas"] = @anchors&.dig(x["target"], :xref) or
21
+ warn "ISO: #{x["target"]} is not a real reference!"
22
+ x.delete("target")
23
+ extract_localities(x) unless x.children.empty?
24
+ end
25
+
26
+ def xref_cleanup(xmldoc)
27
+ xmldoc.xpath("//xref").each do |x|
28
+ if is_refid? x["target"]
29
+ x.name = "eref"
30
+ xref_to_eref(x)
31
+ else
32
+ x.delete("type")
33
+ end
34
+ end
35
+ end
36
+
37
+ def quotesource_cleanup(xmldoc)
38
+ xmldoc.xpath("//quote/source").each do |x|
39
+ xref_to_eref(x)
40
+ end
41
+ end
42
+
43
+ def origin_cleanup(xmldoc)
44
+ xmldoc.xpath("//origin").each do |x|
45
+ x["citeas"] = @anchors[x["bibitemid"]][:xref]
46
+ n = x.next_element
47
+ if !n.nil? && n.name == "isosection"
48
+ n.name = "locality"
49
+ n["type"] = "section"
50
+ n.parent = x
51
+ end
52
+ end
53
+ end
54
+
55
+ def isotitle_cleanup(xmldoc)
56
+ # Remove italicised ISO titles
57
+ xmldoc.xpath("//isotitle").each do |a|
58
+ if a.elements.size == 1 && a.elements[0].name == "em"
59
+ a.children = a.elements[0].children
60
+ end
61
+ end
62
+ end
63
+
64
+ def ref_cleanup(xmldoc)
65
+ # move ref before p
66
+ xmldoc.xpath("//p/ref").each do |r|
67
+ parent = r.parent
68
+ parent.previous = r.remove
69
+ end
70
+ xmldoc
71
+ end
72
+
73
+ def normref_cleanup(xmldoc)
74
+ q = "//references[title = 'Normative References']"
75
+ r = xmldoc.at(q)
76
+ r.elements.each do |n|
77
+ n.remove unless ["title", "bibitem"].include? n.name
78
+ end
79
+ end
80
+
81
+ def format_ref(ref, isopub)
82
+ return ref if isopub
83
+ return "[#{ref}]" if /^\d+$/.match?(ref) && !/^\[.*\]$/.match?(ref)
84
+ ref
85
+ end
86
+
87
+ def reference_names(xmldoc)
88
+ xmldoc.xpath("//bibitem").each do |ref|
89
+ isopub = ref.at("./contributor[role/@type = 'publisher']/"\
90
+ "organization[name = 'ISO']")
91
+ docid = ref.at("./docidentifier")
92
+ date = ref.at("./publisherdate")
93
+ reference = format_ref(docid.text, isopub)
94
+ reference += ": #{date.text}" if date && isopub
95
+ @anchors[ref["id"]] = { xref: reference }
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -3,13 +3,14 @@ require "asciidoctor/iso/version"
3
3
  require "asciidoctor/iso/base"
4
4
  require "asciidoctor/iso/front"
5
5
  require "asciidoctor/iso/lists"
6
- require "asciidoctor/iso/inline_anchor"
6
+ require "asciidoctor/iso/inline"
7
7
  require "asciidoctor/iso/blocks"
8
8
  require "asciidoctor/iso/section"
9
9
  require "asciidoctor/iso/table"
10
10
  require "asciidoctor/iso/validate"
11
11
  require "asciidoctor/iso/utils"
12
12
  require "asciidoctor/iso/cleanup"
13
+ require_relative "./macros.rb"
13
14
 
14
15
  module Asciidoctor
15
16
  module ISO
@@ -22,7 +23,7 @@ module Asciidoctor
22
23
  include ::Asciidoctor::ISO::Base
23
24
  include ::Asciidoctor::ISO::Front
24
25
  include ::Asciidoctor::ISO::Lists
25
- include ::Asciidoctor::ISO::InlineAnchor
26
+ include ::Asciidoctor::ISO::Inline
26
27
  include ::Asciidoctor::ISO::Blocks
27
28
  include ::Asciidoctor::ISO::Section
28
29
  include ::Asciidoctor::ISO::Table
@@ -50,6 +51,8 @@ module Asciidoctor
50
51
  alias_method :inline_kbd, :skip
51
52
  alias_method :inline_menu, :skip
52
53
  alias_method :inline_image, :skip
54
+
55
+
53
56
  end
54
57
  end
55
58
  end
@@ -10,7 +10,7 @@ module Asciidoctor
10
10
  module ISO
11
11
  module Front
12
12
  def metadata_id(node, xml)
13
- xml.id do |i|
13
+ xml.docidentifier do |i|
14
14
  i.project_number node.attr("docnumber"),
15
15
  **attr_code(part: node.attr("partnumber"))
16
16
  if node.attr("tc-docnumber")
@@ -27,19 +27,30 @@ module Asciidoctor
27
27
  end
28
28
  end
29
29
 
30
+ def committee_component(compname, node, out)
31
+ out.send compname.gsub(/-/, "_"), node.attr(compname),
32
+ **attr_code(number: node.attr("#{compname}-number"),
33
+ type: node.attr("#{compname}-type"))
34
+ end
35
+
30
36
  def metadata_author(node, xml)
31
- xml.creator **{ role: "author" } do |a|
32
- a.technical_committee node.attr("technical-committee"),
33
- **attr_code(number: node.attr("technical-committee-number"))
34
- if node.attr("subcommittee")
35
- a.subcommittee node.attr("subcommittee"),
36
- **attr_code(number: node.attr("subcommittee-number"))
37
+ xml.contributor do |c|
38
+ c.role **{ type: "author" }
39
+ c.organization do |a|
40
+ a.name "ISO"
37
41
  end
38
- if node.attr("workgroup")
39
- a.workgroup node.attr("workgroup"),
40
- **attr_code(number: node.attr("workgroup-number"))
42
+ end
43
+ end
44
+
45
+ def metadata_publisher(node, xml)
46
+ publishers = node.attr("publisher") || "ISO"
47
+ publishers.split(/,[ ]?/).each do |p|
48
+ xml.contributor do |c|
49
+ c.role **{ type: "publisher" }
50
+ c.organization do |a|
51
+ a.name p
52
+ end
41
53
  end
42
- a.secretariat node.attr("secretariat") if node.attr("secretariat")
43
54
  end
44
55
  end
45
56
 
@@ -47,8 +58,10 @@ module Asciidoctor
47
58
  from = node.attr("copyright-year") || Date.today.year
48
59
  xml.copyright do |c|
49
60
  c.from from
50
- c.owner do |o|
51
- o.affiliation "ISO"
61
+ c.owner do |owner|
62
+ owner.organization do |o|
63
+ o.name "ISO"
64
+ end
52
65
  end
53
66
  end
54
67
  end
@@ -60,26 +73,41 @@ module Asciidoctor
60
73
  end
61
74
  end
62
75
 
76
+ def metadata_committee(node, xml)
77
+ xml.editorialgroup do |a|
78
+ committee_component("technical-committee", node, a)
79
+ committee_component("subcommittee", node, a)
80
+ committee_component("workgroup", node, a)
81
+ node.attr("secretariat") && a.secretariat(node.attr("secretariat"))
82
+ end
83
+ end
84
+
63
85
  def metadata(node, xml)
64
- metadata_status(node, xml)
86
+ title node, xml
87
+ metadata_id(node, xml)
65
88
  metadata_author(node, xml)
89
+ metadata_publisher(node, xml)
66
90
  xml.language node.attr("language")
67
- xml.script "latn"
68
- xml.type node.attr("doctype")
69
- metadata_id(node, xml)
70
- metadata_version(node, xml)
91
+ xml.script "Latn"
92
+ metadata_status(node, xml)
71
93
  metadata_copyright(node, xml)
94
+ metadata_committee(node, xml)
72
95
  end
73
96
 
74
97
  def title(node, xml)
75
98
  ["en", "fr"].each do |lang|
76
- xml.title **{ language: lang } do |t|
77
- if node.attr("title-intro-#{lang}")
78
- t.title_intro { |t1| t1 << node.attr("title-intro-#{lang}") }
99
+ xml.title do |t|
100
+ at = { language: lang, format: "text/plain" }
101
+ node.attr("title-intro-#{lang}") and
102
+ t.title_intro **attr_code(at) do |t1|
103
+ t1 << node.attr("title-intro-#{lang}")
104
+ end
105
+ t.title_main **attr_code(at) do |t1|
106
+ t1 << node.attr("title-main-#{lang}")
79
107
  end
80
- t.title_main { |t1| t1 << node.attr("title-main-#{lang}") }
81
- if node.attr("title-part-#{lang}")
82
- t.title_part node.attr("title-part-#{lang}")
108
+ node.attr("title-part-#{lang}") and
109
+ t.title_part **attr_code(at) do |t1|
110
+ t1 << node.attr("title-part-#{lang}")
83
111
  end
84
112
  end
85
113
  end
@@ -11,7 +11,7 @@ xmlns:mv="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
11
11
  <meta name=ProgId content=Word.Document>
12
12
  <meta name=Generator content="Microsoft Word 15">
13
13
  <meta name=Originator content="Microsoft Word 15">
14
- <link id=Main-File rel=Main-File href="../FILENAME.html">
14
+ <link id=Main-File rel=Main-File href="../{{ filename }}.html">
15
15
  <!--[if gte mso 9]><xml>
16
16
  <o:shapedefaults v:ext="edit" spidmax="2049"/>
17
17
  </xml><![endif]-->
@@ -66,7 +66,7 @@ normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuatio
66
66
  <div style='mso-element:header' id=eh1>
67
67
 
68
68
  <p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
69
- mso-line-height-rule:exactly'><span lang=EN-GB>ISO&nbsp;DOCNUMBER:DOCYEAR(E) DRAFTINFO</span></p>
69
+ mso-line-height-rule:exactly'><span lang=EN-GB>{{ agency }}&nbsp;{{ docnumber }}:{{ docyear }}(E){{ draftinfo }}</span></p>
70
70
 
71
71
  </div>
72
72
 
@@ -74,7 +74,7 @@ mso-line-height-rule:exactly'><span lang=EN-GB>ISO&nbsp;DOCNUMBER:DOCYEAR(E) DRA
74
74
 
75
75
  <p class=MsoHeader style='margin-bottom:18.0pt'><span lang=EN-GB
76
76
  style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-weight:normal'>©
77
- ISO&nbsp;DOCYEAR&nbsp;– All rights reserved</span><span lang=EN-GB
77
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– All rights reserved</span><span lang=EN-GB
78
78
  style='font-weight:normal'><o:p></o:p></span></p>
79
79
 
80
80
  </div>
@@ -93,21 +93,21 @@ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
93
93
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
94
94
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
95
95
  style='mso-tab-count:1'>                                                                                                                                                                           </span>©
96
- ISO&nbsp;DOCYEAR&nbsp;– All rights reserved<o:p></o:p></span></p>
96
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
97
97
 
98
98
  </div>
99
99
 
100
100
  <div style='mso-element:header' id=eh2>
101
101
 
102
102
  <p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
103
- mso-line-height-rule:exactly'><span lang=EN-GB>ISO&nbsp;DOCNUMBER:DOCYEAR(E) DRAFTINFO</span></p>
103
+ mso-line-height-rule:exactly'><span lang=EN-GB>{{ agency }}&nbsp;{{ docnumber }}:{{ docyear }}(E){{ draftinfo }}</span></p>
104
104
 
105
105
  </div>
106
106
 
107
107
  <div style='mso-element:header' id=h2>
108
108
 
109
109
  <p class=MsoHeader align=right style='text-align:right;line-height:12.0pt;
110
- mso-line-height-rule:exactly'><span lang=EN-GB>ISO&nbsp;DOCNUMBER:DOCYEAR(E) DRAFTINFO</span></p>
110
+ mso-line-height-rule:exactly'><span lang=EN-GB>{{ agency }}&nbsp;{{ docnumber }}:{{ docyear }}(E){{ draftinfo }}</span></p>
111
111
 
112
112
  </div>
113
113
 
@@ -124,14 +124,14 @@ lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
124
124
  style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
125
125
  style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
126
126
  1'>                                                                                                                                                                           </span>©
127
- ISO&nbsp;DOCYEAR&nbsp;– All rights reserved<o:p></o:p></span></p>
127
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
128
128
 
129
129
  </div>
130
130
 
131
131
  <div style='mso-element:footer' id=f2>
132
132
 
133
133
  <p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
134
- style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© ISO&nbsp;DOCYEAR&nbsp;– All
134
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– All
135
135
  rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                          </span></span><!--[if supportFields]><span
136
136
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
137
137
  style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>  
@@ -158,14 +158,14 @@ style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
158
158
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
159
159
  lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
160
160
  style='mso-tab-count:1'>                                                                                                                                                                           </span>©
161
- ISO&nbsp;DOCYEAR&nbsp;– All rights reserved<o:p></o:p></span></p>
161
+ {{ agency }}&nbsp;{{ docyear }}&nbsp;– All rights reserved<o:p></o:p></span></p>
162
162
 
163
163
  </div>
164
164
 
165
165
  <div style='mso-element:footer' id=f3>
166
166
 
167
167
  <p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
168
- style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© ISO&nbsp;DOCYEAR&nbsp;– All
168
+ style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© {{ agency }}&nbsp;{{ docyear }}&nbsp;– All
169
169
  rights reserved<span style='mso-tab-count:1'>                                                                                                                                                                           </span></span><!--[if supportFields]><b
170
170
  style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
171
171
  mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>