metanorma-iec 2.4.2 → 2.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10177bc4adcd772657e975fa25b6291c9bc160c5305f6de3771dca5165376958
4
- data.tar.gz: 3e8e6457114391eab0741c6835962f8971a1d7c4895538c815372e6dc38aef80
3
+ metadata.gz: 983a0ecfbb9268e7428c55b36574bc046a2fc4ce749aa93dce9ecef035ae4e5a
4
+ data.tar.gz: 64ec2813deda8032f200ca67b359e287bd7db20000efde215b3add5fb1f2c498
5
5
  SHA512:
6
- metadata.gz: 5a7d53c37f35af53686200f67f136562922c1ddecd44526782e25ba244939c5860956aceda69a2c4458d80d58e5a5aeb4e6d548d4a5cb3846f18b04665a81997
7
- data.tar.gz: e6bd168b98945bae77c74f348cacfb4ee20f81860cff0c6f8b3e4a6608a3e2372a726fc303069add01c99414da251d3ac527ee5b2ee8a7acc842c7be0073016a
6
+ metadata.gz: ed8a99a03048f7ec0da59e21bfd1be59b06e0d21c03f95d38ca27f88330d6e01b9199f62f8f978ffc2af820cafd7e6345510ad6a126cf0285e523acd77336928
7
+ data.tar.gz: 3d08b38772898074098c9b0af578a875ce435dce0c490d37f4361326fbacb35ef9901188c8e4461148a8ce81c381056a673324e3c4cd5b362b07ff21287325c6
@@ -2116,6 +2116,8 @@
2116
2116
  <xsl:param name="svg_images"/> <!-- svg images array -->
2117
2117
  <xsl:variable name="images" select="document($svg_images)"/>
2118
2118
  <xsl:param name="basepath"/> <!-- base path for images -->
2119
+ <xsl:param name="inputxml_basepath"/> <!-- input xml file path -->
2120
+ <xsl:param name="inputxml_filename"/> <!-- input xml file name -->
2119
2121
  <xsl:param name="external_index"/><!-- path to index xml, generated on 1st pass, based on FOP Intermediate Format -->
2120
2122
  <xsl:param name="syntax-highlight">false</xsl:param> <!-- syntax highlighting feature, default - off -->
2121
2123
  <xsl:param name="add_math_as_text">true</xsl:param> <!-- add math in text behind svg formula, to copy-paste formula from PDF as text -->
@@ -2168,6 +2170,20 @@
2168
2170
  <xsl:call-template name="getLang"/>
2169
2171
  </xsl:variable>
2170
2172
 
2173
+ <xsl:variable name="inputxml_filename_prefix">
2174
+ <xsl:choose>
2175
+ <xsl:when test="contains($inputxml_filename, '.presentation.xml')">
2176
+ <xsl:value-of select="substring-before($inputxml_filename, '.presentation.xml')"/>
2177
+ </xsl:when>
2178
+ <xsl:when test="contains($inputxml_filename, '.xml')">
2179
+ <xsl:value-of select="substring-before($inputxml_filename, '.xml')"/>
2180
+ </xsl:when>
2181
+ <xsl:otherwise>
2182
+ <xsl:value-of select="$inputxml_filename"/>
2183
+ </xsl:otherwise>
2184
+ </xsl:choose>
2185
+ </xsl:variable>
2186
+
2171
2187
  <!-- Note 1: Each xslt has declated variable `namespace` that allows to set some properties, processing logic, etc. for concrete xslt.
2172
2188
  You can put such conditions by using xslt construction `xsl:if test="..."` or <xsl:choose><xsl:when test=""></xsl:when><xsl:otherwiste></xsl:otherwiste></xsl:choose>,
2173
2189
  BUT DON'T put any another conditions together with $namespace = '...' (such conditions will be ignored). For another conditions, please use nested xsl:if or xsl:choose -->
@@ -3129,6 +3145,10 @@
3129
3145
 
3130
3146
  </xsl:attribute-set>
3131
3147
 
3148
+ <xsl:template name="refine_figure-block-style">
3149
+
3150
+ </xsl:template>
3151
+
3132
3152
  <xsl:attribute-set name="figure-style">
3133
3153
 
3134
3154
  </xsl:attribute-set>
@@ -4074,7 +4094,7 @@
4074
4094
  <xsl:variable name="cols-count" select="count(xalan:nodeset($simple-table)/*/tr[1]/td)"/>
4075
4095
 
4076
4096
  <xsl:variable name="colwidths">
4077
- <xsl:if test="not(*[local-name()='colgroup']/*[local-name()='col'])">
4097
+ <xsl:if test="not(*[local-name()='colgroup']/*[local-name()='col']) and not(@class = 'dl')">
4078
4098
  <xsl:call-template name="calculate-column-widths">
4079
4099
  <xsl:with-param name="cols-count" select="$cols-count"/>
4080
4100
  <xsl:with-param name="table" select="$simple-table"/>
@@ -4186,6 +4206,11 @@
4186
4206
  <fo:table-column column-width="{@width}"/>
4187
4207
  </xsl:for-each>
4188
4208
  </xsl:when>
4209
+ <xsl:when test="@class = 'dl'">
4210
+ <xsl:for-each select=".//*[local-name()='tr'][1]/*">
4211
+ <fo:table-column column-width="{@width}"/>
4212
+ </xsl:for-each>
4213
+ </xsl:when>
4189
4214
  <xsl:otherwise>
4190
4215
  <xsl:call-template name="insertTableColumnWidth">
4191
4216
  <xsl:with-param name="colwidths" select="$colwidths"/>
@@ -5534,6 +5559,7 @@
5534
5559
  <!-- ===================== -->
5535
5560
  <!-- Definition List -->
5536
5561
  <!-- ===================== -->
5562
+
5537
5563
  <xsl:template match="*[local-name()='dl']">
5538
5564
  <xsl:variable name="isAdded" select="@added"/>
5539
5565
  <xsl:variable name="isDeleted" select="@deleted"/>
@@ -5753,10 +5779,21 @@
5753
5779
  </xsl:variable>
5754
5780
 
5755
5781
  <xsl:variable name="colwidths">
5756
- <xsl:call-template name="calculate-column-widths">
5757
- <xsl:with-param name="cols-count" select="2"/>
5758
- <xsl:with-param name="table" select="$simple-table"/>
5759
- </xsl:call-template>
5782
+ <xsl:choose>
5783
+ <!-- dl from table[@class='dl'] -->
5784
+ <xsl:when test="*[local-name() = 'colgroup']">
5785
+ <autolayout/>
5786
+ <xsl:for-each select="*[local-name() = 'colgroup']/*[local-name() = 'col']">
5787
+ <column><xsl:value-of select="translate(@width,'%m','')"/></column>
5788
+ </xsl:for-each>
5789
+ </xsl:when>
5790
+ <xsl:otherwise>
5791
+ <xsl:call-template name="calculate-column-widths">
5792
+ <xsl:with-param name="cols-count" select="2"/>
5793
+ <xsl:with-param name="table" select="$simple-table"/>
5794
+ </xsl:call-template>
5795
+ </xsl:otherwise>
5796
+ </xsl:choose>
5760
5797
  </xsl:variable>
5761
5798
 
5762
5799
  <!-- <xsl:text disable-output-escaping="yes">&lt;!- -</xsl:text>
@@ -6489,7 +6526,8 @@
6489
6526
  </xsl:template>
6490
6527
 
6491
6528
  <xsl:template match="text()[ancestor::*[local-name()='smallcap']]">
6492
- <xsl:variable name="text" select="normalize-space(.)"/>
6529
+ <!-- <xsl:variable name="text" select="normalize-space(.)"/> --> <!-- https://github.com/metanorma/metanorma-iso/issues/1115 -->
6530
+ <xsl:variable name="text" select="."/>
6493
6531
  <fo:inline font-size="75%" role="SKIP">
6494
6532
  <xsl:if test="string-length($text) &gt; 0">
6495
6533
  <xsl:variable name="smallCapsText">
@@ -7928,6 +7966,12 @@
7928
7966
  <xsl:when test="@updatetype = 'true'">
7929
7967
  <xsl:value-of select="concat(normalize-space(@target), '.pdf')"/>
7930
7968
  </xsl:when>
7969
+ <xsl:when test="contains(@target, concat('_', $inputxml_filename_prefix, '_attachments'))">
7970
+ <!-- link to the PDF attachment -->
7971
+ <xsl:variable name="target_" select="translate(@target, '\', '/')"/>
7972
+ <xsl:variable name="target__" select="substring-after($target_, concat('_', $inputxml_filename_prefix, '_attachments', '/'))"/>
7973
+ <xsl:value-of select="concat('url(embedded-file:', $target__, ')')"/>
7974
+ </xsl:when>
7931
7975
  <xsl:otherwise>
7932
7976
  <xsl:value-of select="normalize-space(@target)"/>
7933
7977
  </xsl:otherwise>
@@ -8335,6 +8379,7 @@
8335
8379
  <xsl:variable name="isAdded" select="@added"/>
8336
8380
  <xsl:variable name="isDeleted" select="@deleted"/>
8337
8381
  <fo:block-container id="{@id}" xsl:use-attribute-sets="figure-block-style">
8382
+ <xsl:call-template name="refine_figure-block-style"/>
8338
8383
 
8339
8384
  <xsl:call-template name="setTrackChangesStyles">
8340
8385
  <xsl:with-param name="isAdded" select="$isAdded"/>
@@ -8692,16 +8737,44 @@
8692
8737
  </xsl:choose>
8693
8738
 
8694
8739
  <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
8695
- <xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
8696
- <xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
8740
+ <xsl:variable name="svg_width_" select="xalan:nodeset($svg_content)/*/@width"/>
8741
+ <xsl:variable name="svg_width" select="number(translate($svg_width_, 'px', ''))"/>
8742
+ <xsl:variable name="svg_height_" select="xalan:nodeset($svg_content)/*/@height"/>
8743
+ <xsl:variable name="svg_height" select="number(translate($svg_height_, 'px', ''))"/>
8744
+
8745
+ <!-- Example: -->
8697
8746
  <!-- effective height 297 - 27.4 - 13 = 256.6 -->
8698
8747
  <!-- effective width 210 - 12.5 - 25 = 172.5 -->
8699
8748
  <!-- effective height / width = 1.48, 1.4 - with title -->
8700
- <xsl:if test="$svg_height &gt; ($svg_width * 1.4)"> <!-- for images with big height -->
8749
+
8750
+ <xsl:variable name="scale_x">
8751
+ <xsl:choose>
8752
+ <xsl:when test="$svg_width &gt; $width_effective_px">
8753
+ <xsl:value-of select="$width_effective_px div $svg_width"/>
8754
+ </xsl:when>
8755
+ <xsl:otherwise>1</xsl:otherwise>
8756
+ </xsl:choose>
8757
+ </xsl:variable>
8758
+ <xsl:variable name="scale_y">
8759
+ <xsl:choose>
8760
+ <xsl:when test="$svg_height * $scale_x &gt; $height_effective_px">
8761
+ <xsl:value-of select="$height_effective_px div ($svg_height * $scale_x)"/>
8762
+ </xsl:when>
8763
+ <xsl:otherwise>1</xsl:otherwise>
8764
+ </xsl:choose>
8765
+ </xsl:variable>
8766
+
8767
+ <!-- for images with big height -->
8768
+ <!-- <xsl:if test="$svg_height &gt; ($svg_width * 1.4)">
8701
8769
  <xsl:variable name="width" select="(($svg_width * 1.4) div $svg_height) * 100"/>
8702
8770
  <xsl:attribute name="width"><xsl:value-of select="$width"/>%</xsl:attribute>
8703
- </xsl:if>
8771
+ </xsl:if> -->
8704
8772
  <xsl:attribute name="scaling">uniform</xsl:attribute>
8773
+
8774
+ <xsl:if test="$scale_y != 1">
8775
+ <xsl:attribute name="content-height"><xsl:value-of select="round($scale_x * $scale_y * 100)"/>%</xsl:attribute>
8776
+ </xsl:if>
8777
+
8705
8778
  <xsl:copy-of select="$svg_content"/>
8706
8779
  </fo:instream-foreign-object>
8707
8780
  <!-- </fo:block> -->
@@ -8739,8 +8812,12 @@
8739
8812
  <xsl:variable name="width" select="normalize-space($viewbox//item[3])"/>
8740
8813
  <xsl:variable name="height" select="normalize-space($viewbox//item[4])"/>
8741
8814
 
8815
+ <xsl:variable name="parent_image_width" select="normalize-space(ancestor::*[1][local-name() = 'image']/@width)"/>
8816
+ <xsl:variable name="parent_image_height" select="normalize-space(ancestor::*[1][local-name() = 'image']/@height)"/>
8817
+
8742
8818
  <xsl:attribute name="width">
8743
8819
  <xsl:choose>
8820
+ <xsl:when test="$parent_image_width != '' and $parent_image_width != 'auto'"><xsl:value-of select="$parent_image_width"/></xsl:when>
8744
8821
  <xsl:when test="$width != ''">
8745
8822
  <xsl:value-of select="round($width)"/>
8746
8823
  </xsl:when>
@@ -8749,6 +8826,7 @@
8749
8826
  </xsl:attribute>
8750
8827
  <xsl:attribute name="height">
8751
8828
  <xsl:choose>
8829
+ <xsl:when test="$parent_image_height != '' and $parent_image_height != 'auto'"><xsl:value-of select="$parent_image_height"/></xsl:when>
8752
8830
  <xsl:when test="$height != ''">
8753
8831
  <xsl:value-of select="round($height)"/>
8754
8832
  </xsl:when>
@@ -8760,6 +8838,28 @@
8760
8838
  </xsl:copy>
8761
8839
  </xsl:template>
8762
8840
 
8841
+ <xsl:template match="*[local-name() = 'svg']/@width" mode="svg_update">
8842
+ <!-- image[@width]/svg -->
8843
+ <xsl:variable name="parent_image_width" select="normalize-space(ancestor::*[2][local-name() = 'image']/@width)"/>
8844
+ <xsl:attribute name="width">
8845
+ <xsl:choose>
8846
+ <xsl:when test="$parent_image_width != '' and $parent_image_width != 'auto'"><xsl:value-of select="$parent_image_width"/></xsl:when>
8847
+ <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
8848
+ </xsl:choose>
8849
+ </xsl:attribute>
8850
+ </xsl:template>
8851
+
8852
+ <xsl:template match="*[local-name() = 'svg']/@height" mode="svg_update">
8853
+ <!-- image[@height]/svg -->
8854
+ <xsl:variable name="parent_image_height" select="normalize-space(ancestor::*[2][local-name() = 'image']/@height)"/>
8855
+ <xsl:attribute name="height">
8856
+ <xsl:choose>
8857
+ <xsl:when test="$parent_image_height != '' and $parent_image_height != 'auto'"><xsl:value-of select="$parent_image_height"/></xsl:when>
8858
+ <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
8859
+ </xsl:choose>
8860
+ </xsl:attribute>
8861
+ </xsl:template>
8862
+
8763
8863
  <!-- regex for 'display: inline-block;' -->
8764
8864
  <xsl:variable name="regex_svg_style_notsupported">display(\s|\h)*:(\s|\h)*inline-block(\s|\h)*;</xsl:variable>
8765
8865
  <xsl:template match="*[local-name() = 'svg']//*[local-name() = 'style']/text()" mode="svg_update">
@@ -10846,7 +10946,9 @@
10846
10946
  </xsl:template> <!-- sections_element_style -->
10847
10947
 
10848
10948
  <xsl:template match="//*[contains(local-name(), '-standard')]/*[local-name() = 'preface']/*" priority="2"> <!-- /*/*[local-name() = 'preface']/* -->
10849
- <fo:block break-after="page"/>
10949
+
10950
+ <fo:block break-after="page"/>
10951
+
10850
10952
  <fo:block>
10851
10953
  <xsl:call-template name="setId"/>
10852
10954
  <xsl:apply-templates/>
@@ -10913,7 +11015,7 @@
10913
11015
  <xsl:when test="ancestor::*[contains(local-name(), '-standard')] and not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
10914
11016
  <fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
10915
11017
  </xsl:when>
10916
- <xsl:when test="not(//*[@id = $id_from]) and not(preceding-sibling::*[@id = $id_from])">
11018
+ <xsl:when test="not(/*[@id = $id_from]) and not(/*//*[@id = $id_from]) and not(preceding-sibling::*[@id = $id_from])">
10917
11019
  <fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
10918
11020
  </xsl:when>
10919
11021
  </xsl:choose>
@@ -12719,10 +12821,10 @@
12719
12821
 
12720
12822
  <xsl:template name="addPDFUAmeta">
12721
12823
  <pdf:catalog xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">
12722
- <pdf:dictionary type="normal" key="ViewerPreferences">
12723
- <pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
12724
- </pdf:dictionary>
12725
- </pdf:catalog>
12824
+ <pdf:dictionary type="normal" key="ViewerPreferences">
12825
+ <pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
12826
+ </pdf:dictionary>
12827
+ </pdf:catalog>
12726
12828
  <x:xmpmeta xmlns:x="adobe:ns:meta/">
12727
12829
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
12728
12830
  <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" rdf:about="">
@@ -12774,6 +12876,19 @@
12774
12876
  </rdf:Description>
12775
12877
  </rdf:RDF>
12776
12878
  </x:xmpmeta>
12879
+ <!-- add attachments -->
12880
+ <xsl:for-each select="//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'attachment']">
12881
+ <xsl:choose>
12882
+ <xsl:when test="normalize-space() != ''">
12883
+ <pdf:embedded-file xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf" src="{.}" filename="{@name}"/>
12884
+ </xsl:when>
12885
+ <xsl:otherwise>
12886
+ <!-- _{filename}_attachments -->
12887
+ <xsl:variable name="url" select="concat('url(file:///',$inputxml_basepath, '_', $inputxml_filename_prefix, '_attachments', '/', @name, ')')"/>
12888
+ <pdf:embedded-file xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf" src="{$url}" filename="{@name}"/>
12889
+ </xsl:otherwise>
12890
+ </xsl:choose>
12891
+ </xsl:for-each>
12777
12892
  </xsl:template> <!-- addPDFUAmeta -->
12778
12893
 
12779
12894
  <xsl:template name="getId">
@@ -21,6 +21,11 @@ module IsoDoc
21
21
  i18nyaml: i18nyaml || @i18nyaml)
22
22
  end
23
23
 
24
+ def bibrenderer
25
+ ::Relaton::Render::Iec::General.new(options.merge(language: @lang,
26
+ i18nhash: @i18n.get))
27
+ end
28
+
24
29
  def convert1(docxml, filename, dir)
25
30
  id = docxml&.at(ns("//bibdata/docnumber"))&.text
26
31
  @is_iev = id == "60050"
@@ -50,11 +50,6 @@ module IsoDoc
50
50
  end
51
51
  end
52
52
 
53
- def bibrenderer
54
- ::Relaton::Render::Iec::General.new(language: @lang,
55
- i18nhash: @i18n.get)
56
- end
57
-
58
53
  def rearrange_clauses(docxml)
59
54
  insert_foreword(docxml) # feeds preface_rearrange
60
55
  super
@@ -338,29 +338,32 @@
338
338
  </define>
339
339
  <define name="organization">
340
340
  <element name="organization">
341
- <oneOrMore>
342
- <ref name="orgname"/>
343
- </oneOrMore>
344
- <zeroOrMore>
345
- <ref name="subdivision"/>
346
- </zeroOrMore>
347
- <optional>
348
- <ref name="abbreviation"/>
349
- </optional>
350
- <zeroOrMore>
351
- <ref name="uri"/>
352
- </zeroOrMore>
353
- <zeroOrMore>
354
- <ref name="org-identifier"/>
355
- </zeroOrMore>
356
- <zeroOrMore>
357
- <ref name="contact"/>
358
- </zeroOrMore>
359
- <optional>
360
- <ref name="logo"/>
361
- </optional>
341
+ <ref name="OrganizationType"/>
362
342
  </element>
363
343
  </define>
344
+ <define name="OrganizationType">
345
+ <oneOrMore>
346
+ <ref name="orgname"/>
347
+ </oneOrMore>
348
+ <zeroOrMore>
349
+ <ref name="subdivision"/>
350
+ </zeroOrMore>
351
+ <optional>
352
+ <ref name="abbreviation"/>
353
+ </optional>
354
+ <zeroOrMore>
355
+ <ref name="uri"/>
356
+ </zeroOrMore>
357
+ <zeroOrMore>
358
+ <ref name="org-identifier"/>
359
+ </zeroOrMore>
360
+ <zeroOrMore>
361
+ <ref name="contact"/>
362
+ </zeroOrMore>
363
+ <optional>
364
+ <ref name="logo"/>
365
+ </optional>
366
+ </define>
364
367
  <define name="orgname">
365
368
  <element name="name">
366
369
  <choice>
@@ -371,10 +374,10 @@
371
374
  </define>
372
375
  <define name="subdivision">
373
376
  <element name="subdivision">
374
- <choice>
375
- <ref name="LocalizedString"/>
376
- <ref name="NameWithVariants"/>
377
- </choice>
377
+ <optional>
378
+ <attribute name="type"/>
379
+ </optional>
380
+ <ref name="OrganizationType"/>
378
381
  </element>
379
382
  </define>
380
383
  <define name="logo">
@@ -1,6 +1,6 @@
1
1
  module Metanorma
2
2
  module Iec
3
- VERSION = "2.4.2".freeze
3
+ VERSION = "2.4.4".freeze
4
4
  end
5
5
  end
6
6
 
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.test_files = `git ls-files -- {spec}/*`.split("\n")
31
31
  spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
32
32
 
33
- spec.add_dependency "metanorma-iso", "~> 2.7.2"
33
+ spec.add_dependency "metanorma-iso", "~> 2.7.3"
34
34
  spec.add_dependency "pubid-iec"
35
35
  spec.add_dependency "ruby-jing"
36
36
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-iec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-19 00:00:00.000000000 Z
11
+ date: 2024-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-iso
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.7.2
19
+ version: 2.7.3
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: 2.7.2
26
+ version: 2.7.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pubid-iec
29
29
  requirement: !ruby/object:Gem::Requirement