Module: KramdownRFC
- Defined in:
- lib/kramdown-rfc/refxml.rb,
lib/kramdown-rfc/parameterset.rb
Defined Under Namespace
Classes: ParameterSet
Class Method Summary collapse
Class Method Details
.authorps_from_hash(au) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/kramdown-rfc/refxml.rb', line 34 def self.(au) aups = KramdownRFC::ParameterSet.new(au) if ins = aups[:ins] parts = ins.split('.').map(&:strip) aups.rest["initials"] = parts[0..-2].join('.') << '.' aups.rest["surname"] = parts[-1] end # hack ("heuristic for") initials and surname from name # -- only works for people with exactly one last name and uncomplicated first names if n = aups.rest["name"] n = n.split aups.rest["initials"] ||= n[0..-2].map(&:chr).join('.') << '.' aups.rest["surname"] ||= n[-1] end aups end |
.dateattrs(date) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/kramdown-rfc/refxml.rb', line 51 def self.dateattrs(date) begin case date when /\A\d\d\d\d\z/ %{year="#{date}"} when Integer %{year="#{"%04d" % date}"} when String Date.parse("#{date}-01").strftime(%{year="%Y" month="%B"}) when Date date.strftime(%{year="%Y" month="%B" day="%d"}) when Array # this allows to explicitly give a string %{year="#{date.join(" ")}"} when nil %{year="n.d."} end rescue ArgumentError warn "*** Invalid date: #{date} -- use 2012, 2012-07, or 2012-07-28" end end |
.ref_to_xml(k, v) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/kramdown-rfc/refxml.rb', line 3 def self.ref_to_xml(k, v) vps = KramdownRFC::ParameterSet.new(v) erb = ERB.new <<-REFERB, nil, '-' <reference anchor="<%= k %>" <%= vps.attr("target") %>> <front> <%= vps.ele("title") -%> <% vps.arr("author", true, true) do |au| aups = authorps_from_hash(au) -%> <author <%=aups.attrs("initials", "surname", "fullname=name", "role")%>> <%= aups.ele("organization=org", aups.attr("abbrev=orgabbrev"), "") %> </author> <% aups.warn_if_leftovers -%> <% end -%> <date <%= dateattrs(vps[:date]) %>/> </front> <% vps.arr("seriesinfo", false) do |k, v| -%> <seriesInfo name="<%=k%>" value="<%=v%>"/> <% end -%> <% vps.arr("format", false) do |k, v| -%> <format type="<%=k%>" target="<%=v%>"/> <% end -%> <%= vps.ele("annotation=ann") -%> </reference> REFERB ret = erb.result(binding) vps.warn_if_leftovers ret end |