module Asciidoctor::RFC::V3::Front
Public Instance Methods
address(node, suffix, xml)
click to toggle source
# File lib/asciidoctor/rfc/v3/front.rb, line 81 def address(node, suffix, xml) email = node.attr("email#{suffix}") facsimile = node.attr("fax#{suffix}") phone = node.attr("phone#{suffix}") postalline = node.attr("postal-line#{suffix}") street = node.attr("street#{suffix}") uri = node.attr("uri#{suffix}") if [email, facsimile, phone, postalline, street, uri].any? xml.address do |xml_address| address1 node, suffix, xml_address if [postalline, street].any? xml_address.phone { |p| p << phone } unless phone.nil? xml_address.facsimile { |f| f << facsimile } unless facsimile.nil? xml_address.email { |e| e << email } unless email.nil? xml_address.uri { |u| u << uri } unless uri.nil? end end end
front(node, xml)
click to toggle source
Syntax:
= Title Author :METADATA
# File lib/asciidoctor/rfc/v3/front.rb, line 8 def front(node, xml) xml.front do |xml_front| title node, xml_front series_info node, xml_front author node, xml_front date node, xml_front area node, xml_front workgroup node, xml_front keyword node, xml_front end end
organization(node, suffix, xml)
click to toggle source
# File lib/asciidoctor/rfc/v3/front.rb, line 76 def organization(node, suffix, xml) organization = node.attr("organization#{suffix}") xml.organization { |org| org << organization } unless organization.nil? end
series_info(node, xml)
click to toggle source
# File lib/asciidoctor/rfc/v3/front.rb, line 20 def series_info(node, xml) docname = node.attr("name") return if docname.nil? || docname&.empty? is_rfc = docname =~ /^rfc-?/i || node.attr("doctype") == "rfc" if is_rfc name = docname.gsub(/^rfc-?/i, "") nameattr = "RFC" else name = docname nameattr = "Internet-Draft" end value = name.gsub(/\.[^\/]+$/, "") seriesInfo_attributes = { name: nameattr, status: node.attr("status"), stream: node.attr("submission-type") || "IETF", value: value, } xml.seriesInfo **attr_code(seriesInfo_attributes) intendedstatus = node.attr("intended-series") if !is_rfc && !intendedstatus.nil? unless intendedstatus =~ /^(standard|full-standard|bcp|fyi|informational|experimental|historic)$/ warn %(asciidoctor: WARNING (#{current_location(node)}): disallowed value for intended-series in document header: #{intendedstatus}) end seriesInfo_attributes = { name: "", status: intendedstatus, value: value, } xml.seriesInfo **attr_code(seriesInfo_attributes) end rfcstatus = intendedstatus if is_rfc && !rfcstatus.nil? m = /^(\S+) (\d+)$/.match rfcstatus if m.nil? rfcstatus = "exp" if rfcstatus == "experimental" rfcstatus = "info" if rfcstatus == "informational" warn %(asciidoctor: WARNING (#{current_location(node)}): disallowed value for intended-series in document header with no series number: #{rfcstatus}) unless rfcstatus =~ /^(info|exp|historic)$/ else rfcstatus = m[1] value = m[2] warn %(asciidoctor: WARNING (#{current_location(node)}): disallowed value for intended-series in document header with series number: #{rfcstatus}) unless rfcstatus =~ /^(standard|full-standard|bcp)$/ end seriesInfo_attributes = { name: "", status: rfcstatus, value: value, } xml.seriesInfo **attr_code(seriesInfo_attributes) end end
Private Instance Methods
address1(node, suffix, xml_address)
click to toggle source
# File lib/asciidoctor/rfc/v3/front.rb, line 101 def address1(node, suffix, xml_address) postalline = node.attr("postal-line#{suffix}") street = node.attr("street#{suffix}") xml_address.postal do |xml_postal| if postalline.nil? city = node.attr("city#{suffix}") code = node.attr("code#{suffix}") country = node.attr("country#{suffix}") region = node.attr("region#{suffix}") street&.split("\\ ")&.each { |st| xml_postal.street { |s| s << st } } xml_postal.city { |c| c << city } unless city.nil? xml_postal.region { |r| r << region } unless region.nil? xml_postal.code { |c| c << code } unless code.nil? xml_postal.country { |c| c << country } unless country.nil? else postalline&.split("\\ ")&.each { |pl| xml_postal.postalLine { |p| p << pl } } end end end