Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions grammars/basicdoc.rng
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,9 @@
<data type="ID"/>
</attribute>
<attribute name="reviewer"/>
<optional>
<attribute name="type"/>
</optional>
<optional>
<attribute name="date">
<data type="dateTime"/>
Expand Down
124 changes: 71 additions & 53 deletions grammars/biblio.rng
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
<text/>
</element>
</define>
<define name="LocalizedString1">
<define name="LocalizedStringAttrs">
<optional>
<!-- multiple languages and scripts possible: comma delimit them if so -->
<attribute name="language"/>
Expand All @@ -106,6 +106,10 @@
<optional>
<attribute name="script"/>
</optional>
</define>
<define name="LocalizedString1">
<!-- multiple languages and scripts possible: comma delimit them if so -->
<ref name="LocalizedStringAttrs"/>
<text/>
</define>
<define name="LocalizedString">
Expand Down Expand Up @@ -142,16 +146,8 @@
<ref name="LocalizedStringOrXsAny"/>
</define>
<define name="LocalizedStringOrXsAny1">
<optional>
<!-- multiple languages and scripts possible: comma delimit them if so -->
<attribute name="language"/>
</optional>
<optional>
<attribute name="locale"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<!-- multiple languages and scripts possible: comma delimit them if so -->
<ref name="LocalizedStringAttrs"/>
<oneOrMore>
<choice>
<text/>
Expand Down Expand Up @@ -208,7 +204,10 @@
</define>
<define name="roledescription">
<element name="description">
<ref name="FormattedString"/>
<ref name="LocalizedStringAttrs"/>
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="person">
Expand Down Expand Up @@ -333,34 +332,40 @@
</define>
<define name="affiliationdescription">
<element name="description">
<ref name="FormattedString"/>
<ref name="LocalizedStringAttrs"/>
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="organization">
<element name="organization">
<oneOrMore>
<ref name="orgname"/>
</oneOrMore>
<zeroOrMore>
<ref name="subdivision"/>
</zeroOrMore>
<optional>
<ref name="abbreviation"/>
</optional>
<zeroOrMore>
<ref name="uri"/>
</zeroOrMore>
<zeroOrMore>
<ref name="org-identifier"/>
</zeroOrMore>
<zeroOrMore>
<ref name="contact"/>
</zeroOrMore>
<optional>
<ref name="logo"/>
</optional>
<ref name="OrganizationType"/>
</element>
</define>
<define name="OrganizationType">
<oneOrMore>
<ref name="orgname"/>
</oneOrMore>
<zeroOrMore>
<ref name="subdivision"/>
</zeroOrMore>
<optional>
<ref name="abbreviation"/>
</optional>
<zeroOrMore>
<ref name="uri"/>
</zeroOrMore>
<zeroOrMore>
<ref name="org-identifier"/>
</zeroOrMore>
<zeroOrMore>
<ref name="contact"/>
</zeroOrMore>
<optional>
<ref name="logo"/>
</optional>
</define>
<define name="orgname">
<element name="name">
<choice>
Expand All @@ -371,10 +376,10 @@
</define>
<define name="subdivision">
<element name="subdivision">
<choice>
<ref name="LocalizedString"/>
<ref name="NameWithVariants"/>
</choice>
<optional>
<attribute name="type"/>
</optional>
<ref name="OrganizationType"/>
</element>
</define>
<define name="logo">
Expand Down Expand Up @@ -894,7 +899,9 @@
</define>
<define name="formattedref">
<element name="formattedref">
<ref name="FormattedString"/>
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="license">
Expand Down Expand Up @@ -939,7 +946,10 @@
<optional>
<attribute name="type"/>
</optional>
<ref name="FormattedString"/>
<ref name="LocalizedStringAttrs"/>
<zeroOrMore>
<ref name="TextElement"/>
</zeroOrMore>
</define>
<!-- TitleType = ( "alternative" | "original" | "unofficial" | "subtitle" | "main" ) -->
<define name="TypedUri">
Expand Down Expand Up @@ -1030,16 +1040,10 @@
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="language"/>
</optional>
<optional>
<attribute name="locale"/>
</optional>
<optional>
<attribute name="script"/>
</optional>
<text/>
<ref name="LocalizedStringAttrs"/>
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="docnumber">
Expand Down Expand Up @@ -1264,12 +1268,23 @@
<optional>
<attribute name="type"/>
</optional>
<ref name="FormattedString"/>
<ref name="LocalizedStringAttrs"/>
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</define>
<define name="bibabstract">
<element name="abstract">
<ref name="FormattedString"/>
<ref name="LocalizedStringAttrs"/>
<choice>
<oneOrMore>
<ref name="BasicBlock"/>
</oneOrMore>
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</choice>
</element>
</define>
<define name="copyright">
Expand Down Expand Up @@ -1374,7 +1389,10 @@
</attribute>
<optional>
<element name="description">
<ref name="FormattedString"/>
<ref name="LocalizedStringAttrs"/>
<oneOrMore>
<ref name="TextElement"/>
</oneOrMore>
</element>
</optional>
<element name="bibitem">
Expand Down
2 changes: 1 addition & 1 deletion lib/relaton_etsi/bibliographic_item.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def to_xml(**opts) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metric
end
end

def to_hash # rubocop:disable Metrics/AbcSize
def to_h # rubocop:disable Metrics/AbcSize
hash = super
hash["marker"] = marker if marker
hash["frequency"] = frequency if frequency.any?
Expand Down
2 changes: 1 addition & 1 deletion lib/relaton_etsi/data_fetcher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def save(bib)
def content(bib)
case @format
when "xml" then bib.to_xml bibdata: true
when "yaml" then bib.to_hash.to_yaml
when "yaml" then bib.to_h.to_yaml
else bib.send "to_#{@format}"
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/relaton_etsi/data_parser.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def contributor
)
abbrev = RelatonBib::LocalizedString.new("ETSI", "en", "Latn")
entity = RelatonBib::Organization.new name: [name], abbreviation: abbrev
[RelatonBib::ContributionInfo.new(entity: entity, role: [{ type: "publisher" }])]
[RelatonBib::Contributor.new(entity: entity, role: [{ type: "publisher" }])]
end

def keyword
Expand Down
70 changes: 34 additions & 36 deletions lib/relaton_etsi/xml_parser.rb
Original file line number Diff line number Diff line change
@@ -1,44 +1,42 @@
module RelatonEtsi
class XMLParser < RelatonBib::XMLParser
class << self
private
module XMLParser
include RelatonBib::Parser::XML
extend self
# @param intem [Nokogiri::XML::Document]
# @return [Hash]
def item_data(item) # rubocop:disable Metrics/AbcSize
data = super
ext = item.at "./ext"
return data unless ext

# @param intem [Nokogiri::XML::Document]
# @return [Hash]
def item_data(item) # rubocop:disable Metrics/AbcSize
data = super
ext = item.at "./ext"
return data unless ext

data[:marker] = ext.at("./marker")&.text
data[:frequency] = ext.xpath("./frequency").map(&:text)
data[:mandate] = ext.xpath("./mandate").map(&:text)
data[:custom_collection] = ext.at("./custom-collection")&.text
data
end
data[:marker] = ext.at("./marker")&.text
data[:frequency] = ext.xpath("./frequency").map(&:text)
data[:mandate] = ext.xpath("./mandate").map(&:text)
data[:custom_collection] = ext.at("./custom-collection")&.text
data
end

# @param item_hash [Hash]
# @return [RelatonEtsi::BibliographicItem]
def bib_item(item_hash)
BibliographicItem.new(**item_hash)
end
# @param item_hash [Hash]
# @return [RelatonEtsi::BibliographicItem]
def bib_item(item_hash)
BibliographicItem.new(**item_hash)
end

# def fetch_status(item)
# status = item.at "./status"
# return unless status
# def fetch_status(item)
# status = item.at "./status"
# return unless status

# DocumentStatus.new(
# stage: status.at("stage")&.text,
# substage: status.at("substage")&.text,
# iteration: status.at("iteration")&.text,
# )
# end
# DocumentStatus.new(
# stage: status.at("stage")&.text,
# substage: status.at("substage")&.text,
# iteration: status.at("iteration")&.text,
# )
# end

# # @param item [Nokogiri::XML::Element]
# # @return [Array<RelatonBib::DocumentRelation>]
# def fetch_relations(item)
# super item, DocumentRelation
# end
end
# # @param item [Nokogiri::XML::Element]
# # @return [Array<RelatonBib::DocumentRelation>]
# def fetch_relations(item)
# super item, DocumentRelation
# end
end
end
6 changes: 3 additions & 3 deletions spec/fixtures/bibdata.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<bibdata schema-version="v1.2.8">
<title format="text/plain" language="en" script="Latn">Title</title>
<bibdata schema-version="v1.3.0">
<title language="en" script="Latn">Title</title>
<uri type="src">http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=62010</uri>
<docidentifier type="ETSI" primary="true">ETSI EN 319 532-4 V1.3.0 (2023-10)</docidentifier>
<docnumber>ETSI EN 319 532-4 V1.3.0 (2023-10)</docnumber>
Expand All @@ -11,7 +11,7 @@
</version>
<language>en</language>
<script>Latn</script>
<abstract format="text/plain" language="en" script="Latn">abstract</abstract>
<abstract language="en" script="Latn">abstract</abstract>
<keyword>keyword</keyword>
<ext schema-version="v0.0.3">
<doctype abbreviation="EN">European Standard</doctype>
Expand Down
6 changes: 3 additions & 3 deletions spec/fixtures/bibitem.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<bibitem id="ETSIEN319532-4V1.3.02023-10" schema-version="v1.2.8">
<title format="text/plain" language="en" script="Latn">Title</title>
<bibitem id="ETSIEN319532-4V1.3.02023-10" schema-version="v1.3.0">
<title language="en" script="Latn">Title</title>
<uri type="src">http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=62010</uri>
<docidentifier type="ETSI" primary="true">ETSI EN 319 532-4 V1.3.0 (2023-10)</docidentifier>
<docnumber>ETSI EN 319 532-4 V1.3.0 (2023-10)</docnumber>
Expand All @@ -11,6 +11,6 @@
</version>
<language>en</language>
<script>Latn</script>
<abstract format="text/plain" language="en" script="Latn">abstract</abstract>
<abstract language="en" script="Latn">abstract</abstract>
<keyword>keyword</keyword>
</bibitem>
4 changes: 1 addition & 3 deletions spec/fixtures/item_hash.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
---
schema-version: v1.2.8
schema-version: v1.3.0
id: ETSIEN319532-4V1.3.02023-10
title:
- content: Title
language:
- en
script:
- Latn
format: text/plain
link:
- content: http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=62010
type: src
Expand All @@ -32,7 +31,6 @@ abstract:
- en
script:
- Latn
format: text/plain
keyword:
- content: keyword
doctype:
Expand Down
Loading