asciidoctor-iso 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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>