Class: IsoDoc::Iho::PresentationXMLConvert
- Inherits:
-
Generic::PresentationXMLConvert
- Object
- Generic::PresentationXMLConvert
- IsoDoc::Iho::PresentationXMLConvert
show all
- Includes:
- Init
- Defined in:
- lib/isodoc/iho/presentation_xml_convert.rb
Constant Summary
collapse
- UPDATE_RELATIONS =
<<~XPATH.freeze
//bibdata/relation[@type = 'updatedBy' or @type = 'merges' or @type = 'splits' or @type = 'hasDraft']/bibitem
XPATH
Instance Method Summary
collapse
-
#bibdata(docxml) ⇒ Object
-
#biblio_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn, _bib) ⇒ Object
-
#clause(docxml) ⇒ Object
-
#clausedelim ⇒ Object
-
#ddMMMyyyy(isodate) ⇒ Object
-
#dochistory(docxml) ⇒ Object
-
#dochistory_contributor(contrib) ⇒ Object
-
#dochistory_contributors(item) ⇒ Object
-
#dochistory_date(item) ⇒ Object
-
#dochistory_description(item) ⇒ Object
-
#format_personalname(contrib) ⇒ Object
-
#generate_dochistory(updates, pref) ⇒ Object
-
#generate_dochistory_row(item) ⇒ Object
-
#middle_title(docxml) ⇒ Object
-
#norm_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn, _bib) ⇒ Object
-
#omit_docid_prefix(prefix) ⇒ Object
-
#preface_insert_point(docxml) ⇒ Object
-
#preface_rearrange(doc) ⇒ Object
-
#term1(elem) ⇒ Object
-
#termsource1(elem) ⇒ Object
Methods included from Init
#bibrenderer, #i18n_init, #info, #metadata_init, #xref_init
Instance Method Details
#bibdata(docxml) ⇒ Object
33
34
35
36
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 33
def bibdata(docxml)
super
dochistory(docxml)
end
|
#biblio_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn, _bib) ⇒ Object
13
14
15
16
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 13
def biblio_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn,
_bib)
"[#{ordinal}]<tab/>"
end
|
#clause(docxml) ⇒ Object
142
143
144
145
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 142
def clause(docxml)
super
docxml.xpath(ns("//executivesummary | //appendix")).each { |x| clause1(x) }
end
|
#clausedelim ⇒ Object
138
139
140
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 138
def clausedelim
""
end
|
#ddMMMyyyy(isodate) ⇒ Object
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 108
def ddMMMyyyy(isodate)
isodate.nil? and return nil
arr = isodate.split("-")
if arr.size == 1 && (/^\d+$/.match isodate)
Date.new(*arr.map(&:to_i)).strftime("%Y")
elsif arr.size == 2
Date.new(*arr.map(&:to_i)).strftime("%B %Y")
else
Date.parse(isodate).strftime("%d %B %Y")
end
end
|
#dochistory(docxml) ⇒ Object
42
43
44
45
46
47
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 42
def dochistory(docxml)
updates = docxml.xpath(ns(UPDATE_RELATIONS))
updates.empty? and return
pref = preface_insert_point(docxml)
generate_dochistory(updates, pref)
end
|
#dochistory_contributor(contrib) ⇒ Object
88
89
90
91
92
93
94
95
96
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 88
def dochistory_contributor(contrib)
ret = contrib.at("./organization/abbreviation") ||
contrib.at("./organization/subdivision") ||
contrib.at("./organization/name") ||
contrib.at("./person/name/abbreviation") ||
contrib.at("./person/name/completename")
ret and return ret.text
format_personalname(contrib)
end
|
#dochistory_contributors(item) ⇒ Object
82
83
84
85
86
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 82
def dochistory_contributors(item)
item.xpath(ns("./contributor")).map do |c|
dochistory_contributor(c)
end.join(", ")
end
|
#dochistory_date(item) ⇒ Object
75
76
77
78
79
80
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 75
def dochistory_date(item)
d = item.at(ns("./date[@type = 'updated']")) ||
item.at(ns("./date[@type = 'published']")) ||
item.at(ns("./date[@type = 'issued']")) or return ""
ddMMMyyyy(d.text.strip)
end
|
#dochistory_description(item) ⇒ Object
103
104
105
106
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 103
def dochistory_description(item)
d = item.at(ns("./amend/description")) or return ""
d.children.to_xml
end
|
98
99
100
101
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 98
def format_personalname(contrib)
Relaton::Render::General.new(template: { book: "{{ creatornames }}" })
.render("<bibitem type='book'>#{contrib.to_xml}</bibitem>")
end
|
#generate_dochistory(updates, pref) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 54
def generate_dochistory(updates, pref)
ret = updates.map { |u| generate_dochistory_row(u) }.flatten.join("\n")
pref << <<~XML
<clause id='_#{UUIDTools::UUID.random_create}'>
<title>#{@i18n.dochistory}</title>
<table unnumbered="true"><thead>
<tr><th>Version Number</th><th>Date</th><th>Author</th><th>Description</th></tr>
</thead><tbody>
#{ret}
</tbody></table></clause>
XML
end
|
#generate_dochistory_row(item) ⇒ Object
67
68
69
70
71
72
73
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 67
def generate_dochistory_row(item)
e = item.at(ns("./edition"))&.text
date = dochistory_date(item)
c = dochistory_contributors(item)
desc = dochistory_description(item)
"<tr><td>#{e}</td><td>#{date}</td><td>#{c}</td><td>#{desc}</td></tr>"
end
|
#middle_title(docxml) ⇒ Object
18
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 18
def middle_title(docxml); end
|
#norm_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn, _bib) ⇒ Object
9
10
11
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 9
def norm_ref_entry_code(ordinal, _idents, _ids, _standard, _datefn, _bib)
"[#{ordinal}]<tab/>"
end
|
#omit_docid_prefix(prefix) ⇒ Object
120
121
122
123
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 120
def omit_docid_prefix(prefix)
prefix == "IHO" and return true
super
end
|
#preface_insert_point(docxml) ⇒ Object
49
50
51
52
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 49
def preface_insert_point(docxml)
docxml.at(ns("//preface")) || docxml.at(ns("//sections"))
.add_previous_sibling("<preface> </preface>").first
end
|
#preface_rearrange(doc) ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 20
def preface_rearrange(doc)
preface_move(doc.xpath(ns("//preface/abstract")),
%w(foreword executivesummary introduction clause acknowledgements), doc)
preface_move(doc.xpath(ns("//preface/foreword")),
%w(executivesummary introduction clause acknowledgements), doc)
preface_move(doc.xpath(ns("//preface/executivesummary")),
%w(introduction clause acknowledgements), doc)
preface_move(doc.xpath(ns("//preface/introduction")),
%w(clause acknowledgements), doc)
preface_move(doc.xpath(ns("//preface/acknowledgements")),
%w(), doc)
end
|
#term1(elem) ⇒ Object
125
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 125
def term1(elem); end
|
#termsource1(elem) ⇒ Object
127
128
129
130
131
132
133
134
135
136
|
# File 'lib/isodoc/iho/presentation_xml_convert.rb', line 127
def termsource1(elem)
elem.parent.nil? and return
while elem&.next_element&.name == "termsource"
elem << "; #{to_xml(elem.next_element.remove.children)}"
end
t = elem.at("./ancestor::xmlns:term") or return
s = l10n(" [#{to_xml(elem.remove.children).strip}]")
defn = t.at(ns(".//definition[last()]")) or return
defn.elements.last << s
end
|