relaton-un 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "net/http"
4
+ require "http-cookie"
5
+
6
+ module RelatonUn
7
+ # Page of hit collection.
8
+ class HitCollection < RelatonBib::HitCollection
9
+ AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
10
+ DOMAIN = "https://documents.un.org"
11
+ BOUNDARY = "----WebKitFormBoundary6hkaBvITDck8dHCn"
12
+
13
+ # @param text [String] reference to search
14
+ def initialize(text)
15
+ super
16
+ @uri = URI.parse DOMAIN
17
+ @jar = HTTP::CookieJar.new
18
+ @http = Net::HTTP.new @uri.host, @uri.port
19
+ @http.use_ssl = true
20
+ if (form_resp = get_page)
21
+ form = Nokogiri::HTML form_resp.body
22
+ form_data = form.xpath(
23
+ "//input[@type!='radio']",
24
+ "//input[@type='radio'][@checked]",
25
+ "//select[@name!='view:_id1:_id2:cbLang']",
26
+ "//textarea"
27
+ ).reduce([]) do |m, i|
28
+ v = case i[:name]
29
+ when "view:_id1:_id2:txtSymbol" then text
30
+ when "view:_id1:_id2:cbType" then "FP"
31
+ when "view:_id1:_id2:cbSort" then "R"
32
+ when "$$xspsubmitid" then "view:_id1:_id2:_id130"
33
+ when "$$xspsubmitscroll" then "0|167"
34
+ else i[:value]
35
+ end
36
+ m << %{--#{BOUNDARY}}
37
+ m << %{Content-Disposition: form-data; name="#{i[:name]}"\r\n\r\n#{v}}
38
+ end
39
+ form_data << %{--#{BOUNDARY}--\r\n}
40
+ req = Net::HTTP::Post.new form.at("//form")[:action]
41
+ set_headers req
42
+ req["Content-Type"] = "multipart/form-data, boundary=#{BOUNDARY}"
43
+ req.body = form_data.join("\r\n")
44
+ resp = @http.request req
45
+ page_resp = get_page URI.parse(resp["location"]).request_uri
46
+ doc = Nokogiri::HTML page_resp.body
47
+ @array = doc.css("div.viewHover").map do |item|
48
+ ref = item.at("div/div/a")&.text&.sub "\u00A0", ""
49
+ title = item.at("div/div/span")&.text
50
+ keyword = item.at("div[3]/div[5]/span")&.text
51
+ date_pub = item.at("//label[.='Publication Date: ']/following-sibling::span")&.text
52
+ en = item.at("//span[.='ENGLISH']/../..")
53
+ date_rel = en.at("./following-sibling::span[contains(@id, 'cfRelDateE')]").text
54
+ link = en.xpath("//a[contains(@title, 'Open')]").map do |l|
55
+ { content: l[:href], type: l[:title].match(/PDF|Word/).to_s.downcase }
56
+ end
57
+ Hit.new({
58
+ ref: ref,
59
+ title: title,
60
+ keyword: keyword,
61
+ date_pub: date_pub,
62
+ date_rel: date_rel,
63
+ link: link
64
+ }, self)
65
+ end
66
+ end
67
+ end
68
+
69
+ private
70
+
71
+ # @param location [String]
72
+ # @param deeep [Integer]
73
+ # @return [Strinf, NilClass]
74
+ def get_page(location = "/", deep = 0)
75
+ return if deep > 3
76
+
77
+ req = Net::HTTP::Get.new location
78
+ set_headers req
79
+ resp = @http.request req
80
+ resp.get_fields("set-cookie")&.each { |v| @jar.parse v, @uri }
81
+ return resp if resp.code == "200"
82
+
83
+ request_uri = URI.parse(resp["location"]).request_uri
84
+ get_page request_uri, deep + 1
85
+ end
86
+
87
+ def set_headers(req)
88
+ set_cookie req
89
+ req["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
90
+ req["Accept-Encoding"] = "gzip, deflate, br"
91
+ req["Cache-Control"] = "max-age=0"
92
+ req["Connection"] = "keep-alive"
93
+ req["Origin"] = "https://documents.un.org"
94
+ req["Referer"] = "https://documents.un.org/prod/ods.nsf/home.xsp"
95
+ req["Sec-Fetch-Mode"] = "navigate"
96
+ req["Sec-Fetch-Site"] = "same-origin"
97
+ req["Sec-Fetch-User"] = "?1"
98
+ req["Upgrade-Insecure-Requests"] = "1"
99
+ req["User-Agent"] = AGENT
100
+ end
101
+
102
+ def set_cookie(req)
103
+ req["Cookie"] = HTTP::Cookie.cookie_value @jar.cookies(@uri)
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,41 @@
1
+ require "relaton/processor"
2
+
3
+ module RelatonUn
4
+ class Processor < Relaton::Processor
5
+ attr_reader :idtype
6
+
7
+ def initialize
8
+ @short = :relaton_un
9
+ @prefix = "UN"
10
+ @defaultprefix = %r{^UN\s}
11
+ @idtype = "UN"
12
+ end
13
+
14
+ # @param code [String]
15
+ # @param date [String, NilClass] year
16
+ # @param opts [Hash]
17
+ # @return [RelatonUn::UnBibliographicItem]
18
+ def get(code, date, opts)
19
+ ::RelatonUn::UnBibliography.get(code, date, opts)
20
+ end
21
+
22
+ # @param xml [String]
23
+ # @return [RelatonIsoBib::IsoBibliographicItem]
24
+ def from_xml(xml)
25
+ ::RelatonUn::XMLParser.from_xml xml
26
+ end
27
+
28
+ # @param hash [Hash]
29
+ # @return [RelatonIsoBib::IsoBibliographicItem]
30
+ def hash_to_bib(hash)
31
+ item_hash = ::RelatonUn::HashConverter.hash_to_bib(hash)
32
+ ::RelatonIsoBib::UnBibliographicItem.new item_hash
33
+ end
34
+
35
+ # Returns hash of XML grammar
36
+ # @return [String]
37
+ def grammar_hash
38
+ @grammar_hash ||= ::RelatonUn.grammar_hash
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,8 @@
1
+ module RelatonUn
2
+ class UnBibliographicItem < RelatonBib::BibliographicItem
3
+ TYPES = %w[
4
+ recommendation plenary addendum communication corrigendum reissue agenda
5
+ budgetary sec-gen-notes expert-report resolution
6
+ ].freeze
7
+ end
8
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RelatonUn
4
+ # Class methods for search ISO standards.
5
+ class UnBibliography
6
+ class << self
7
+ # @param text [String]
8
+ # @return [RelatonUn::HitCollection]
9
+ def search(text)
10
+ HitCollection.new text
11
+ rescue SocketError, Errno::EINVAL, Errno::ECONNRESET, EOFError,
12
+ Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError,
13
+ OpenSSL::SSL::SSLError, Errno::ETIMEDOUT
14
+ raise RelatonBib::RequestError, "Could not access #{HitCollection::DOMAIN}"
15
+ end
16
+
17
+ # @param ref [String] document reference
18
+ # @param year [String, NilClass]
19
+ # @param opts [Hash] options
20
+ # @return [RelatonUn::UnBibliographicItem]
21
+ def get(ref, _year = nil, _opts = {})
22
+ warn "[relaton-un] (\"#{ref}\") fetching..."
23
+ /^(UN\s)?(?<code>.*)/ =~ ref
24
+ result = isobib_search_filter(code)
25
+ if result
26
+ warn "[relaton-un] (\"#{ref}\") found #{result.fetch.docidentifier.first.id}"
27
+ result.fetch
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ # Search for hits.
34
+ #
35
+ # @param code [String] reference without correction
36
+ # @return [RelatonUn::HitCollection]
37
+ def isobib_search_filter(code)
38
+ result = search(code)
39
+ result.select { |i| i.hit[:ref] == code }.first
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,3 @@
1
+ module RelatonUn
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,16 @@
1
+ module RelatonUn
2
+ class XMLParser < RelatonBib::XMLParser
3
+ class << self
4
+ def from_xml(xml)
5
+ doc = Nokogiri::XML xml
6
+ doc.remove_namespaces!
7
+ titem = doc.at("/bibitem|/bibdata")
8
+ if titem
9
+ UnBibliographicItem.new(item_data(titem))
10
+ else
11
+ warn "[relaton-un] can't find bibitem or bibdata element in the XML"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,46 @@
1
+ lib = File.expand_path("lib", __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'relaton_un/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "relaton-un"
7
+ spec.version = RelatonUn::VERSION
8
+ spec.authors = ["Ribose Inc."]
9
+ spec.email = ["open.source@ribose.com"]
10
+
11
+ spec.summary = "RelatonIso: retrieve CC Standards for bibliographic use "\
12
+ "using the IsoBibliographicItem model"
13
+ spec.description = "RelatonIso: retrieve CC Standards for bibliographic use "\
14
+ "using the IsoBibliographicItem model"
15
+ spec.homepage = "https://github.com/relaton/relaton-un"
16
+ spec.license = "BSD-2-Clause"
17
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
18
+
19
+ # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
20
+
21
+ spec.metadata["homepage_uri"] = spec.homepage
22
+ # spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
23
+ # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
24
+
25
+ # Specify which files should be added to the gem when it is released.
26
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
27
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
28
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
29
+ end
30
+ spec.bindir = "exe"
31
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
+ spec.require_paths = ["lib"]
33
+
34
+ spec.add_development_dependency "debase"
35
+ spec.add_development_dependency "equivalent-xml", "~> 0.6"
36
+ spec.add_development_dependency "rake", "~> 10.0"
37
+ spec.add_development_dependency "ruby-debug-ide"
38
+ spec.add_development_dependency "ruby-jing"
39
+ spec.add_development_dependency "simplecov"
40
+ spec.add_development_dependency "vcr"
41
+ spec.add_development_dependency "webmock"
42
+
43
+ spec.add_dependency "faraday"
44
+ spec.add_dependency "http-cookie"
45
+ spec.add_dependency "relaton-bib", "~> 0.8.0"
46
+ end
@@ -0,0 +1,163 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>Official Document System of the United Nations</title>
5
+ <link rel="SHORTCUT ICON" href="/prod/ods.nsf/un_fav_icon_0.png">
6
+ <meta content="IE=Edge" http-equiv="X-UA-Compatible">
7
+ <meta name="viewport" content="initial-scale=1,user-scalable=no,maximum-scale=1,height=device-height">
8
+ <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto%3A400%2C100%2C100italic%2C300%2C300italic%2C400italic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic">
9
+ <link rel="stylesheet" type="text/css" href="/xsp/.ibmxspres/.mini/css/2Eabootstrap/xsptheme/xsp.css&amp;2Eabootstrap/bootstrap311/css/bootstrap.css&amp;@Da&amp;2Eabootstrap/xpages300.css.css">
10
+ <script type="text/javascript">var dojoConfig = {locale: 'en', parseOnLoad: true};</script>
11
+ <script type="text/javascript" src="/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js"></script>
12
+ <script type="text/javascript">dojo.registerModulePath("extlib", "/xsp/.ibmxspres/.extlib");</script>
13
+ <script type="text/javascript" src="/xsp/.ibmxspres/.mini/dojo/.en/@Je&amp;-extlib.dijit.BootstrapPickerSelect2&amp;@Ek&amp;@Ie.js"></script>
14
+ <script type="text/javascript">dojo.require("ibm.xsp.widget.layout.xspClientDojo")</script>
15
+ <script type="text/javascript">dojo.require("dojo.parser")</script>
16
+ <script type="text/javascript" src="/xsp/.ibmxspres/.extlib/bootstrap/jquery182/js/jquery-1.8.2.min.js"></script>
17
+ <script type="text/javascript" src="/xsp/.ibmxspres/.extlib/bootstrap/bootstrap311/js/bootstrap.min.js"></script>
18
+ <script type="text/javascript" src="/xsp/.ibmxspres/.extlib/bootstrap/xpages300.js"></script>
19
+ <script type="text/javascript">dojo.require("dijit.Dialog")</script>
20
+ <script type="text/javascript">dojo.require("extlib.dijit.Picker")</script>
21
+ <script type="text/javascript">dojo.require("ibm.xsp.widget.layout.DateTextBox")</script>
22
+ <script type="text/javascript">dojo.require("extlib.dijit.BootstrapPickerSelect2")</script>
23
+ <link rel="stylesheet" type="text/css" href="/prod/ods.nsf/xsp/.ibmmodres/.css/main.css&amp;un.css&amp;font-awesome-4.4.0%2Fcss%2Ffont-awesome.min.css&amp;subjFixes.css">
24
+ <script type="text/javascript" src="/prod/ods.nsf/csjsCommon"></script>
25
+ </head>
26
+ <body class="xsp tundra">
27
+ <form id="view:_id1" method="post" action="/prod/ods.nsf/home.xsp" enctype="multipart/form-data">
28
+ <a class="sr-only" href="#mainContent">Skip to main content</a><div class="navbar navbar-default navbar-fixed-top" id="brand-bar" role="navigation"><div class="container brandbar-header"><div class="row"><div class="col-md-4"><a id="view:_id1:_id2:_id9" href="http://www.un.org/en/index.html" class="navbar-brand" target="_blank"><i class="fa fa-home fa-fw fa-lg paddingR"></i> Welcome to the United Nations</a></div><div class="col-md-8 language-switcher"><button class="navbar-toggle collapsed" data-target="#language-switcher" data-toggle="collapse" type="button"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><div class="language-title visible-xs-inline"><a data-target="#language-switcher" data-toggle="collapse" href="javascript:void(0)">Language:</a></div><div class="navbar-collapse collapse" id="language-switcher"><nav role="navigation"><ul class="language-switcher-locale-url nav navbar-nav navbar-right" role="menu"><li class="ar first"><a id="view:_id1:_id2:linkA" href="#" class="language-link">&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;</a></li><li class="zh-hans"><a id="view:_id1:_id2:linkC" href="#" class="language-link">&#20013;&#25991;</a></li><li class="en"><a id="view:_id1:_id2:linkE" href="#" class="language-link langOn">English</a></li><li class="fr"><a id="view:_id1:_id2:linkF" href="#" class="language-link">Fran&ccedil;ais</a></li><li class="ru"><a id="view:_id1:_id2:linkR" href="#" class="language-link">&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;</a></li><li class="es"><a id="view:_id1:_id2:linkS" href="#" class="language-link">Espa&ntilde;ol</a></li><li class="dropdown last"><a class="dropdown-toggle" data-toggle="dropdown" href="#" id="otherLangs">&nbsp;Other&nbsp;<span class="caret"></span></a><ul aria-labelledby="otherLangs" class="dropdown-menu" role="menu"><li><a id="view:_id1:_id2:linkG" href="#" class="language-link">Deutsch</a></li></ul></li></ul></nav></div></div></div></div></div><header class="navbar container navbar-default" id="navbar" role="banner"><div class="container"><div class="navbar-header"><a id="view:_id1:_id2:_id43" href="http://www.un.org/en/index.html" class="logo navbar-btn pull-left flip" title="United Nations" target="_blank"><img id="view:_id1:_id2:_id44" src="/prod/ods.nsf/logo-un.png" alt="" class="unLogo"></a><a id="view:_id1:_id2:_id45" href="/prod/ods.nsf/home.xsp" class="name navbar-brand" title="ODS Home">Official Document System</a><a href="http://unite.un.org" target="_blank"><img alt="Unite" class="uniteLogo" src="powered-by-unite.png"></a></div><div class="hidden"><span id="view:_id1:_id2:cfMsg">Due to the United Nations Critical Application Disaster Recovery Exercise, Official Document System may be intermittently unavailable from Friday, 3 November 2017 10:00 PM to Saturday, 4 November 7:00 AM (EDT). </span></div>
29
+ </div></header><div id="searchbar"><div class="container"><div class="row"><div class="col-md-12"><a id="view:_id1:_id2:linkFTSearch" href="http://search.un.org/results.php?tpl=ods&amp;lang=en" class="unBlue" title="Unite Search" target="_blank"><i class="fa fa-search"></i>&nbsp;Unite Search</a><a id="view:_id1:_id2:banner_btn_login" href="#" class="unBlue marginLinks" title="Login"><i class="fa fa-unlock"></i>&nbsp;Login</a><div dojoType="dijit.Dialog" href="/prod/ods.nsf?login&amp;redirectto=/prod/ods.nsf/home.xsp" id="view:_id1:_id2:showLoginDialog" style="overflow:auto;" title="Login!!"></div>
30
+ <a id="view:_id1:_id2:linkHelp" href="/prod/ods.nsf/xpHelp.xsp" class="unBlue marginLinks" title="Help Information"><i class="fa fa-info-circle"></i>&nbsp;Help</a></div></div><div><div class="row"><div class="col-md-2 col-xs-12"><label id="view:_id1:_id2:lblSymbol" for="view:_id1:_id2:txtSymbol" class="control-label lbl">Symbol</label></div><div class="col-md-4 col-xs-12"><input type="text" id="view:_id1:_id2:txtSymbol" name="view:_id1:_id2:txtSymbol" class="form-control form-control" placeholder="Enter symbol"></div><div class="col-md-2 col-xs-12"><label id="view:_id1:_id2:lblTrunc" for="view:_id1:_id2:rgTrunc" class="control-label lbl">Truncation</label></div><div class="col-md-4 col-xs-12"><fieldset id="view:_id1:_id2:rgTrunc" class="radio radio2" onchangeTrigger="early-onclick"><table role="presentation" class="radio radio2">
31
+ <tr>
32
+ <td>
33
+ <label for="view:_id1:_id2:rgTrunc:0"><input type="radio" checked id="view:_id1:_id2:rgTrunc:0" name="view:_id1:_id2:rgTrunc" value="R">Right</label></td>
34
+ <td>
35
+ <label for="view:_id1:_id2:rgTrunc:1"><input type="radio" id="view:_id1:_id2:rgTrunc:1" name="view:_id1:_id2:rgTrunc" value="L">Left</label></td>
36
+ <td>
37
+ <label for="view:_id1:_id2:rgTrunc:2"><input type="radio" id="view:_id1:_id2:rgTrunc:2" name="view:_id1:_id2:rgTrunc" value="RL">Right &amp; Left</label></td>
38
+ <td>
39
+ <label for="view:_id1:_id2:rgTrunc:3"><input type="radio" id="view:_id1:_id2:rgTrunc:3" name="view:_id1:_id2:rgTrunc" value="N">None</label></td>
40
+ </tr>
41
+ </table></fieldset></div></div><div class="row"><div class="col-md-2 col-xs-12"><label id="view:_id1:_id2:lblWrds" for="view:_id1:_id2:txtWrds" class="control-label lbl">Word(s) in the title</label></div><div class="col-md-4 col-xs-12"><input type="text" id="view:_id1:_id2:txtWrds" name="view:_id1:_id2:txtWrds" class="form-control form-control" placeholder="Enter Words of the title (English only)"></div><div class="col-md-2 col-xs-12"><label id="view:_id1:_id2:lblSubj" for="view:_id1:_id2:txtSubj" class="control-label lbl">Subject</label></div><div class="col-md-4 col-xs-12"><input type="text" id="view:_id1:_id2:txtSubj" name="view:_id1:_id2:txtSubj" class="form-control disabled form-control" placeholder="Enter Subject"><a href="javascript:;" onclick="return XSP.selectValue('extlib.dijit.PickerListSearch',{&quot;msep&quot;:&quot;,&quot;,&quot;trim&quot;:true,&quot;dlgTitle&quot;:&quot;Select from list&quot;,&quot;control&quot;:&quot;view:_id1:_id2:txtSubj&quot;,&quot;url&quot;:&quot;\/prod\/ods.nsf\/home.xsp?$$viewid=!ekbv2yres2iiwwuft7y287goy!&amp;$$axtarget=view:_id1:_id2:vpSubjs&quot;})" onkeydown="javascript:var kc=event.keyCode?event.keyCode:event.which;if(kc==32){ return XSP.selectValue('extlib.dijit.PickerListSearch',{&quot;msep&quot;:&quot;,&quot;,&quot;trim&quot;:true,&quot;dlgTitle&quot;:&quot;Select from list&quot;,&quot;control&quot;:&quot;view:_id1:_id2:txtSubj&quot;,&quot;url&quot;:&quot;\/prod\/ods.nsf\/home.xsp?$$viewid=!ekbv2yres2iiwwuft7y287goy!&amp;$$axtarget=view:_id1:_id2:vpSubjs&quot;})}" role="button"><img src="/xsp/.ibmxspres/.extlib/icons/iconValuePicker.png" alt="Open Picker"></a></div></div><div class="row"><div class="col-md-2 col-xs-12"><label id="view:_id1:_id2:lblPubDate" for="view:_id1:_id2:dtPubDateFrom" class="control-label lbl">Date of publication</label></div><div class="col-md-2 col-xs-6"><input type="text" id="view:_id1:_id2:dtPubDateFrom" name="view:_id1:_id2:dtPubDateFrom" class="form-control form-control" dojoType="ibm.xsp.widget.layout.DateTextBox" iconStyleClass="xspInputFieldDatePickerIcon" constraints="{datePattern:&quot;dd/MM/yyyy&quot;,selector:&quot;date&quot;}"></div><div class="col-md-2 col-xs-6"><input type="text" id="view:_id1:_id2:dtPubDateTo" name="view:_id1:_id2:dtPubDateTo" class="form-control form-control" dojoType="ibm.xsp.widget.layout.DateTextBox" iconStyleClass="xspInputFieldDatePickerIcon" constraints="{datePattern:&quot;dd/MM/yyyy&quot;,selector:&quot;date&quot;}"></div><div class="col-md-2 col-xs-12"><label id="view:_id1:_id2:lblRelDate" for="view:_id1:_id2:dtRelDateFrom" class="control-label lbl">Date of release</label></div><div class="col-md-2 col-xs-6"><input type="text" id="view:_id1:_id2:dtRelDateFrom" name="view:_id1:_id2:dtRelDateFrom" class="form-control form-control" dojoType="ibm.xsp.widget.layout.DateTextBox" iconStyleClass="xspInputFieldDatePickerIcon" constraints="{datePattern:&quot;dd/MM/yyyy&quot;,selector:&quot;date&quot;}"></div><div class="col-md-2 col-xs-6"><input type="text" id="view:_id1:_id2:dtRelDateTo" name="view:_id1:_id2:dtRelDateTo" class="form-control form-control" dojoType="ibm.xsp.widget.layout.DateTextBox" iconStyleClass="xspInputFieldDatePickerIcon" constraints="{datePattern:&quot;dd/MM/yyyy&quot;,selector:&quot;date&quot;}"></div></div><div class="row"><div class="col-md-2 col-xs-12"><label id="view:_id1:_id2:lblJobNo" for="view:_id1:_id2:txtJobNo" class="control-label lbl">Job Number</label></div><div class="col-md-4 col-xs-12"><input type="text" id="view:_id1:_id2:txtJobNo" name="view:_id1:_id2:txtJobNo" class="form-control form-control" placeholder="Enter Job Number"></div><div class="col-md-2 col-xs-6"><label id="view:_id1:_id2:lblSess" for="view:_id1:_id2:txtSess" class="control-label lbl">Session / Year</label></div><div class="col-md-1 col-xs-2"><input type="text" id="view:_id1:_id2:txtSess" name="view:_id1:_id2:txtSess" class="form-control form-control" placeholder=""></div><div class="col-md-2 col-xs-6"><label id="view:_id1:_id2:lblAgItem" for="view:_id1:_id2:txtAgItem" class="control-label lbl">Agenda Item Number</label></div><div class="col-md-1 col-xs-2"><input type="text" id="view:_id1:_id2:txtAgItem" name="view:_id1:_id2:txtAgItem" class="form-control form-control" placeholder=""></div></div><div class="row"><div class="col-md-6 col-xs-12"><div class="col-md-4 col-xs-12 marginM15"><label id="view:_id1:_id2:lblFTSrch" for="view:_id1:_id2:txtFTSrch" class="control-label lbl">Full-text search</label></div><div class="col-md-8 col-xs-12 margin10"><textarea id="view:_id1:_id2:txtFTSrch" name="view:_id1:_id2:txtFTSrch" rows="2" class="form-control form-control" placeholder="Enter text to search"></textarea></div></div><div class="col-md-6 col-xs-12"><div class="row"><div class="col-md-4 col-xs-12 marginM15"><label id="view:_id1:_id2:lblLang" for="view:_id1:_id2:cbLang" class="control-label lbl">Language for full-text:</label></div><div class="col-md-8 col-xs-12 margin10"><select id="view:_id1:_id2:cbLang" name="view:_id1:_id2:cbLang" class="form-control form-control" size="3"> <option value="A">Arabic</option>
42
+ <option value="C">Chinese</option>
43
+ <option value="E">English</option>
44
+ <option value="F">French</option>
45
+ <option value="R">Russian</option>
46
+ <option value="S">Spanish</option>
47
+ </select>
48
+ <script>new extlib.dijit.BootstrapPickerSelect2({"placeHolder":null,"formatResult":null,"forId":"view:_id1:_id2:cbLang","formatSelection":null,"useRemoteData":false,"thisId":"select2PickerCombo1","isNativeSelect":true,"allowClearing":false});</script>
49
+ </div></div><div class="row"><div class="col-md-4 col-xs-12 marginM15"><label id="view:_id1:_id2:lblType" for="view:_id1:_id2:cbType" class="control-label lbl">Type of full-text search</label></div><div class="col-md-8 col-xs-12 margin10"><select id="view:_id1:_id2:cbType" name="view:_id1:_id2:cbType" class="form-control" size="1"> <option value="FP">Find this phrase</option>
50
+ <option value="FW">Find all the words</option>
51
+ <option value="FA">Find any of the words</option>
52
+ <option value="BO">Use boolean operators</option>
53
+ </select>
54
+ <script>new extlib.dijit.BootstrapPickerSelect2({"placeHolder":null,"formatResult":null,"forId":"view:_id1:_id2:cbType","formatSelection":null,"useRemoteData":false,"thisId":"select2PickerCombo2","isNativeSelect":true,"allowClearing":false});</script>
55
+ </div></div><div class="row"><div class="col-md-4 col-xs-12 marginM15"><label id="view:_id1:_id2:lblSort" for="view:_id1:_id2:cbSort" class="control-label lbl">Sort</label></div><div class="col-md-8 col-xs-12 margin10"><select id="view:_id1:_id2:cbSort" name="view:_id1:_id2:cbSort" class="form-control" size="1"> <option value="R">Sort by relevance</option>
56
+ <option value="DD">Sort by date - descending</option>
57
+ <option value="DA">Sort by date - ascending</option>
58
+ <option value="S">Sort by symbol</option>
59
+ </select>
60
+ <script>new extlib.dijit.BootstrapPickerSelect2({"placeHolder":null,"formatResult":null,"forId":"view:_id1:_id2:cbSort","formatSelection":null,"useRemoteData":false,"thisId":"select2PickerCombo3","isNativeSelect":true,"allowClearing":false});</script>
61
+ </div></div></div></div><br><div class="row"><div class="col-md-2 hideMobile"></div><div class="col-md-1 col-xs-3"><button class="btn btn-sm btnUNBlue" type="button" name="view:_id1:_id2:btnRefine" id="view:_id1:_id2:btnRefine">Search</button></div><div class="col-md-1 col-xs-3"><button class="btn btn-sm" type="button" name="view:_id1:_id2:btnClear" id="view:_id1:_id2:btnClear">Clear</button></div><div class="col-md-1 col-xs-3 hidden"><button class="btn btn-sm" type="button" name="view:_id1:_id2:btnSave" id="view:_id1:_id2:btnSave">Save Search by...</button></div>
62
+ </div><input type="hidden" id="view:_id1:_id2:hdnSubj" name="view:_id1:_id2:hdnSubj" value=""></div></div></div><div class="container" id="mainContent"><div id="view:_id1:_id2:cbMain">
63
+ <div class="panelHeight">
64
+ <div class="row"><div class="col-md-4"><h5><span class="ucase">DAILY DOCUMENTS</span></h5><span id="view:_id1:_id2:cbMain:cfDDs"><p><a href="http://www.un.org/en/documents/journal.asp" target="_blank"><i class="fa fa-file"></i>&#160;&#160;Daily Journal (New York)</a></p> <p><a href="http://daccess-ods.un.org/ods/dailyListOfDocuments.htm" target="_blank"><i class="fa fa-file"></i>&#160;&#160;Daily Documents</a></p> <p><a href="http://www.unog.ch/__80256ee600586f34.nsf/httpDailyBulletin_External?ReadForm" target="_blank"><i class="fa fa-file"></i>&#160;&#160;Daily Bulletin (Geneva)</a></p></span></div><div class="col-md-4"><h5><span class="ucase">MOST DOWNLOADED DOCUMENTS (1-5)</span></h5><span id="view:_id1:_id2:cbMain:cfMDDs1"><p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=A/RES/70/1&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;A/RES/70/1</a></p> <p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=A/RES/73/195&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;A/RES/73/195</a></p> <p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=E/2019/68&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;E/2019/68</a></p> <p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=S/AC.44/2019/18&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;S/AC.44/2019/18</a></p> <p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=A/RES/217(III)&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;A/RES/217(III)</a></p></span></div><div class="col-md-4"><h5><span class="ucase">MOST DOWNLOADED DOCUMENTS (6-10)</span></h5><span id="view:_id1:_id2:cbMain:cfMDDs2"><p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=S/RES/2511(2020)&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;S/RES/2511(2020)</a></p> <p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=A/74/102/ADD.2&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;A/74/102/ADD.2</a></p> <p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=S/2020/157&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;S/2020/157</a></p> <p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=A/RES/71/1&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;A/RES/71/1</a></p> <p><a href="http://daccess-ods.un.org/access.nsf/Get?Open&DS=E/CN.6/2020/3&Lang=E" target="_blank"><i class="fa fa-file"></i>&#160;&#160;E/CN.6/2020/3</a></p></span></div></div><p class="pageHeader">Official Document System of the United Nations</p><div class="row"><div class="col-md-12"><div id="view:_id1:_id2:cbMain:en">
65
+ <div id="view:_id1:_id2:cbMain:_id150:inputRichText1">The Official Document System (ODS) is an online database of UN documents that was first launched in 1993 and updated in 2016. ODS has full-text, born-digital UN documents published from 1993 onward, including documents of the Security Council, the General Assembly, the Economic and Social Council and their subsidiaries, as well as administrative issuances and other documents. <br>
66
+ <br>
67
+ The database also includes scanned documents published between 1946 and 1993, including all resolutions of the principal organs, all documents of the Security Council and the General Assembly Official Records. Documents are available in the official languages of the UN; some documents are also available in German. <br>
68
+ <br>
69
+ ODS does not have the following types of materials: documents issued before 1993 that have not yet been digitized, <a href="http://www.un.org/press/en" target="_blank">press releases</a>, <a href="https://shop.un.org/" target="_blank">sales publications</a>, such as the Yearbook and the <a href="https://treaties.un.org/" target="_blank">Treaty Series</a>, and documents that do not have a UN symbol. <br>
70
+ <br>
71
+ ODS is maintained by the <a href="https://unite.un.org/" target="_blank">Office of Information and Communications Technology (OICT)</a>. New documents are added by the Department for General Assembly and Conference Management (DGACM). Scanned documents and metadata are contributed by the Dag Hammarskjöld Library and the UN Office at Geneva Library. <br>
72
+ <br>
73
+ This website is best used in recent versions of all major browsers. To download multiple documents, please use Google Chrome or Opera.<br>
74
+ <br>
75
+ If you have any questions or problems, please contact the Information and Communications Technology Service Desk by <a href="mailto:helpdeskoict@un.org?Subject=ODS">e-mail</a>.</div></div>
76
+ </div></div></div>
77
+ </div>
78
+ </div><div class="container footerInfo noPrint"><div class="row list-inline"><div class="col-md-12"><div class="pull-left flip footer-brand"><a id="view:_id1:_id2:_id161" href="http://www.un.org/en/index.html" class="ucase" title="United Nations" target="_blank">United Nations</a></div><div class="pull-right flip"><p><a id="view:_id1:_id2:link6" href="/prod/ods.nsf/xfContactUs.xsp">Contact Us</a>&nbsp;|&nbsp;<a id="view:_id1:_id2:link1" href="/prod/ods.nsf/xpHelp.xsp">Help Information</a>&nbsp;|&nbsp;<a id="view:_id1:_id2:link5" href="http://www.un.org/en/sections/aboutun/fraud-alert/index.html" target="_blank">Fraud Alert</a>&nbsp;|&nbsp;<a id="view:_id1:_id2:link4" href="http://www.un.org/en/sections/about-website/privacy-notice/index.html" target="_blank">Privacy Notice</a>&nbsp;|&nbsp;<a id="view:_id1:_id2:link3" href="http://www.un.org/en/sections/about-website/terms-use/index.html" target="_blank">Terms of Use</a>&nbsp;|&nbsp;<a id="view:_id1:_id2:link2" href="http://www.un.org/en/aboutun/copyright/index.html" target="_blank">Copyright &copy; United Nations 2016</a></p></div></div></div></div>
79
+ <input type="hidden" name="$$viewid" id="view:_id1__VUID" value="!ekbv2yres2iiwwuft7y287goy!">
80
+ <input type="hidden" name="$$xspsubmitid">
81
+ <input type="hidden" name="$$xspexecid">
82
+ <input type="hidden" name="$$xspsubmitvalue">
83
+ <input type="hidden" name="$$xspsubmitscroll">
84
+ <input type="hidden" name="view:_id1" value="view:_id1"></form>
85
+ <script type="text/javascript">
86
+
87
+ function view__id1__id2__id56_clientSide_onclick(thisEvent) {
88
+ dijit.byId("view:_id1:_id2:showLoginDialog").show();
89
+
90
+ }
91
+
92
+ function view__id1__id2__id68_clientSide_onkeypress(thisEvent) {
93
+ if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; }
94
+ if (thisEvent.keyCode == dojo.keys.ENTER)
95
+ {
96
+ dojo.byId("view:_id1:_id2:btnRefine").click();
97
+ thisEvent.preventDefault();
98
+ }
99
+
100
+ }
101
+
102
+ function view__id1__id2__id130_clientSide_onclick(thisEvent) {
103
+ // if FT, open Unite Search instead
104
+ /*var ftSrch = XSP.getElementById("view:_id1:_id2:txtFTSrch").value;
105
+ if(ftSrch != "") {
106
+ var vURL = "https://search.un.org/results.php?query=" + ftSrch + "&tpl=ods";
107
+ window.open(vURL);
108
+ return false;
109
+ };*/
110
+
111
+ }
112
+
113
+ function view__id1__id2__id132_clientSide_onclick(thisEvent) {
114
+ x$("").val('');
115
+ x$("").select2().select2("val", 'UN Documents');
116
+ x$("view:_id1:_id2:cbLang").select2().select2("val", '');
117
+ x$("view:_id1:_id2:txtSymbol").val(null);
118
+ $('[name$=rgTrunc]:checked').prop('checked', false);
119
+ x$("view:_id1:_id2:dtPubDateFrom").val('');
120
+ x$("view:_id1:_id2:dtPubDateTo").val('');
121
+ x$("view:_id1:_id2:dtRelDateFrom").val('');
122
+ x$("view:_id1:_id2:dtRelDateTo").val('');
123
+ x$("view:_id1:_id2:txtWrds").val('');
124
+ x$("view:_id1:_id2:txtSubj").val(null);
125
+ x$("view:_id1:_id2:txtSess").val('');
126
+ x$("view:_id1:_id2:txtAgItem").val('');
127
+ x$("view:_id1:_id2:txtFTSrch").val('');
128
+ x$("view:_id1:_id2:cbType").select2().select2("val", 'Find this phrase');
129
+ x$("view:_id1:_id2:txtJobNo").val('');
130
+
131
+ }
132
+
133
+ function view__id1__id2__id169_clientSide_onClientLoad(thisEvent) {
134
+ // default field
135
+ var input = dojo.query("input[type='text']")[0];
136
+ input.focus();
137
+
138
+ // disable subject field
139
+ $(".disabled").focus(function(){
140
+ $(this).blur();
141
+ });
142
+
143
+ }
144
+
145
+ XSP.addOnLoad(function() {
146
+ XSP.attachEvent("view:_id1:_id2:_id24", "view:_id1:_id2:linkA", "onclick", null, true, 2);
147
+ XSP.attachEvent("view:_id1:_id2:_id26", "view:_id1:_id2:linkC", "onclick", null, true, 2);
148
+ XSP.attachEvent("view:_id1:_id2:_id28", "view:_id1:_id2:linkE", "onclick", null, true, 2);
149
+ XSP.attachEvent("view:_id1:_id2:_id30", "view:_id1:_id2:linkF", "onclick", null, true, 2);
150
+ XSP.attachEvent("view:_id1:_id2:_id32", "view:_id1:_id2:linkR", "onclick", null, true, 2);
151
+ XSP.attachEvent("view:_id1:_id2:_id34", "view:_id1:_id2:linkS", "onclick", null, true, 2);
152
+ XSP.attachEvent("view:_id1:_id2:_id40", "view:_id1:_id2:linkG", "onclick", null, true, 2);
153
+ XSP.attachEvent("view:_id1:_id2:_id56", "view:_id1:_id2:banner_btn_login", "onclick", view__id1__id2__id56_clientSide_onclick, false, 2);
154
+ XSP.attachEvent("view:_id1:_id2:_id68", "view:_id1:_id2:txtSymbol", "onkeypress", view__id1__id2__id68_clientSide_onkeypress, false, 2);
155
+ XSP.attachEvent("view:_id1:_id2:_id130", "view:_id1:_id2:btnRefine", "onclick", view__id1__id2__id130_clientSide_onclick, true, 2);
156
+ XSP.attachEvent("view:_id1:_id2:_id132", "view:_id1:_id2:btnClear", "onclick", view__id1__id2__id132_clientSide_onclick, true, 2);
157
+ XSP.attachEvent("view:_id1:_id2:_id134", "view:_id1:_id2:btnSave", "onclick", null, true, 2);
158
+ XSP.attachEvent("view:_id1:_id2:_id169", "view:_id1:_id2", "onClientLoad", view__id1__id2__id169_clientSide_onClientLoad, false, 2);
159
+ });
160
+
161
+ </script>
162
+ </body>
163
+ </html>
metadata ADDED
@@ -0,0 +1,229 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: relaton-un
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-03-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: debase
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: equivalent-xml
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ruby-debug-ide
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ruby-jing
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: vcr
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'
111
+ - !ruby/object:Gem::Dependency
112
+ name: webmock
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: faraday
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: http-cookie
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: relaton-bib
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 0.8.0
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 0.8.0
167
+ description: 'RelatonIso: retrieve CC Standards for bibliographic use using the IsoBibliographicItem
168
+ model'
169
+ email:
170
+ - open.source@ribose.com
171
+ executables: []
172
+ extensions: []
173
+ extra_rdoc_files: []
174
+ files:
175
+ - ".github/workflows/macos.yml"
176
+ - ".github/workflows/ubuntu.yml"
177
+ - ".github/workflows/windows.yml"
178
+ - ".gitignore"
179
+ - ".rspec"
180
+ - ".rubocop.yml"
181
+ - Gemfile
182
+ - LICENSE.txt
183
+ - README.adoc
184
+ - Rakefile
185
+ - bin/console
186
+ - bin/rspec
187
+ - bin/setup
188
+ - grammars/basicdoc.rng
189
+ - grammars/biblio.rng
190
+ - grammars/isodoc.rng
191
+ - grammars/reqt.rng
192
+ - grammars/un.rng
193
+ - lib/relaton_un.rb
194
+ - lib/relaton_un/hash_converter.rb
195
+ - lib/relaton_un/hit.rb
196
+ - lib/relaton_un/hit_collection.rb
197
+ - lib/relaton_un/processor.rb
198
+ - lib/relaton_un/un_bibliographic_item.rb
199
+ - lib/relaton_un/un_bibliography.rb
200
+ - lib/relaton_un/version.rb
201
+ - lib/relaton_un/xml_parser.rb
202
+ - relaton_un.gemspec
203
+ - resp.html
204
+ homepage: https://github.com/relaton/relaton-un
205
+ licenses:
206
+ - BSD-2-Clause
207
+ metadata:
208
+ homepage_uri: https://github.com/relaton/relaton-un
209
+ post_install_message:
210
+ rdoc_options: []
211
+ require_paths:
212
+ - lib
213
+ required_ruby_version: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: 2.4.0
218
+ required_rubygems_version: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ requirements: []
224
+ rubygems_version: 3.0.6
225
+ signing_key:
226
+ specification_version: 4
227
+ summary: 'RelatonIso: retrieve CC Standards for bibliographic use using the IsoBibliographicItem
228
+ model'
229
+ test_files: []