Gem Version Build Status (macOS) Build Status (Windows) Build Status (Ubuntu) Code Climate Pull Requests Commits since latest

Formerly known as rfcbib.

RelatonIetf is a Ruby gem that search and fetch standards from the Internet Engineering Task Force (IETF), including RFCs.

Installation

Add this line to your application’s Gemfile:

gem 'relaton-ietf'

And then execute:

$ bundle

Or install it yourself as:

$ gem install relaton-ietf

Usage

Search document

require 'relaton_ietf'

item = RelatonIetf::IetfBibliography.search 'RFC 8341'
=> #<RelatonIetf::IetfBibliographicItem:0x007fd1875e7f58
...

# Return nil if document doesn't exist.
RelatonIetf::IetfBibliography.search '1111'
1111.xml: not recognised for RFC
=> nil

Serialization

item.to_xml
=>"<bibitem id="RFC8341">
  <fetched>2019-06-05</fetched>
  <title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>
  <uri type="src">https://www.rfc-editor.org/info/rfc8341</uri>
  <docidentifier type="IETF">RFC 8341</docidentifier>
  <docidentifier type="DOI">10.17487/RFC8341</docidentifier>
  <date type="published">
    <on>2018-03</on>
  </date>
  <contributor>
    <role type="author"/>
    <person>
      <name>
        <completename language="en">A. Bierman</completename>
      </name>
      <affiliation>
        <organization>
          <name>IETF</name>
          <abbreviation>IETF</abbreviation>
        </organization>
      </affiliation>
    </person>
  </contributor>
  <contributor>
    <role type="author"/>
    <person>
      <name>
        <completename language="en">M. Bjorklund</completename>
      </name>
      <affiliation>
        <organization>
          <name>IETF</name>
          <abbreviation>IETF</abbreviation>
        </organization>
      </affiliation>
    </person>
  </contributor>
  <language>en</language>
  <script>Latn</script>
  <series type="main">
    <title format="text/plain" language="en" script="Latn">STD</title>
    <number>91</number>
  </series>
  <series type="main">
    <title format="text/plain" language="en" script="Latn">RFC</title>
    <number>8341</number>
  </series>
</bibitem>"

With bibdata: true option XML output wrapped with bibdata element and ext element added.

item.to_xml bibdata: true
=>"<bibdata>
  <fetched>2019-06-05</fetched>
  <title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>
  <uri type="src">https://www.rfc-editor.org/info/rfc8341</uri>
  ...
  <ext>
    <doctype>rfc</doctype>
  </ext>
</bibdata>"

Parse a file locally

item = Relaton::Provider::Ietf.from_rfcxml File.read("rfc.xml")
=> #<RelatonIetf::IetfBibliographicItem:0x007fa8cda79ab8
...

item.to_xml bibdata: true
=>"<bibdata>
...

Create bibliographic item form YAML

hash = YAML.load_file 'spec/examples/ietf_bib_item.yml'
=> {"id"=>"RFC 8341",
...

bib_hash = RelatonIetf::HashConverter.hash_to_bib hash
=> {:id=>"RFC 8341",
...

RelatonIetf::IetfBibliographicItem.new bib_hash
=> #<RelatonIetf::IetfBibliographicItem:0x007f9a929dde40
...

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/metanorma/relaton-ietf.

License

The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).