kramdown-rfc2629 1.6.9 → 1.6.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5efefbd462f83ca8a6028732587b93cdcb325dced1d3517c431951a460935ba
4
- data.tar.gz: 5e419a6c6450b96ef213aa875beb1ebd2a8fab50a7dfbbe3c75f551fd40fb160
3
+ metadata.gz: ac3949475273a7c4f72acf86a47d2c9fb176c2a6f81c8d9cc9db03d595c61248
4
+ data.tar.gz: 165b94bb4a9306134e92515dae4eec7a9022b0264d95484d7f31a316982d3b01
5
5
  SHA512:
6
- metadata.gz: c7f4b69d71d42913d164727465b4e998a58ef5df9378e563030ec9edea6028ea55908c41fca51aa6db760d806fa80372a71a83a5b3a134a294b90bc3ad99e5ae
7
- data.tar.gz: a22265e02addd8fefcc79b40acd864df936147d9c0e3004916e8f0c5649d719970e4a19772f47a70d92051efa50f0dcde2771d7f8994c15536d8ed8d8143fd19
6
+ metadata.gz: 1686e35bd93c3e9ff63f42bb830845e3b7accf1b2b7621fb78d49b0fafc3c1edeaea53a645c6e81d8ee5c9f468c54fb0920cb91831325c210d9b98d810f64564
7
+ data.tar.gz: 5599b22f40492bbfffc8a5d34af3e9ddc69452757bc0c9eb95a97ce312bdc730d3858ffbe1b00bce3af8377d651a3277d3ec82acd0b62e65f7436c8051797bd7
data/bin/doilit CHANGED
@@ -12,6 +12,7 @@ require 'kramdown-rfc/refxml'
12
12
  ACCEPT_CITE_JSON = {"Accept" => "application/citeproc+json"}
13
13
 
14
14
  $verbose = false
15
+ $fuzzy = false
15
16
  $handle = "a"
16
17
  $xml = false
17
18
 
@@ -25,6 +26,9 @@ ARGV.each do |doi|
25
26
  warn '*** please "gem install open-uri-cached" to enable caching'
26
27
  end
27
28
  next
29
+ when "-f"
30
+ $fuzzy = true
31
+ next
28
32
  when "-v"
29
33
  $verbose = true
30
34
  next
@@ -36,7 +40,7 @@ ARGV.each do |doi|
36
40
  $xml = true
37
41
  next
38
42
  when /\A-/
39
- warn "*** Usage: doilit [-c] [-v] [-h=handle|-x=xmlhandle] doi..."
43
+ warn "*** Usage: doilit [-c] [-f] [-v] [-h=handle|-x=xmlhandle] doi..."
40
44
  exit 1
41
45
  end
42
46
  cite = JSON.parse(URI("https://dx.doi.org/#{doi}").open(ACCEPT_CITE_JSON).read)
@@ -72,6 +76,13 @@ ARGV.each do |doi|
72
76
  end
73
77
  end
74
78
  end
79
+ if !lit.key?("date") && $fuzzy && (iss = cite["created"])
80
+ if dp = iss["date-parts"]
81
+ if Integer === (dp = dp[0])[0]
82
+ lit["date"] = ["%04d" % dp[0], *dp[1..-1].map {|p| "%02d" % p}].join("-")
83
+ end
84
+ end
85
+ end
75
86
  if (ct = cite["container-title"]) && ct != []
76
87
  info = []
77
88
  if v = cite["volume"]
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ require 'rexml/document'
4
+ require 'kramdown-rfc/autolink-iref-cleanup'
5
+
6
+ d = REXML::Document.new(ARGF.read)
7
+ autolink_iref_cleanup(d)
8
+ puts d.to_s
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.6.9'
3
+ s.version = '1.6.12'
4
4
  s.summary = "Kramdown extension for generating RFCXML (RFC 799x)."
5
5
  s.description = %{An RFCXML (RFC 799x) generating backend for Thomas Leitner's
6
6
  "kramdown" markdown parser. Mostly useful for RFC writers.}
@@ -8,11 +8,13 @@ spec = Gem::Specification.new do |s|
8
8
  s.add_dependency('kramdown-parser-gfm', '~> 1.1')
9
9
  s.add_dependency('certified', '~> 1.0')
10
10
  s.add_dependency('json_pure', '~> 2.0')
11
- s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kdrfc bin/kramdown-rfc bin/kramdown-rfc2629 bin/doilit bin/kramdown-rfc-extract-markdown data/kramdown-rfc2629.erb data/encoding-fallbacks.txt data/math.json bin/kramdown-rfc-cache-subseries-bibxml bin/kramdown-rfc-autolink-iref-cleanup.rb bin/de-gfm)
11
+ s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kdrfc bin/kramdown-rfc bin/kramdown-rfc2629 bin/doilit bin/kramdown-rfc-extract-markdown data/kramdown-rfc2629.erb data/encoding-fallbacks.txt data/math.json bin/kramdown-rfc-cache-subseries-bibxml bin/kramdown-rfc-autolink-iref-cleanup bin/de-gfm)
12
12
  s.require_path = 'lib'
13
13
  s.executables = ['kramdown-rfc', 'kramdown-rfc2629', 'doilit', 'kramdown-rfc-extract-markdown',
14
14
  'kdrfc', 'kramdown-rfc-cache-i-d-bibxml',
15
- 'kramdown-rfc-cache-subseries-bibxml', 'de-gfm']
15
+ 'kramdown-rfc-cache-subseries-bibxml',
16
+ 'kramdown-rfc-autolink-iref-cleanup',
17
+ 'de-gfm']
16
18
  s.required_ruby_version = '>= 2.3.0'
17
19
  # s.requirements = 'wget'
18
20
  # s.has_rdoc = true
@@ -0,0 +1,29 @@
1
+ require 'rexml/document'
2
+
3
+ def autolink_iref_cleanup(d)
4
+
5
+ d.root.get_elements("//section[@anchor]").each do |sec|
6
+ anchor = sec['anchor']
7
+ irefs = {}
8
+ sec.get_elements(".//xref[@target='#{anchor}'][@format='none']").each do |xr|
9
+ ne = xr.next_element
10
+ if ne && ne.name == "iref" && (item = ne['item'])
11
+ irefs[item] = ne['subitem'] # XXX one subitem only
12
+ ne.remove
13
+ chi = xr.children
14
+ chi[1..-1].reverse.each do |ch|
15
+ xr.parent.insert_after(xr, ch)
16
+ end
17
+ xr.replace_with(chi[0])
18
+ end
19
+ end
20
+ irefs.each do |k, v|
21
+ sec.insert_after(sec.get_elements("name").first,
22
+ e = REXML::Element.new("iref", sec))
23
+ e.attributes["item"] = k
24
+ e.attributes["subitem"] = v
25
+ e.attributes["primary"] = 'true'
26
+ end
27
+ end
28
+
29
+ end
@@ -254,6 +254,10 @@ def xml_from_sections(input)
254
254
  end
255
255
  end
256
256
 
257
+ if o = ps[:'autolink-iref-cleanup']
258
+ $options.autolink_iref_cleanup = o
259
+ end
260
+
257
261
  coding_override = ps.has(:coding)
258
262
  smart_quotes = ps[:smart_quotes]
259
263
  typographic_symbols = ps[:typographic_symbols]
@@ -570,6 +574,15 @@ if $options.v3_used && !$options.v3
570
574
  $options.v3 = true
571
575
  end
572
576
 
577
+ if $options.autolink_iref_cleanup
578
+ require 'rexml/document'
579
+ require 'kramdown-rfc/autolink-iref-cleanup'
580
+
581
+ d = REXML::Document.new(output)
582
+ autolink_iref_cleanup(d)
583
+ output = d.to_s
584
+ end
585
+
573
586
  if coding_override
574
587
  output = output.encode(Encoding.find(coding_override), fallback: FALLBACK)
575
588
  end
@@ -14,7 +14,7 @@ raise "sorry, 1.8 was last decade" unless RUBY_VERSION >= '1.9'
14
14
 
15
15
  gem 'kramdown', '~> 2.4.0'
16
16
  require 'kramdown'
17
- my_span_elements = %w{list figure xref eref iref cref spanx vspace}
17
+ my_span_elements = %w{list xref eref iref cref spanx vspace}
18
18
  Kramdown::Parser::Html::Constants::HTML_SPAN_ELEMENTS.concat my_span_elements
19
19
 
20
20
  require 'rexml/parsers/baseparser'
@@ -37,7 +37,7 @@ module Kramdown
37
37
  def replace_abbreviations(el, regexps = nil)
38
38
  unless regexps # DUPLICATED AND MODIFIED CODE FROM UPSTREAM, CHECK ON UPSTREAM UPGRADE
39
39
  sorted_abbrevs = @root.options[:abbrev_defs].keys.sort {|a, b| b.length <=> a.length }
40
- regexps = [Regexp.union(*sorted_abbrevs.map {|k|
40
+ regexps = [Regexp.union(*sorted_abbrevs.map {|k|
41
41
  /#{Regexp.escape(k).gsub(/\\\s/, "[\\s\\p{Z}]+").force_encoding(Encoding::UTF_8)}/})]
42
42
  # warn regexps.inspect
43
43
  regexps << /(?=(?:\W|^)#{regexps.first}(?!\w))/ # regexp should only match on word boundaries
@@ -721,7 +721,7 @@ COLORS
721
721
  if sl = el.attr.delete('slugifiedName') # could do general name- play
722
722
  attrstring = html_attributes({'slugifiedName' => sl})
723
723
  end
724
- # noabbrev: true -- Workaround for https://trac.ietf.org/trac/xml2rfc/ticket/683
724
+ # noabbrev: true -- Workaround for https://github.com/ietf-tools/xml2rfc/issues/683
725
725
  nm = inner(el, indent, opts.merge(noabbrev: true))
726
726
  if ttl = el.attr['title']
727
727
  warn "*** Section has two titles: >>#{ttl}<< and >>#{nm}<<"
@@ -1057,7 +1057,7 @@ COLORS
1057
1057
  def self.bcp_std_ref(t, n)
1058
1058
  warn "*** #{t} anchors not supported in v2 format" unless $options.v3
1059
1059
  [name = "reference.#{t}.#{"%04d" % n.to_i}.xml",
1060
- "#{XML_RESOURCE_ORG_PREFIX}/bibxml-rfcsubseries-new/#{name}"] # FOR NOW
1060
+ "#{XML_RESOURCE_ORG_PREFIX}/bibxml-rfcsubseries/#{name}"] # FOR NOW
1061
1061
  end
1062
1062
 
1063
1063
  # [subdirectory name, cache ttl in seconds, does it provide for ?anchor=]
@@ -1094,7 +1094,8 @@ COLORS
1094
1094
  }
1095
1095
 
1096
1096
  # XML_RESOURCE_ORG_HOST = ENV["XML_RESOURCE_ORG_HOST"] || "xml.resource.org"
1097
- XML_RESOURCE_ORG_HOST = ENV["XML_RESOURCE_ORG_HOST"] || "xml2rfc.tools.ietf.org"
1097
+ # XML_RESOURCE_ORG_HOST = ENV["XML_RESOURCE_ORG_HOST"] || "xml2rfc.tools.ietf.org"
1098
+ XML_RESOURCE_ORG_HOST = ENV["XML_RESOURCE_ORG_HOST"] || "bib.ietf.org"
1098
1099
  XML_RESOURCE_ORG_PREFIX = ENV["XML_RESOURCE_ORG_PREFIX"] ||
1099
1100
  "https://#{XML_RESOURCE_ORG_HOST}/public/rfc"
1100
1101
  KRAMDOWN_USE_TOOLS_SERVER = ENV["KRAMDOWN_USE_TOOLS_SERVER"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kramdown-rfc2629
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.9
4
+ version: 1.6.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-05 00:00:00.000000000 Z
11
+ date: 2022-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -78,6 +78,7 @@ executables:
78
78
  - kdrfc
79
79
  - kramdown-rfc-cache-i-d-bibxml
80
80
  - kramdown-rfc-cache-subseries-bibxml
81
+ - kramdown-rfc-autolink-iref-cleanup
81
82
  - de-gfm
82
83
  extensions: []
83
84
  extra_rdoc_files: []
@@ -88,7 +89,7 @@ files:
88
89
  - bin/doilit
89
90
  - bin/kdrfc
90
91
  - bin/kramdown-rfc
91
- - bin/kramdown-rfc-autolink-iref-cleanup.rb
92
+ - bin/kramdown-rfc-autolink-iref-cleanup
92
93
  - bin/kramdown-rfc-cache-i-d-bibxml
93
94
  - bin/kramdown-rfc-cache-subseries-bibxml
94
95
  - bin/kramdown-rfc-extract-markdown
@@ -97,6 +98,7 @@ files:
97
98
  - data/kramdown-rfc2629.erb
98
99
  - data/math.json
99
100
  - kramdown-rfc2629.gemspec
101
+ - lib/kramdown-rfc/autolink-iref-cleanup.rb
100
102
  - lib/kramdown-rfc/command.rb
101
103
  - lib/kramdown-rfc/erb.rb
102
104
  - lib/kramdown-rfc/gzip-clone.rb
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require 'rexml/document'
4
-
5
- d = REXML::Document.new(ARGF.read)
6
-
7
- d.root.get_elements("//section[@anchor]").each do |sec|
8
- anchor = sec['anchor']
9
- irefs = {}
10
- sec.get_elements(".//xref[@target='#{anchor}'][@format='none']").each do |xr|
11
- ne = xr.next_element
12
- if ne && ne.name == "iref" && (item = ne['item'])
13
- irefs[item] = ne['subitem'] # XXX one subitem only
14
- ne.remove
15
- chi = xr.children
16
- chi[1..-1].reverse.each do |ch|
17
- xr.parent.insert_after(xr, ch)
18
- end
19
- xr.replace_with(chi[0])
20
- end
21
- end
22
- irefs.each do |k, v|
23
- sec.insert_after(sec.get_elements("name").first,
24
- e = REXML::Element.new("iref", sec))
25
- e.attributes["item"] = k
26
- e.attributes["subitem"] = v
27
- e.attributes["primary"] = 'true'
28
- end
29
- end
30
-
31
- puts d.to_s