metanorma-bipm 2.7.7 → 2.7.8

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.
@@ -800,18 +800,16 @@
800
800
  <xsl:otherwise>fo:block</xsl:otherwise>
801
801
  </xsl:choose>
802
802
  </xsl:variable>
803
- <xsl:element name="{$element-name}">
804
803
 
805
- <xsl:call-template name="setBlockAttributes">
806
- <xsl:with-param name="text_align_default">justify</xsl:with-param>
807
- </xsl:call-template>
804
+ <xsl:variable name="p_styles">
805
+ <styles xsl:use-attribute-sets="p-style">
806
+ <xsl:call-template name="refine_p-style"><xsl:with-param name="element-name" select="$element-name"/></xsl:call-template>
807
+ </styles>
808
+ </xsl:variable>
809
+
810
+ <xsl:element name="{$element-name}">
811
+ <xsl:copy-of select="xalan:nodeset($p_styles)/styles/@*"/>
808
812
 
809
- <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
810
- <xsl:if test="ancestor::*[@first or @slave]">
811
- <!-- JCGM two column layout -->
812
- <xsl:attribute name="widows">1</xsl:attribute>
813
- <xsl:attribute name="orphans">1</xsl:attribute>
814
- </xsl:if>
815
813
  <xsl:apply-templates>
816
814
  <xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
817
815
  </xsl:apply-templates>
@@ -1147,21 +1145,6 @@
1147
1145
 
1148
1146
  <xsl:template match="mn:fmt-title" name="title">
1149
1147
 
1150
- <xsl:variable name="level">
1151
- <xsl:call-template name="getLevel"/>
1152
- </xsl:variable>
1153
-
1154
- <xsl:variable name="font-size">
1155
- <xsl:choose>
1156
- <xsl:when test="ancestor::mn:preface">15pt</xsl:when>
1157
- <xsl:when test="parent::mn:annex">15pt</xsl:when>
1158
- <xsl:when test="../@inline-header = 'true' or @inline-header = 'true'">10.5pt</xsl:when>
1159
- <xsl:when test="$level = 2">11.5pt</xsl:when>
1160
- <xsl:when test="$level &gt;= 3">10.5pt</xsl:when>
1161
- <xsl:otherwise>13pt</xsl:otherwise><!-- level 1 -->
1162
- </xsl:choose>
1163
- </xsl:variable>
1164
-
1165
1148
  <xsl:variable name="element-name">
1166
1149
  <xsl:choose>
1167
1150
  <xsl:when test="../@inline-header = 'true' or @inline-header = 'true'">fo:inline</xsl:when>
@@ -1169,53 +1152,22 @@
1169
1152
  </xsl:choose>
1170
1153
  </xsl:variable>
1171
1154
 
1172
- <xsl:element name="{$element-name}">
1173
- <xsl:attribute name="font-size"><xsl:value-of select="$font-size"/></xsl:attribute>
1174
- <xsl:attribute name="font-weight">bold</xsl:attribute>
1175
- <xsl:attribute name="space-before"> <!-- margin-top -->
1176
- <xsl:choose>
1155
+ <xsl:variable name="title_styles">
1156
+ <styles xsl:use-attribute-sets="title-style"><xsl:call-template name="refine_title-style"><xsl:with-param name="element-name" select="$element-name"/></xsl:call-template></styles>
1157
+ </xsl:variable>
1177
1158
 
1178
- <xsl:when test="$level = 1 and parent::mn:annex">0pt</xsl:when>
1179
- <xsl:when test="$level = 1">36pt</xsl:when>
1180
- <xsl:when test="$level = 2">18pt</xsl:when>
1181
- <xsl:when test="$level &gt;= 3">3pt</xsl:when>
1182
- <xsl:when test="$level = ''">6pt</xsl:when><!-- 13.5pt -->
1183
- <xsl:otherwise>12pt</xsl:otherwise>
1184
- </xsl:choose>
1185
- </xsl:attribute>
1186
- <xsl:attribute name="space-after">
1187
- <xsl:choose>
1188
- <xsl:when test="ancestor::mn:preface">12pt</xsl:when>
1189
- <xsl:when test="parent::mn:annex">30pt</xsl:when>
1190
- <xsl:when test="following-sibling::*[1][self::mn:fmt-admitted]">0pt</xsl:when>
1191
- <!-- <xsl:otherwise>12pt</xsl:otherwise> -->
1192
- <xsl:otherwise>12pt</xsl:otherwise>
1193
- </xsl:choose>
1194
- </xsl:attribute>
1195
- <xsl:attribute name="keep-with-next">always</xsl:attribute>
1196
- <xsl:if test="$element-name = 'fo:inline'">
1197
- <xsl:attribute name="padding-right">
1198
- <xsl:choose>
1199
- <xsl:when test="$level = 3">6.5mm</xsl:when>
1200
- <xsl:otherwise>4mm</xsl:otherwise>
1201
- </xsl:choose>
1202
- </xsl:attribute>
1203
- </xsl:if>
1204
- <xsl:if test="parent::mn:annex">
1205
- <xsl:attribute name="text-align">center</xsl:attribute>
1206
- <xsl:attribute name="line-height">130%</xsl:attribute>
1207
- </xsl:if>
1208
- <xsl:attribute name="role">H<xsl:value-of select="$level"/></xsl:attribute>
1209
- <xsl:apply-templates/>
1210
- <xsl:apply-templates select="following-sibling::*[1][self::mn:variant-title][@type = 'sub']" mode="subtitle"/>
1211
- </xsl:element>
1159
+ <xsl:element name="{$element-name}">
1160
+ <xsl:copy-of select="xalan:nodeset($title_styles)/styles/@*"/>
1212
1161
 
1213
- <xsl:if test="$element-name = 'fo:inline' and not(following-sibling::mn:p)">
1214
- <fo:block> <!-- margin-bottom="12pt" -->
1215
- <xsl:value-of select="$linebreak"/>
1216
- </fo:block>
1217
- </xsl:if>
1162
+ <xsl:apply-templates/>
1163
+ <xsl:apply-templates select="following-sibling::*[1][self::mn:variant-title][@type = 'sub']" mode="subtitle"/>
1164
+ </xsl:element>
1218
1165
 
1166
+ <xsl:if test="$element-name = 'fo:inline' and not(following-sibling::mn:p)">
1167
+ <fo:block>
1168
+ <xsl:value-of select="$linebreak"/>
1169
+ </fo:block>
1170
+ </xsl:if>
1219
1171
  </xsl:template>
1220
1172
 
1221
1173
  <xsl:template match="mn:metanorma/mn:bibdata/mn:edition">
@@ -3950,6 +3902,10 @@
3950
3902
  </xsl:element>
3951
3903
  </xsl:template>
3952
3904
 
3905
+ <!-- show sourcecode's name 'before' or 'after' source code -->
3906
+ <xsl:variable name="sourcecode-name-position"><xsl:text>after</xsl:text>
3907
+ </xsl:variable>
3908
+
3953
3909
  <xsl:template match="mn:sourcecode" name="sourcecode">
3954
3910
 
3955
3911
  <xsl:variable name="sourcecode_attributes">
@@ -3973,7 +3929,12 @@
3973
3929
 
3974
3930
  <xsl:call-template name="refine_sourcecode-container-style"/>
3975
3931
 
3976
- <fo:block-container margin-left="0mm" role="SKIP">
3932
+ <fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
3933
+
3934
+ <!-- <xsl:if test="$namespace = 'rsd'"> -->
3935
+ <xsl:if test="$sourcecode-name-position = 'before'">
3936
+ <xsl:apply-templates select="mn:fmt-name"/> <!-- show sourcecode's name BEFORE content -->
3937
+ </xsl:if>
3977
3938
 
3978
3939
  <fo:block xsl:use-attribute-sets="sourcecode-style">
3979
3940
 
@@ -3995,7 +3956,16 @@
3995
3956
  </fo:block>
3996
3957
 
3997
3958
  <xsl:apply-templates select="mn:dl"/> <!-- Key table -->
3998
- <xsl:apply-templates select="mn:fmt-name"/> <!-- show sourcecode's name AFTER content -->
3959
+
3960
+ <!-- <xsl:choose>
3961
+ <xsl:when test="$namespace = 'rsd'"></xsl:when>
3962
+ <xsl:otherwise>
3963
+ <xsl:apply-templates select="mn:fmt-name" /> --><!-- show sourcecode's name AFTER content -->
3964
+ <!-- </xsl:otherwise>
3965
+ </xsl:choose> -->
3966
+ <xsl:if test="$sourcecode-name-position = 'after'">
3967
+ <xsl:apply-templates select="mn:fmt-name"/> <!-- show sourcecode's name AFTER content -->
3968
+ </xsl:if>
3999
3969
 
4000
3970
  </fo:block-container>
4001
3971
  </fo:block-container>
@@ -9867,6 +9837,10 @@
9867
9837
  <!-- image -->
9868
9838
  <!-- ====== -->
9869
9839
 
9840
+ <!-- show figure's name 'before' or 'after' image -->
9841
+ <xsl:variable name="figure-name-position"><xsl:text>after</xsl:text>
9842
+ </xsl:variable>
9843
+
9870
9844
  <xsl:template match="mn:figure" name="figure">
9871
9845
  <xsl:variable name="isAdded" select="@added"/>
9872
9846
  <xsl:variable name="isDeleted" select="@deleted"/>
@@ -9879,6 +9853,10 @@
9879
9853
  <xsl:with-param name="isDeleted" select="$isDeleted"/>
9880
9854
  </xsl:call-template>
9881
9855
 
9856
+ <xsl:if test="$figure-name-position = 'before'"> <!-- show figure's name BEFORE image -->
9857
+ <xsl:apply-templates select="mn:fmt-name"/>
9858
+ </xsl:if>
9859
+
9882
9860
  <!-- Example: Dimensions in millimeters -->
9883
9861
  <xsl:apply-templates select="mn:note[@type = 'units']"/>
9884
9862
 
@@ -9899,7 +9877,16 @@
9899
9877
  <xsl:if test="normalize-space($show_figure_key_in_block_container) = 'true'">
9900
9878
  <xsl:call-template name="showFigureKey"/>
9901
9879
  </xsl:if>
9902
- <xsl:apply-templates select="mn:fmt-name"/> <!-- show figure's name AFTER image -->
9880
+
9881
+ <!-- <xsl:choose>
9882
+ <xsl:when test="$namespace = 'bsi' or $namespace = 'pas' or $namespace = 'rsd'"></xsl:when>
9883
+ <xsl:otherwise>
9884
+ <xsl:apply-templates select="mn:fmt-name" /> --> <!-- show figure's name AFTER image -->
9885
+ <!-- </xsl:otherwise>
9886
+ </xsl:choose> -->
9887
+ <xsl:if test="$figure-name-position = 'after'">
9888
+ <xsl:apply-templates select="mn:fmt-name"/> <!-- show figure's name AFTER image -->
9889
+ </xsl:if>
9903
9890
 
9904
9891
  </fo:block-container>
9905
9892
  </xsl:template>
@@ -11992,7 +11979,6 @@
11992
11979
  </xsl:attribute-set>
11993
11980
 
11994
11981
  <xsl:template name="refine_references-non-normative-title-style">
11995
-
11996
11982
  </xsl:template>
11997
11983
 
11998
11984
  <!-- bibitem in Normative References (references/@normative="true") -->
@@ -14056,7 +14042,7 @@
14056
14042
  <!-- ===================================== -->
14057
14043
 
14058
14044
  <xsl:attribute-set name="annex-title-style">
14059
- </xsl:attribute-set>
14045
+ </xsl:attribute-set> <!-- annex-title-style -->
14060
14046
 
14061
14047
  <xsl:template name="refine_annex-title-style">
14062
14048
  </xsl:template>
@@ -14067,6 +14053,85 @@
14067
14053
  <xsl:template name="refine_p-zzSTDTitle1-style">
14068
14054
  </xsl:template>
14069
14055
 
14056
+ <xsl:attribute-set name="p-style">
14057
+ <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
14058
+ </xsl:attribute-set> <!-- p-style -->
14059
+
14060
+ <xsl:template name="refine_p-style">
14061
+ <xsl:param name="element-name"/>
14062
+ <xsl:param name="margin"/>
14063
+ <xsl:call-template name="setBlockAttributes">
14064
+ <xsl:with-param name="text_align_default">justify</xsl:with-param>
14065
+ </xsl:call-template>
14066
+
14067
+ <xsl:if test="ancestor::*[@first or @slave]">
14068
+ <!-- JCGM two column layout -->
14069
+ <xsl:attribute name="widows">1</xsl:attribute>
14070
+ <xsl:attribute name="orphans">1</xsl:attribute>
14071
+ </xsl:if>
14072
+ <!-- $namespace = 'jcgm' -->
14073
+
14074
+ </xsl:template> <!-- refine_p-style -->
14075
+
14076
+ <xsl:attribute-set name="title-style">
14077
+ <!-- Note: font-size for level 1 title -->
14078
+ <xsl:attribute name="font-size">13pt</xsl:attribute>
14079
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
14080
+ <xsl:attribute name="space-before">36pt</xsl:attribute>
14081
+ <xsl:attribute name="space-after">12pt</xsl:attribute>
14082
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
14083
+ </xsl:attribute-set> <!-- title-style -->
14084
+
14085
+ <xsl:template name="refine_title-style">
14086
+ <xsl:param name="element-name"/>
14087
+ <xsl:variable name="level">
14088
+ <xsl:call-template name="getLevel"/>
14089
+ </xsl:variable>
14090
+
14091
+ <xsl:if test="$level = 1">
14092
+ <xsl:if test="parent::mn:annex">
14093
+ <xsl:attribute name="space-before">0pt</xsl:attribute>
14094
+ </xsl:if>
14095
+ </xsl:if>
14096
+ <xsl:if test="$level = 2">
14097
+ <xsl:attribute name="font-size">11.5pt</xsl:attribute>
14098
+ <xsl:attribute name="space-before">18pt</xsl:attribute>
14099
+ </xsl:if>
14100
+ <xsl:if test="$level &gt;= 3">
14101
+ <xsl:attribute name="font-size">10.5pt</xsl:attribute>
14102
+ <xsl:attribute name="space-before">3pt</xsl:attribute>
14103
+ </xsl:if>
14104
+ <xsl:if test="../@inline-header = 'true' or @inline-header = 'true'">
14105
+ <xsl:attribute name="font-size">10.5pt</xsl:attribute>
14106
+ </xsl:if>
14107
+ <xsl:if test="following-sibling::*[1][self::mn:fmt-admitted]">
14108
+ <xsl:attribute name="space-after">0pt</xsl:attribute>
14109
+ </xsl:if>
14110
+ <xsl:if test="ancestor::mn:preface">
14111
+ <xsl:attribute name="font-size">15pt</xsl:attribute>
14112
+ <xsl:attribute name="space-after">12pt</xsl:attribute>
14113
+ </xsl:if>
14114
+ <xsl:if test="parent::mn:annex">
14115
+ <xsl:attribute name="font-size">15pt</xsl:attribute>
14116
+ <xsl:attribute name="space-after">30pt</xsl:attribute>
14117
+ </xsl:if>
14118
+ <xsl:if test="$element-name = 'fo:inline'">
14119
+ <xsl:attribute name="padding-right">
14120
+ <xsl:choose>
14121
+ <xsl:when test="$level = 3">6.5mm</xsl:when>
14122
+ <xsl:otherwise>4mm</xsl:otherwise>
14123
+ </xsl:choose>
14124
+ </xsl:attribute>
14125
+ </xsl:if>
14126
+ <xsl:if test="parent::mn:annex">
14127
+ <xsl:attribute name="text-align">center</xsl:attribute>
14128
+ <xsl:attribute name="line-height">130%</xsl:attribute>
14129
+ </xsl:if>
14130
+
14131
+ <!-- $namespace = 'jcgm' -->
14132
+ <xsl:attribute name="role">H<xsl:value-of select="$level"/></xsl:attribute>
14133
+ </xsl:template> <!-- refine_title-style -->
14134
+
14070
14135
  <xsl:template name="processPrefaceSectionsDefault">
14071
14136
  <xsl:for-each select="/*/mn:preface/*[not(self::mn:note or self::mn:admonition)]">
14072
14137
  <xsl:sort select="@displayorder" data-type="number"/>
@@ -14405,6 +14470,12 @@
14405
14470
  </xsl:choose>
14406
14471
  </xsl:template>
14407
14472
 
14473
+ <xsl:attribute-set name="reset-margins-style">
14474
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
14475
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
14476
+ <xsl:attribute name="role">SKIP</xsl:attribute>
14477
+ </xsl:attribute-set>
14478
+
14408
14479
  <xsl:attribute-set name="clause-style">
14409
14480
 
14410
14481
  </xsl:attribute-set>
@@ -15421,8 +15492,9 @@
15421
15492
 
15422
15493
  <xsl:template name="setTextAlignment">
15423
15494
  <xsl:param name="default">left</xsl:param>
15495
+ <xsl:param name="skip_default">false</xsl:param>
15424
15496
  <xsl:variable name="align" select="normalize-space(@align)"/>
15425
- <xsl:attribute name="text-align">
15497
+ <xsl:variable name="text_align">
15426
15498
  <xsl:choose>
15427
15499
  <xsl:when test="$lang = 'ar' and $align = 'left'">start</xsl:when>
15428
15500
  <xsl:when test="$lang = 'ar' and $align = 'right'">end</xsl:when>
@@ -15430,9 +15502,13 @@
15430
15502
  <xsl:when test="$align != '' and not($align = 'indent')"><xsl:value-of select="$align"/></xsl:when>
15431
15503
  <xsl:when test="ancestor::mn:td/@align"><xsl:value-of select="ancestor::mn:td/@align"/></xsl:when>
15432
15504
  <xsl:when test="ancestor::mn:th/@align"><xsl:value-of select="ancestor::mn:th/@align"/></xsl:when>
15505
+ <xsl:when test="$skip_default = 'true'"/>
15433
15506
  <xsl:otherwise><xsl:value-of select="$default"/></xsl:otherwise>
15434
15507
  </xsl:choose>
15435
- </xsl:attribute>
15508
+ </xsl:variable>
15509
+ <xsl:if test="normalize-space($text_align) != ''">
15510
+ <xsl:attribute name="text-align"><xsl:value-of select="$text_align"/></xsl:attribute>
15511
+ </xsl:if>
15436
15512
  <xsl:if test="$align = 'indent'">
15437
15513
  <xsl:attribute name="margin-left">7mm</xsl:attribute>
15438
15514
  </xsl:if>
@@ -15440,8 +15516,10 @@
15440
15516
 
15441
15517
  <xsl:template name="setBlockAttributes">
15442
15518
  <xsl:param name="text_align_default">left</xsl:param>
15519
+ <xsl:param name="skip_text_align_default">false</xsl:param>
15443
15520
  <xsl:call-template name="setTextAlignment">
15444
15521
  <xsl:with-param name="default" select="$text_align_default"/>
15522
+ <xsl:with-param name="skip_default" select="$skip_text_align_default"/>
15445
15523
  </xsl:call-template>
15446
15524
  <xsl:call-template name="setKeepAttributes"/>
15447
15525
  <xsl:if test="node()[1][self::mn:span][contains(@style, 'line-height')]">
@@ -82,13 +82,11 @@ module Metanorma
82
82
  committees.empty? and return
83
83
  xml.xpath("//bibdata/contributor[role/description = 'committee']/organization/subdivision[@type = 'Committee']/name").each do |c|
84
84
  committees.include? c.text or
85
- @log.add("Document Attributes", nil,
86
- "#{c.text} is not a recognised committee")
85
+ @log.add("BIPM_1", nil, params: [c.text])
87
86
  end
88
87
  xml.xpath("//bibdata/contributor[role/description = 'committee']/organization/subdivision[@type = 'Committee']/identifier[not(@type = 'full')]").each do |c|
89
88
  committees.include? c.text or
90
- @log.add("Document Attributes", nil,
91
- "#{c.text} is not a recognised committee")
89
+ @log.add("BIPM_1", nil, params: [c.text])
92
90
  end
93
91
  end
94
92
 
@@ -124,3 +122,5 @@ module Metanorma
124
122
  end
125
123
  end
126
124
  end
125
+
126
+ require_relative "log"
@@ -0,0 +1,17 @@
1
+ module Metanorma
2
+ module Bipm
3
+ class Converter
4
+ BIPM_LOG_MESSAGES = {
5
+ # rubocop:disable Naming/VariableNumber
6
+ "BIPM_1": { category: "Document Attributes",
7
+ error: "%s is not a recognised committee",
8
+ severity: 2 },
9
+ }.freeze
10
+ # rubocop:enable Naming/VariableNumber
11
+
12
+ def log_messages
13
+ super.merge(BIPM_LOG_MESSAGES)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Bipm
3
- VERSION = "2.7.7".freeze
3
+ VERSION = "2.7.8".freeze
4
4
  end
5
5
  end
@@ -0,0 +1,12 @@
1
+ module Relaton
2
+ module Render
3
+ class Citations
4
+ # TODO different behaviour for JCGM = ISO
5
+ def use_terminator?(ref, final, cit)
6
+ !ref || ref.empty? and return false
7
+ cit[:data][:home_standard] and return false
8
+ !ref.end_with?(final)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -14,34 +14,34 @@ extenttemplate:
14
14
  inbook: "{{ volume }}: {{ page }}"
15
15
  misc: "<strong>{{ volume }}</strong> ({{issue}}) {{ page }}, {{ duration }}"
16
16
  template:
17
- book: "{{ creatornames }} ({{role | capitalize}}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> ,_{{ edition | capitalize_first }}. [{{medium}}] ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}}) {{draft}} ({{ series }}) {{ uri }}. {{ labels['at'] | capitalize}}:_{{ access_location }}. [{{ labels['viewed'] }}:_{{date_accessed}}]. {{size}}. {{extent}}."
17
+ book: "{{ creatornames }} ({{role | capitalize}}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> ,_{{ edition | capitalize_first }}$$$ [{{medium}}] ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}}) {{draft}} ({{ series }}) {{ uri }}$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$ {{size}}$$$ {{extent}}$$$"
18
18
  # TODO: omitted: author ids, subsidiary titles, subsidiary creators, rights metadata, distributor, item attributes, relationships
19
19
  booklet: book
20
20
  manual: book
21
21
  proceedings: book
22
- inbook: "{{ creatornames }} ({{role | capitalize}}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} {{ title }} . {{ authoritative_identifier | join: '. ' }}. {{ labels['in'] | capitalize }}: {{ host_creatornames}} ({{ host_role | capitalize}}) <em>{{host_title}}</em> [{{medium}}] ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}}) {{draft}} ({{ series }}) . {{size}}. {{extent}}. {{ uri }}. {{ labels['at'] | capitalize}}:_{{ access_location }}. [{{ labels['viewed'] }}:_{{date_accessed}}]."
22
+ inbook: "{{ creatornames }} ({{role | capitalize}}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} {{ title }} $$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ labels['in'] | capitalize }}: {{ host_creatornames}} ({{ host_role | capitalize}}) <em>{{host_title}}</em> [{{medium}}] ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}}) {{draft}} ({{ series }}) $$$ {{size}}$$$ {{extent}}$$$ {{ uri }}$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
23
23
  inproceedings: inbook
24
24
  incollection: inbook
25
25
  # TODO: omitted: author ids, additional info for component part, subsidiary titles of host resource, rights metadata, distributor, relationships
26
- journal: "<em>{{ title}}</em> [{{medium}}] . ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}}). ({{date}}). {{size}}. {{extent}}. {{ authoritative_identifier | join: '. ' }}. {{ uri }}. {{ labels['at'] | capitalize}}:_{{ access_location }}. [{{ labels['viewed'] }}:_{{date_accessed}}]."
26
+ journal: "<em>{{ title}}</em> [{{medium}}] $$$ ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}})$$$ ({{date}})$$$ {{size}}$$$ {{extent}}$$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ uri }}$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
27
27
  # TODO subsidiary titles, rights metadata, item attributes, relationships
28
- article: "{{ creatornames }} ({{role | capitalize}}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} {{ title }}. <em>{{ series }}</em>. [{{medium}}] {{draft}} . {{size}}. {{ extent }}. {{ authoritative_identifier | join: '. ' }}. {{ uri }}. {{ labels['at'] | capitalize}}:_{{ access_location }}. [{{ labels['viewed'] }}:_{{date_accessed}}]."
28
+ article: "{{ creatornames }} ({{role | capitalize}}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} {{ title }}$$$ <em>{{ series }}</em>$$$ [{{medium}}] {{draft}} $$$ {{size}}$$$ {{ extent }}$$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ uri }}$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
29
29
  # TODO: omitted: author ids, subsidiary titles, rights metadata, distributor, item attributes, relationships; newspapers
30
- software: "{{ creatornames }} ({{ role | capitalize}}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> . {{ labels['version'] | capitalize }}_{{ edition_raw }} {{draft}} . [{{medium | capitalize}}]. ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}}). {{ authoritative_identifier | join: '. ' }}. {{ uri }}. {{size}}. {{ extent}}. [{{ labels['viewed'] }}:_{{date_accessed}}]. "
30
+ software: "{{ creatornames }} ({{ role | capitalize}}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }} {{draft}} $$$ [{{medium | capitalize}}]$$$ ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}})$$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ uri }}$$$ {{size}}$$$ {{ extent}}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$ "
31
31
  # TODO: omitted: author ids, subsidiary titles, subsidiary creators, copyright, license, distributor, system requirements, relationships
32
32
  electronic resource: software
33
- standard: "{% if home_standard %}<em>{{title}}</em>, _{{extent}}{%else%}{% if creatornames %}{{ creatornames }} ({{ role | capitalize}}){%else%}{{ publisher}}{%endif%} . ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> ({{nistpublisher}}), {{draft }} . [{{ medium | capitalize }}]. {{size}}. {{ extent }}. {{ authoritative_identifier | join: '. ' }}. {{ uri }}. {{ labels['at'] | capitalize}}:_{{ access_location }}. [{{ labels['viewed'] }}:_{{date_accessed}}].{%endif%}"
33
+ standard: "{% if home_standard %}<em>{{title}}</em>, _{{extent}}{%else%}{% if creatornames %}{{ creatornames }} ({{ role | capitalize}}){%else%}{{ publisher}}{%endif%} $$$ ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> ({{nistpublisher}}), {{draft }} $$$ [{{ medium | capitalize }}]$$$ {{size}}$$$ {{ extent }}$$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ uri }}$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$${%endif%}"
34
34
  # TODO: omitted: author ids, subsidiary titles, rights metadata, distributor, persistent identifier, item attributes, relationships
35
- techreport: "{% if creatornames %}{{ creatornames }} ({{ role | capitalize}}){%else%}{{ publisher}}{%endif%} . ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> ({{nistpublisher}}), {{draft }} . [{{ medium | capitalize }}]. {{size}}. {{ extent }}. {{ authoritative_identifier | join: '. ' }}. {{ uri }}. {{ labels['at'] | capitalize}}:_{{ access_location }}. [{{ labels['viewed'] }}:_{{date_accessed}}]."
36
- dataset: "{{ creatornames }} ({{ role | capitalize }}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> . {{ labels['version'] | capitalize }}_{{ edition_raw }} [{{medium }}]. {{ labels['in'] | capitalize }}:_{{series}}. {{ authoritative_identifier | join: '. ' }}. {{ uri }}. {{ size }}. {{ extent}}. [{{ labels['viewed'] }}:_{{date_accessed}}]. "
35
+ techreport: "{% if creatornames %}{{ creatornames }} ({{ role | capitalize}}){%else%}{{ publisher}}{%endif%} $$$ ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> ({{nistpublisher}}), {{draft }} $$$ [{{ medium | capitalize }}]$$$ {{size}}$$$ {{ extent }}$$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ uri }}$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
36
+ dataset: "{{ creatornames }} ({{ role | capitalize }}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }} [{{medium }}]$$$ {{ labels['in'] | capitalize }}:_{{series}}$$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ uri }}$$$ {{ size }}$$$ {{ extent}}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$ "
37
37
  # TODO: omitted: author ids, system requirements, host archive, copyright, license, data source, distributor, usage instructions, relationships, provenance
38
- website: "{{ creatornames }} ({{ role | capitalize }}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> . {{ labels['version'] | capitalize }}_{{ edition_raw }} [{{medium }}] ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}}) {{ draft }} . {{ authoritative_identifier | join: '. ' }}. {{ uri }}. [{{ labels['viewed'] }}:_{{date_accessed}}]. "
38
+ website: "{{ creatornames }} ({{ role | capitalize }}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> $$$ {{ labels['version'] | capitalize }}_{{ edition_raw }} [{{medium }}] ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}}) {{ draft }} $$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ uri }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$ "
39
39
  # TODO: omitted: author ids, page title, system requirements, subsidiary creator, rights metadata, distributor, persistent identifier, archive location, archive date and time, relationships
40
40
  webresource: website
41
41
  # TODO: component part
42
- unpublished: "{{ creatornames }} ({{ role | capitalize }}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> [{{ medium }}] {{ draft }} . {{ labels['at'] | capitalize}}:_{{ access_location }}. {{ authoritative_identifier | join: '. ' }}. {{ uri }}. [{{ labels['viewed'] }}:_{{date_accessed}}]."
42
+ unpublished: "{{ creatornames }} ({{ role | capitalize }}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> [{{ medium }}] {{ draft }} $$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ uri }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
43
43
  misc: unpublished
44
44
  # TODO: omitted: author ids, subsidiary titles, subsidiary creators, host archive, item attributes, relationships
45
45
  presentation: unpublished
46
- thesis: "{{ creatornames }} ({{ role | capitalize }}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> [{{ medium }}] ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}}). {{ labels['at'] | capitalize}}:_{{ access_location }}. {{ authoritative_identifier | join: '. ' }}. {{ uri }}. [{{ labels['viewed'] }}:_{{date_accessed}}]."
46
+ thesis: "{{ creatornames }} ({{ role | capitalize }}) ({{date}} ({{ labels['updated'] }}_{{date_updated}}) {% if date %}){% endif %} <em>{{ title }}</em> [{{ medium }}] ({% if place %}{{place}}{%else%}{{ labels['no_place']}}{%endif%}:_{{publisher}})$$$ {{ labels['at'] | capitalize}}:_{{ access_location }}$$$ {{ authoritative_identifier | join: '$$$ ' }}$$$ {{ uri }}$$$ [{{ labels['viewed'] }}:_{{date_accessed}}]$$$"
47
47
 
@@ -1,5 +1,6 @@
1
1
  require "relaton-render"
2
2
  require_relative "parse"
3
+ require_relative "citations"
3
4
 
4
5
  module Relaton
5
6
  module Render
@@ -27,13 +27,14 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ["lib"]
28
28
  spec.required_ruby_version = Gem::Requirement.new(">= 3.1.0")
29
29
 
30
- spec.add_dependency "metanorma-generic", "~> 3.1.0"
31
- spec.add_dependency "metanorma-iso", "~> 3.1.0"
30
+ spec.add_dependency "metanorma-generic", "~> 3.2.0"
31
+ spec.add_dependency "metanorma-iso", "~> 3.2.0"
32
32
 
33
33
  spec.add_development_dependency "debug"
34
34
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
35
35
  spec.add_development_dependency "guard", "~> 2.14"
36
36
  spec.add_development_dependency "guard-rspec", "~> 4.7"
37
+ spec.add_development_dependency "openssl"
37
38
  spec.add_development_dependency "rake", "~> 13.0"
38
39
  spec.add_development_dependency "rspec", "~> 3.6"
39
40
  spec.add_development_dependency "rubocop", "~> 1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-bipm
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.7
4
+ version: 2.7.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-10-13 00:00:00.000000000 Z
11
+ date: 2025-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-generic
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.1.0
19
+ version: 3.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.1.0
26
+ version: 3.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: metanorma-iso
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 3.1.0
33
+ version: 3.2.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: 3.1.0
40
+ version: 3.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: debug
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '4.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: openssl
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rake
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -288,10 +302,12 @@ files:
288
302
  - lib/metanorma/bipm/converter.rb
289
303
  - lib/metanorma/bipm/front.rb
290
304
  - lib/metanorma/bipm/isodoc.rng
305
+ - lib/metanorma/bipm/log.rb
291
306
  - lib/metanorma/bipm/processor.rb
292
307
  - lib/metanorma/bipm/relaton-bipm.rng
293
308
  - lib/metanorma/bipm/reqt.rng
294
309
  - lib/metanorma/bipm/version.rb
310
+ - lib/relaton/render/citations.rb
295
311
  - lib/relaton/render/config.yml
296
312
  - lib/relaton/render/general.rb
297
313
  - lib/relaton/render/parse.rb