kramdown-rfc2629 1.6.24 → 1.6.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ba33d9f40d0de90b356fe771cfc8b4dcafb576bf412d5229b0ec2de531fbcd5a
4
- data.tar.gz: 532cd2d8ac24eab2fb930198e4b57a6e8ec9fc5074b7dd5b418985784f5bd8b7
3
+ metadata.gz: fd317f54435256ae6bf63de8753a3f544b63caa1922cadf008f550f242071a48
4
+ data.tar.gz: f5c44616bf9debf61856c692c61125da531d966e8f33331fce936ea6efbac6fd
5
5
  SHA512:
6
- metadata.gz: ccda242ccfda63d8d166bfd386ff38ddfd16ad0b83ef969111317c4d5b1330af861815468c88eaa6c1940a85b24a601b8a531b075d210d81ef6b81c3993a26e0
7
- data.tar.gz: dd75cc152c578abc018321db4f840dc5fc7062cd42172aed2f40af7c276454d9ebecc7db085efd37fb751f0f9fa132764d3eb586f889f2a2f52aecf07b7a45cb
6
+ metadata.gz: f895cbca96c9bccca39afb5fbd83b6815ecfcb1a43b9287f7a1bb28de4cc765543cc8f2e9b62564bb71c03efc7651d70b5a5ad68f913888d0657ee8605244546
7
+ data.tar.gz: a73cb2f7a94d14e7d08593ff2562f9f1cd52aaab969ccf025af66452ebae22ff8a7cb8c52551c1fde43ac5604011c1363ab501ce251a0094264bcadbb3798c55
data/README.md CHANGED
@@ -33,7 +33,7 @@ To use kramdown-rfc, you'll need Ruby (at least version 2.3, but
33
33
  preferably a current version), and maybe
34
34
  [XML2RFC][] if you want to see the fruits of your work.
35
35
 
36
- kramdown-rfc mydraft.mkd >mydraft.xml
36
+ kramdown-rfc mydraft.md >mydraft.xml
37
37
  xml2rfc mydraft.xml
38
38
 
39
39
  (The most popular file name extension that IETF people have for
@@ -43,11 +43,11 @@ descriptions here, any extension such as .mkd will do, too.)
43
43
  A more brief interface for both calling kramdown-rfc and XML2RFC
44
44
  is provided by `kdrfc`:
45
45
 
46
- kdrfc mydraft.mkd
46
+ kdrfc mydraft.md
47
47
 
48
48
  `kdrfc` can also use a remote installation of XML2RFC if needed:
49
49
 
50
- kdrfc -r mydraft.mkd
50
+ kdrfc -r mydraft.md
51
51
 
52
52
  # Versions of RFCXML
53
53
 
data/bin/echars CHANGED
@@ -1,17 +1,39 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'unicode/name'
3
+ require 'unicode/scripts'
4
+ require 'unicode/blocks'
5
+ require 'json'
6
+
7
+ def readable(c)
8
+ j = c.to_json
9
+ if j.size == 3
10
+ j[1...-1]
11
+ else
12
+ j
13
+ end
14
+ end
15
+
3
16
  hist = Hash.new(0)
4
17
  ARGF.read.each_char do |c|
5
18
  hist[c] += 1 unless c.ord.between?(32, 126)
6
19
  end
7
20
  hist.delete("\n")
8
- cl = "*** Latin"
9
- hist.keys.sort.partition {|c| c =~ /\A\p{Latin}\z/}.each do |l|
10
- puts cl unless l.empty?
21
+ hist.keys.sort.group_by {|c| Unicode::Blocks.block(c)}.each do |block, l|
22
+ scripts = Set[]
23
+ l.each do |c|
24
+ scripts << Unicode::Scripts.scripts(c)
25
+ end
26
+ if scripts.size == 1
27
+ puts "*** #{block} (#{scripts.join})"
28
+ else
29
+ puts "*** #{block}"
30
+ end
11
31
  l.each do |c|
12
- puts "#{c}: U+#{"%04X %4d" % [c.ord, hist[c]]
32
+ s = "#{readable(c)}: U+#{"%04X %4d" % [c.ord, hist[c]]
13
33
  } #{Unicode::Name.correct(c) ||
14
- Unicode::Name.label(c)}"
34
+ Unicode::Name.label(c)
35
+ }"
36
+ s << " (#{Unicode::Scripts.scripts(c).join(", ")})" if scripts.size != 1
37
+ puts s
15
38
  end
16
- cl = "*** Non-Latin"
17
39
  end
data/bin/kdrfc CHANGED
@@ -10,7 +10,7 @@ kdrfc.options.txt = true # default
10
10
 
11
11
  op = OptionParser.new do |opts|
12
12
  opts.banner = <<BANNER
13
- Usage: kdrfc [options] file.md|file.mkd|file.xml
13
+ Usage: kdrfc [options] file.md|file.xml
14
14
  Version: #{KDRFC_VERSION}
15
15
  BANNER
16
16
  opts.on("-V", "--version", "Show version and exit") do |v|
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.6.24'
3
+ s.version = '1.6.26'
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.}
@@ -9,6 +9,9 @@ spec = Gem::Specification.new do |s|
9
9
  s.add_dependency('certified', '~> 1.0')
10
10
  s.add_dependency('json_pure', '~> 2.0')
11
11
  s.add_dependency('unicode-name', '~> 1.0')
12
+ s.add_dependency('unicode-blocks', '~> 1.0')
13
+ s.add_dependency('unicode-scripts', '~> 1.0')
14
+ s.add_dependency('net-http-persistent', '~> 4.0')
12
15
  s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kdrfc bin/kramdown-rfc bin/kramdown-rfc2629 bin/doilit bin/echars 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)
13
16
  s.require_path = 'lib'
14
17
  s.executables = ['kramdown-rfc', 'kramdown-rfc2629', 'doilit', 'echars',
@@ -490,7 +490,7 @@ require 'ostruct'
490
490
  $options ||= OpenStruct.new
491
491
  op = OptionParser.new do |opts|
492
492
  opts.banner = <<BANNER
493
- Usage: kramdown-rfc2629 [options] file.md|file.mkd > file.xml
493
+ Usage: kramdown-rfc2629 [options] [file.md] > file.xml
494
494
  Version: #{KDRFC_VERSION}
495
495
  BANNER
496
496
  opts.on("-V", "--version", "Show version and exit") do |v|
@@ -1,7 +1,9 @@
1
1
  require 'uri'
2
2
  require 'net/http'
3
+ require 'net/http/persistent'
3
4
  require 'open3'
4
5
  require 'ostruct'
6
+ require 'json'
5
7
 
6
8
  module KramdownRFC
7
9
 
@@ -65,50 +67,78 @@ def process_xml_locally(input, output, *flags)
65
67
  end
66
68
  end
67
69
 
70
+ # curl https://author-tools.ietf.org/api/render/text -X POST -F "file=@..."
68
71
  XML2RFC_WEBSERVICE = ENV["KRAMDOWN_XML2RFC_WEBSERVICE"] ||
69
- 'http://xml2rfc.tools.ietf.org/cgi-bin/xml2rfc-dev.cgi'
72
+ 'https://author-tools.ietf.org/api/render/'
70
73
 
71
74
  MODE_AS_FORMAT = {
72
- nil => { # v2
73
- "--text" => "txt/ascii",
74
- "--html" => "html/ascii",
75
- },
76
- true => { # v3
77
- "--text" => "txt/v3ascii",
78
- "--html" => "html/v3ascii",
79
- "--v2v3" => "v3xml/ascii",
80
- }
75
+ "--text" => "text",
76
+ "--html" => "html",
77
+ "--v2v3" => "xml",
78
+ "--pdf" => "pdf",
81
79
  }
82
80
 
83
- # XXX move to author-tools@ietf.org API
81
+ def checked_json(t)
82
+ begin
83
+ JSON.load(t)
84
+ rescue => e
85
+ raise IOError.new("*** JSON result: #{e.detailed_message}, #{diag}")
86
+ end
87
+ end
88
+
89
+ def persistent_http
90
+ $http ||= Net::HTTP::Persistent.new name: 'kramdown-rfc'
91
+ end
92
+
84
93
  def process_xml_remotely(input, output, *flags)
85
- warn "* converting remotely from xml #{input} to txt #{output}" if @options.verbose
94
+
86
95
  format = flags[0] || "--text"
87
- # warn [:V3, @options.v3].inspect
88
- maf = MODE_AS_FORMAT[@options.v3][format]
96
+ warn "* converting remotely from xml #{input} to #{format} #{output}" if @options.verbose
97
+ maf = MODE_AS_FORMAT[format]
89
98
  unless maf
90
- raise ArgumentError.new("*** don't know how to convert remotely from xml #{input} to txt #{output}")
99
+ raise ArgumentError.new("*** don't know how to convert remotely from xml #{input} to #{format} #{output}")
91
100
  end
92
- url = URI(XML2RFC_WEBSERVICE)
101
+ url = URI(XML2RFC_WEBSERVICE + maf)
93
102
  req = Net::HTTP::Post.new(url)
94
- form = [["modeAsFormat", maf],
95
- ["type", "binary"],
96
- ["input", File.open(input),
103
+ form = [["file", File.open(input),
97
104
  {filename: "input.xml",
98
105
  content_type: "text/plain"}]]
99
106
  diag = ["url/form: ", url, form].inspect
100
107
  req.set_form(form, 'multipart/form-data')
101
- res = Net::HTTP::start(url.hostname, url.port,
102
- :use_ssl => url.scheme == 'https' ) {|http|
103
- http.request(req)
104
- }
108
+ warn "* requesting at #{url}" if @options.verbose
109
+ t0 = Time.now
110
+ res = persistent_http.request(url, req)
111
+ warn "* elapsed time: #{Time.now - t0}" if @options.verbose
105
112
  case res
113
+ when Net::HTTPBadRequest
114
+ result = checked_json(res.body)
115
+ raise IOError.new("*** Remote Error: #{result["error"]}")
106
116
  when Net::HTTPOK
107
117
  case res.content_type
108
- when 'application/octet-stream'
118
+ when 'application/json'
109
119
  if res.body == ''
110
120
  raise IOError.new("*** HTTP response is empty with status #{res.code}, not written")
111
121
  end
122
+ # warn "* res.body #{res.body}" if @options.verbose
123
+ result = checked_json(res.body)
124
+ if logs = result["logs"]
125
+ if errors = logs["errors"]
126
+ errors.each do |err|
127
+ warn("*** Error: #{err}")
128
+ end
129
+ end
130
+ if warnings = logs["warnings"]
131
+ warnings.each do |w|
132
+ warn("** Warning: #{w}")
133
+ end
134
+ end
135
+ end
136
+ raise IOError.new("*** No useful result from remote") unless result["url"]
137
+ res = persistent_http.request(URI(result["url"]))
138
+ warn "* result content type #{res.content_type}" if @options.verbose
139
+ if res.body == ''
140
+ raise IOError.new("*** Second HTTP response is empty with status #{res.code}, not written")
141
+ end
112
142
  File.open(output, "w") do |fo|
113
143
  fo.print(res.body)
114
144
  end
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.24
4
+ version: 1.6.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-22 00:00:00.000000000 Z
11
+ date: 2023-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -80,6 +80,48 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: unicode-blocks
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: unicode-scripts
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: net-http-persistent
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '4.0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '4.0'
83
125
  description: |-
84
126
  An RFCXML (RFC 799x) generating backend for Thomas Leitner's
85
127
  "kramdown" markdown parser. Mostly useful for RFC writers.
@@ -143,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
185
  - !ruby/object:Gem::Version
144
186
  version: '0'
145
187
  requirements: []
146
- rubygems_version: 3.4.2
188
+ rubygems_version: 3.4.6
147
189
  signing_key:
148
190
  specification_version: 4
149
191
  summary: Kramdown extension for generating RFCXML (RFC 799x).