metanorma-iho 0.5.6 → 0.6.0
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.
- checksums.yaml +4 -4
- data/lib/isodoc/iho/base_convert.rb +1 -105
- data/lib/isodoc/iho/html/html_iho_titlepage.html +2 -0
- data/lib/isodoc/iho/html/word_iho_titlepage.html +1 -0
- data/lib/isodoc/iho/iho.specification.xsl +559 -184
- data/lib/isodoc/iho/iho.standard.xsl +559 -184
- data/lib/isodoc/iho/init.rb +1 -1
- data/lib/isodoc/iho/pdf_convert.rb +2 -3
- data/lib/isodoc/iho/presentation_xml_convert.rb +5 -1
- data/lib/isodoc/iho/xref.rb +16 -13
- data/lib/metanorma/iho/biblio.rng +62 -10
- data/lib/metanorma/iho/isodoc.rng +56 -0
- data/lib/metanorma/iho/version.rb +1 -1
- data/lib/relaton/render/config.yml +8 -0
- data/lib/relaton/render/fields.rb +23 -0
- data/lib/relaton/render/general.rb +25 -0
- data/lib/relaton/render/parse.rb +31 -0
- data/metanorma-iho.gemspec +1 -1
- metadata +8 -4
data/lib/isodoc/iho/init.rb
CHANGED
@@ -4,14 +4,14 @@ module IsoDoc
|
|
4
4
|
module IHO
|
5
5
|
# A {Converter} implementation that generates PDF HTML output, and a
|
6
6
|
# document schema encapsulation of the document for validation
|
7
|
-
class PdfConvert <
|
7
|
+
class PdfConvert < IsoDoc::XslfoPdfConvert
|
8
8
|
def initialize(options)
|
9
9
|
@libdir = File.dirname(__FILE__)
|
10
10
|
super
|
11
11
|
end
|
12
12
|
|
13
13
|
def pdf_stylesheet(docxml)
|
14
|
-
case
|
14
|
+
case docxml&.at(ns("//bibdata/ext/doctype"))&.text
|
15
15
|
when "standard" then "iho.standard.xsl"
|
16
16
|
else
|
17
17
|
"iho.specification.xsl"
|
@@ -20,4 +20,3 @@ module IsoDoc
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
|
-
|
@@ -1,12 +1,16 @@
|
|
1
1
|
require_relative "init"
|
2
2
|
require "isodoc"
|
3
3
|
require "metanorma-generic"
|
4
|
+
require_relative "../../relaton/render/general"
|
4
5
|
|
5
6
|
module IsoDoc
|
6
7
|
module IHO
|
7
8
|
class PresentationXMLConvert < IsoDoc::Generic::PresentationXMLConvert
|
9
|
+
def bibrenderer
|
10
|
+
::Relaton::Render::IHO::General.new(language: @lang)
|
11
|
+
end
|
12
|
+
|
8
13
|
include Init
|
9
14
|
end
|
10
15
|
end
|
11
16
|
end
|
12
|
-
|
data/lib/isodoc/iho/xref.rb
CHANGED
@@ -21,8 +21,9 @@ module IsoDoc
|
|
21
21
|
@anchors[clause["id"]] =
|
22
22
|
{ label: annex_name_lbl(clause, num), type: "clause", elem: lbl,
|
23
23
|
xref: l10n("#{lbl} #{num}"), level: 1, value: num }
|
24
|
-
if
|
25
|
-
annex_names1(
|
24
|
+
if @klass.single_term_clause?(clause)
|
25
|
+
annex_names1(clause.at(ns("./references | ./terms | ./definitions")),
|
26
|
+
num.to_s, 1)
|
26
27
|
else
|
27
28
|
i = Counter.new
|
28
29
|
clause.xpath(ns("./clause | ./references | ./terms | ./definitions"))
|
@@ -36,17 +37,19 @@ module IsoDoc
|
|
36
37
|
|
37
38
|
def back_anchor_names(docxml)
|
38
39
|
super
|
39
|
-
|
40
|
-
|
41
|
-
.
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
.
|
48
|
-
|
49
|
-
|
40
|
+
if @parse_settings.empty? || @parse_settings[:clauses]
|
41
|
+
i = Counter.new
|
42
|
+
docxml.xpath(ns("//annex[@obligation = 'informative']"))
|
43
|
+
.each do |c|
|
44
|
+
i.increment(c)
|
45
|
+
annex_names(c, i.print)
|
46
|
+
end
|
47
|
+
i = Counter.new("@", skip_i: true)
|
48
|
+
docxml.xpath(ns("//annex[not(@obligation = 'informative')]"))
|
49
|
+
.each do |c|
|
50
|
+
i.increment(c)
|
51
|
+
annex_names(c, i.print)
|
52
|
+
end
|
50
53
|
end
|
51
54
|
end
|
52
55
|
|
@@ -527,7 +527,7 @@
|
|
527
527
|
</define>
|
528
528
|
<define name="LocalityType">
|
529
529
|
<data type="string">
|
530
|
-
<param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
|
530
|
+
<param name="pattern">section|clause|part|paragraph|chapter|page|title|line|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
|
531
531
|
</data>
|
532
532
|
</define>
|
533
533
|
<define name="referenceFrom">
|
@@ -677,6 +677,9 @@
|
|
677
677
|
<zeroOrMore>
|
678
678
|
<ref name="extent"/>
|
679
679
|
</zeroOrMore>
|
680
|
+
<optional>
|
681
|
+
<ref name="bibliographic_size"/>
|
682
|
+
</optional>
|
680
683
|
<zeroOrMore>
|
681
684
|
<ref name="accesslocation"/>
|
682
685
|
</zeroOrMore>
|
@@ -848,17 +851,46 @@
|
|
848
851
|
</define>
|
849
852
|
<define name="bplace">
|
850
853
|
<element name="place">
|
851
|
-
<
|
852
|
-
<
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
854
|
+
<choice>
|
855
|
+
<text/>
|
856
|
+
<group>
|
857
|
+
<ref name="bibliocity"/>
|
858
|
+
<zeroOrMore>
|
859
|
+
<ref name="biblioregion"/>
|
860
|
+
</zeroOrMore>
|
861
|
+
<zeroOrMore>
|
862
|
+
<ref name="bibliocountry"/>
|
863
|
+
</zeroOrMore>
|
864
|
+
</group>
|
865
|
+
</choice>
|
866
|
+
</element>
|
867
|
+
</define>
|
868
|
+
<define name="bibliocity">
|
869
|
+
<element name="city">
|
859
870
|
<text/>
|
860
871
|
</element>
|
861
872
|
</define>
|
873
|
+
<define name="biblioregion">
|
874
|
+
<element name="region">
|
875
|
+
<ref name="RegionType"/>
|
876
|
+
</element>
|
877
|
+
</define>
|
878
|
+
<define name="bibliocountry">
|
879
|
+
<element name="country">
|
880
|
+
<ref name="RegionType"/>
|
881
|
+
</element>
|
882
|
+
</define>
|
883
|
+
<define name="RegionType">
|
884
|
+
<optional>
|
885
|
+
<attribute name="iso"/>
|
886
|
+
</optional>
|
887
|
+
<optional>
|
888
|
+
<attribute name="recommended">
|
889
|
+
<data type="boolean"/>
|
890
|
+
</attribute>
|
891
|
+
</optional>
|
892
|
+
<text/>
|
893
|
+
</define>
|
862
894
|
<define name="bprice">
|
863
895
|
<element name="price">
|
864
896
|
<attribute name="currency"/>
|
@@ -922,9 +954,29 @@
|
|
922
954
|
<text/>
|
923
955
|
</element>
|
924
956
|
</define>
|
957
|
+
<define name="sizevalue">
|
958
|
+
<element name="value">
|
959
|
+
<attribute name="type"/>
|
960
|
+
<text/>
|
961
|
+
</element>
|
962
|
+
</define>
|
963
|
+
<define name="bibliographic_size">
|
964
|
+
<element name="size">
|
965
|
+
<oneOrMore>
|
966
|
+
<ref name="sizevalue"/>
|
967
|
+
</oneOrMore>
|
968
|
+
</element>
|
969
|
+
</define>
|
925
970
|
<define name="extent">
|
926
971
|
<element name="extent">
|
927
|
-
<
|
972
|
+
<choice>
|
973
|
+
<zeroOrMore>
|
974
|
+
<ref name="locality"/>
|
975
|
+
</zeroOrMore>
|
976
|
+
<zeroOrMore>
|
977
|
+
<ref name="localityStack"/>
|
978
|
+
</zeroOrMore>
|
979
|
+
</choice>
|
928
980
|
</element>
|
929
981
|
</define>
|
930
982
|
<define name="series">
|
@@ -32,6 +32,43 @@
|
|
32
32
|
<ref name="DocumentType"/>
|
33
33
|
</element>
|
34
34
|
</define>
|
35
|
+
<define name="admonition">
|
36
|
+
<element name="admonition">
|
37
|
+
<attribute name="type">
|
38
|
+
<ref name="AdmonitionType"/>
|
39
|
+
</attribute>
|
40
|
+
<optional>
|
41
|
+
<attribute name="class"/>
|
42
|
+
</optional>
|
43
|
+
<attribute name="id">
|
44
|
+
<data type="ID"/>
|
45
|
+
</attribute>
|
46
|
+
<optional>
|
47
|
+
<attribute name="uri">
|
48
|
+
<data type="anyURI"/>
|
49
|
+
</attribute>
|
50
|
+
</optional>
|
51
|
+
<optional>
|
52
|
+
<attribute name="coverpage">
|
53
|
+
<data type="boolean"/>
|
54
|
+
</attribute>
|
55
|
+
</optional>
|
56
|
+
<optional>
|
57
|
+
<attribute name="notag">
|
58
|
+
<data type="boolean"/>
|
59
|
+
</attribute>
|
60
|
+
</optional>
|
61
|
+
<optional>
|
62
|
+
<ref name="tname"/>
|
63
|
+
</optional>
|
64
|
+
<zeroOrMore>
|
65
|
+
<ref name="paragraph-with-footnote"/>
|
66
|
+
</zeroOrMore>
|
67
|
+
<zeroOrMore>
|
68
|
+
<ref name="note"/>
|
69
|
+
</zeroOrMore>
|
70
|
+
</element>
|
71
|
+
</define>
|
35
72
|
<define name="index">
|
36
73
|
<element name="index">
|
37
74
|
<optional>
|
@@ -851,6 +888,16 @@
|
|
851
888
|
<ref name="MultilingualRenderingType"/>
|
852
889
|
</attribute>
|
853
890
|
</optional>
|
891
|
+
<optional>
|
892
|
+
<attribute name="coverpage">
|
893
|
+
<data type="boolean"/>
|
894
|
+
</attribute>
|
895
|
+
</optional>
|
896
|
+
<optional>
|
897
|
+
<attribute name="notag">
|
898
|
+
<data type="boolean"/>
|
899
|
+
</attribute>
|
900
|
+
</optional>
|
854
901
|
<oneOrMore>
|
855
902
|
<choice>
|
856
903
|
<ref name="paragraph"/>
|
@@ -1178,6 +1225,7 @@
|
|
1178
1225
|
<ref name="concept"/>
|
1179
1226
|
<ref name="add"/>
|
1180
1227
|
<ref name="del"/>
|
1228
|
+
<ref name="span"/>
|
1181
1229
|
</choice>
|
1182
1230
|
</define>
|
1183
1231
|
<define name="add">
|
@@ -1204,6 +1252,14 @@
|
|
1204
1252
|
</choice>
|
1205
1253
|
</element>
|
1206
1254
|
</define>
|
1255
|
+
<define name="span">
|
1256
|
+
<element name="span">
|
1257
|
+
<attribute name="class"/>
|
1258
|
+
<oneOrMore>
|
1259
|
+
<ref name="TextElement"/>
|
1260
|
+
</oneOrMore>
|
1261
|
+
</element>
|
1262
|
+
</define>
|
1207
1263
|
<define name="concept">
|
1208
1264
|
<element name="concept">
|
1209
1265
|
<optional>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
template:
|
2
|
+
# skip standardidentifier, it is inserted in front of formattedref within metanorma
|
3
|
+
standard: "{{ standardidentifier | first }} edition_{{ edition }} : {{ title }}, {{ creatornames }} ,_{{role}} ({{ uri }}) ."
|
4
|
+
misc: standard
|
5
|
+
nametemplate:
|
6
|
+
one: "{% if nonpersonal[0] %}{{ nonpersonal[0] }}{% else %}{{surname[0] }} {{initials[0]}}{% endif %}"
|
7
|
+
two: "{% if nonpersonal[0] %}{{ nonpersonal[0] }}{% else %}{{surname[0] }} {{initials[0]}}{% endif %} and {% if nonpersonal[1] %}{{ nonpersonal[1] }}{% else %}{{surname[1]}} {{ initials[1]}}{% endif %}"
|
8
|
+
more: "{% if nonpersonal[0] %}{{ nonpersonal[0] }}{% else %}{{surname[0] }} {{initials[0]}} {% endif %} , {% if nonpersonal[1] %}{{ nonpersonal[1] }}{% else %}{{surname[1]}} {{ initials[1]}} {% endif %} and {% if nonpersonal[2] %}{{ nonpersonal[2] }}{% else %}{{surname[2]}} {{initials[2]}}{% endif %}"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Relaton
|
2
|
+
module Render
|
3
|
+
module IHO
|
4
|
+
class Fields < ::Relaton::Render::Fields
|
5
|
+
def edition_fields_format(hash)
|
6
|
+
super
|
7
|
+
hash[:publisher_raw]&.any? do |p|
|
8
|
+
["IHO", "International Hydrographic Organization"]
|
9
|
+
.include?(p[:nonpersonal])
|
10
|
+
end or hash[:edition] = nil
|
11
|
+
end
|
12
|
+
|
13
|
+
def misc_fields_format(hash)
|
14
|
+
super
|
15
|
+
hash[:standardidentifier].map! do |x|
|
16
|
+
x.sub(/^IHO /, "")
|
17
|
+
end
|
18
|
+
hash
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "relaton-render"
|
2
|
+
require_relative "fields"
|
3
|
+
require_relative "parse"
|
4
|
+
|
5
|
+
module Relaton
|
6
|
+
module Render
|
7
|
+
module IHO
|
8
|
+
class General < ::Relaton::Render::IsoDoc::General
|
9
|
+
def config_loc
|
10
|
+
YAML.load_file(File.join(File.dirname(__FILE__), "config.yml"))
|
11
|
+
end
|
12
|
+
|
13
|
+
def klass_initialize(_options)
|
14
|
+
@nametemplateklass = Relaton::Render::Template::Name
|
15
|
+
@seriestemplateklass = Relaton::Render::Template::Series
|
16
|
+
@extenttemplateklass = Relaton::Render::Template::Extent
|
17
|
+
@sizetemplateklass = Relaton::Render::Template::Size
|
18
|
+
@generaltemplateklass = Relaton::Render::Template::General
|
19
|
+
@fieldsklass = Relaton::Render::IHO::Fields
|
20
|
+
@parseklass = Relaton::Render::IHO::Parse
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Relaton
|
2
|
+
module Render
|
3
|
+
module IHO
|
4
|
+
class Parse < ::Relaton::Render::Parse
|
5
|
+
def standardidentifier(doc)
|
6
|
+
out = doc.docidentifier.each_with_object([]) do |id, ret|
|
7
|
+
ret << id.id unless standardidentifier_exclude1.include? id.type
|
8
|
+
end
|
9
|
+
return out unless out.empty?
|
10
|
+
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def standardidentifier_exclude1
|
15
|
+
%w(metanorma metanorma-ordinal DOI ISSN ISBN rfc-anchor)
|
16
|
+
end
|
17
|
+
|
18
|
+
def uri(doc)
|
19
|
+
uri = nil
|
20
|
+
%w(src).each do |t|
|
21
|
+
uri = doc.link.detect { |u| u.type == t } and break
|
22
|
+
end
|
23
|
+
uri ||= doc.link.first
|
24
|
+
return nil unless uri
|
25
|
+
|
26
|
+
uri.content.to_s
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/metanorma-iho.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
28
28
|
|
29
29
|
spec.add_dependency "htmlentities", "~> 4.3.4"
|
30
|
-
spec.add_dependency "metanorma-generic", "~> 2.
|
30
|
+
spec.add_dependency "metanorma-generic", "~> 2.1.0"
|
31
31
|
|
32
32
|
spec.add_development_dependency "debug"
|
33
33
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-iho
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.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: 2022-
|
11
|
+
date: 2022-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: htmlentities
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
33
|
+
version: 2.1.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
40
|
+
version: 2.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: debug
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -239,6 +239,10 @@ files:
|
|
239
239
|
- lib/metanorma/iho/processor.rb
|
240
240
|
- lib/metanorma/iho/reqt.rng
|
241
241
|
- lib/metanorma/iho/version.rb
|
242
|
+
- lib/relaton/render/config.yml
|
243
|
+
- lib/relaton/render/fields.rb
|
244
|
+
- lib/relaton/render/general.rb
|
245
|
+
- lib/relaton/render/parse.rb
|
242
246
|
- metanorma-iho.gemspec
|
243
247
|
- metanorma.yml
|
244
248
|
homepage: https://github.com/metanorma/metanorma-iho
|