commonmarker 0.23.10 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +1192 -0
  3. data/Cargo.toml +7 -0
  4. data/README.md +145 -203
  5. data/ext/commonmarker/Cargo.toml +15 -0
  6. data/ext/commonmarker/extconf.rb +3 -6
  7. data/ext/commonmarker/src/lib.rs +153 -0
  8. data/ext/commonmarker/src/options.rs +144 -0
  9. data/ext/commonmarker/src/plugins/syntax_highlighting.rs +74 -0
  10. data/ext/commonmarker/src/plugins.rs +3 -0
  11. data/ext/commonmarker/src/utils.rs +8 -0
  12. data/lib/commonmarker/config.rb +85 -40
  13. data/lib/commonmarker/constants.rb +7 -0
  14. data/lib/commonmarker/extension.rb +14 -0
  15. data/lib/commonmarker/renderer.rb +1 -127
  16. data/lib/commonmarker/utils.rb +22 -0
  17. data/lib/commonmarker/version.rb +2 -2
  18. data/lib/commonmarker.rb +14 -29
  19. metadata +35 -187
  20. data/Rakefile +0 -109
  21. data/bin/commonmarker +0 -118
  22. data/commonmarker.gemspec +0 -38
  23. data/ext/commonmarker/arena.c +0 -104
  24. data/ext/commonmarker/autolink.c +0 -508
  25. data/ext/commonmarker/autolink.h +0 -8
  26. data/ext/commonmarker/blocks.c +0 -1622
  27. data/ext/commonmarker/buffer.c +0 -278
  28. data/ext/commonmarker/buffer.h +0 -116
  29. data/ext/commonmarker/case_fold_switch.inc +0 -4327
  30. data/ext/commonmarker/chunk.h +0 -135
  31. data/ext/commonmarker/cmark-gfm-core-extensions.h +0 -54
  32. data/ext/commonmarker/cmark-gfm-extension_api.h +0 -737
  33. data/ext/commonmarker/cmark-gfm-extensions_export.h +0 -42
  34. data/ext/commonmarker/cmark-gfm.h +0 -833
  35. data/ext/commonmarker/cmark-gfm_export.h +0 -42
  36. data/ext/commonmarker/cmark-gfm_version.h +0 -7
  37. data/ext/commonmarker/cmark.c +0 -55
  38. data/ext/commonmarker/cmark_ctype.c +0 -44
  39. data/ext/commonmarker/cmark_ctype.h +0 -33
  40. data/ext/commonmarker/commonmark.c +0 -514
  41. data/ext/commonmarker/commonmarker.c +0 -1308
  42. data/ext/commonmarker/commonmarker.h +0 -16
  43. data/ext/commonmarker/config.h +0 -76
  44. data/ext/commonmarker/core-extensions.c +0 -27
  45. data/ext/commonmarker/entities.inc +0 -2138
  46. data/ext/commonmarker/ext_scanners.c +0 -879
  47. data/ext/commonmarker/ext_scanners.h +0 -24
  48. data/ext/commonmarker/footnotes.c +0 -63
  49. data/ext/commonmarker/footnotes.h +0 -27
  50. data/ext/commonmarker/houdini.h +0 -57
  51. data/ext/commonmarker/houdini_href_e.c +0 -100
  52. data/ext/commonmarker/houdini_html_e.c +0 -66
  53. data/ext/commonmarker/houdini_html_u.c +0 -149
  54. data/ext/commonmarker/html.c +0 -502
  55. data/ext/commonmarker/html.h +0 -27
  56. data/ext/commonmarker/inlines.c +0 -1788
  57. data/ext/commonmarker/inlines.h +0 -29
  58. data/ext/commonmarker/iterator.c +0 -159
  59. data/ext/commonmarker/iterator.h +0 -26
  60. data/ext/commonmarker/latex.c +0 -468
  61. data/ext/commonmarker/linked_list.c +0 -37
  62. data/ext/commonmarker/man.c +0 -274
  63. data/ext/commonmarker/map.c +0 -129
  64. data/ext/commonmarker/map.h +0 -44
  65. data/ext/commonmarker/node.c +0 -1045
  66. data/ext/commonmarker/node.h +0 -167
  67. data/ext/commonmarker/parser.h +0 -59
  68. data/ext/commonmarker/plaintext.c +0 -218
  69. data/ext/commonmarker/plugin.c +0 -36
  70. data/ext/commonmarker/plugin.h +0 -34
  71. data/ext/commonmarker/references.c +0 -43
  72. data/ext/commonmarker/references.h +0 -26
  73. data/ext/commonmarker/registry.c +0 -63
  74. data/ext/commonmarker/registry.h +0 -24
  75. data/ext/commonmarker/render.c +0 -213
  76. data/ext/commonmarker/render.h +0 -62
  77. data/ext/commonmarker/scanners.c +0 -14056
  78. data/ext/commonmarker/scanners.h +0 -70
  79. data/ext/commonmarker/scanners.re +0 -341
  80. data/ext/commonmarker/strikethrough.c +0 -167
  81. data/ext/commonmarker/strikethrough.h +0 -9
  82. data/ext/commonmarker/syntax_extension.c +0 -149
  83. data/ext/commonmarker/syntax_extension.h +0 -34
  84. data/ext/commonmarker/table.c +0 -917
  85. data/ext/commonmarker/table.h +0 -12
  86. data/ext/commonmarker/tagfilter.c +0 -60
  87. data/ext/commonmarker/tagfilter.h +0 -8
  88. data/ext/commonmarker/tasklist.c +0 -156
  89. data/ext/commonmarker/tasklist.h +0 -8
  90. data/ext/commonmarker/utf8.c +0 -317
  91. data/ext/commonmarker/utf8.h +0 -35
  92. data/ext/commonmarker/xml.c +0 -182
  93. data/lib/commonmarker/node/inspect.rb +0 -47
  94. data/lib/commonmarker/node.rb +0 -83
  95. data/lib/commonmarker/renderer/html_renderer.rb +0 -256
metadata CHANGED
@@ -1,262 +1,110 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commonmarker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.10
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen Torikian
8
8
  - Ashe Connor
9
9
  autorequire:
10
- bindir: bin
10
+ bindir: exe
11
11
  cert_chain: []
12
- date: 2023-07-31 00:00:00.000000000 Z
12
+ date: 2024-01-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: awesome_print
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :development
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: json
15
+ name: rb_sys
30
16
  requirement: !ruby/object:Gem::Requirement
31
17
  requirements:
32
18
  - - "~>"
33
19
  - !ruby/object:Gem::Version
34
- version: '2.3'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '2.3'
42
- - !ruby/object:Gem::Dependency
43
- name: minitest
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: '5.6'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: '5.6'
56
- - !ruby/object:Gem::Dependency
57
- name: minitest-focus
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '1.1'
63
- type: :development
20
+ version: '0.9'
21
+ type: :runtime
64
22
  prerelease: false
65
23
  version_requirements: !ruby/object:Gem::Requirement
66
24
  requirements:
67
25
  - - "~>"
68
26
  - !ruby/object:Gem::Version
69
- version: '1.1'
27
+ version: '0.9'
28
+ force_ruby_platform: false
70
29
  - !ruby/object:Gem::Dependency
71
30
  name: rake
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
84
- - !ruby/object:Gem::Dependency
85
- name: rake-compiler
86
31
  requirement: !ruby/object:Gem::Requirement
87
32
  requirements:
88
33
  - - "~>"
89
34
  - !ruby/object:Gem::Version
90
- version: '0.9'
35
+ version: '13.0'
91
36
  type: :development
92
37
  prerelease: false
93
38
  version_requirements: !ruby/object:Gem::Requirement
94
39
  requirements:
95
40
  - - "~>"
96
41
  - !ruby/object:Gem::Version
97
- version: '0.9'
42
+ version: '13.0'
98
43
  - !ruby/object:Gem::Dependency
99
- name: rdoc
44
+ name: rake-compiler
100
45
  requirement: !ruby/object:Gem::Requirement
101
46
  requirements:
102
47
  - - "~>"
103
48
  - !ruby/object:Gem::Version
104
- version: '6.2'
49
+ version: '1.2'
105
50
  type: :development
106
51
  prerelease: false
107
52
  version_requirements: !ruby/object:Gem::Requirement
108
53
  requirements:
109
54
  - - "~>"
110
55
  - !ruby/object:Gem::Version
111
- version: '6.2'
112
- - !ruby/object:Gem::Dependency
113
- name: rubocop
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: rubocop-standard
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: '0'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: '0'
140
- description: A fast, safe, extensible parser for CommonMark. This wraps the official
141
- libcmark library.
56
+ version: '1.2'
57
+ description: A fast, safe, extensible parser for CommonMark. This wraps the comrak
58
+ Rust crate.
142
59
  email:
143
- executables:
144
- - commonmarker
60
+ executables: []
145
61
  extensions:
146
62
  - ext/commonmarker/extconf.rb
147
63
  extra_rdoc_files: []
148
64
  files:
65
+ - Cargo.lock
66
+ - Cargo.toml
149
67
  - LICENSE.txt
150
68
  - README.md
151
- - Rakefile
152
- - bin/commonmarker
153
- - commonmarker.gemspec
154
- - ext/commonmarker/arena.c
155
- - ext/commonmarker/autolink.c
156
- - ext/commonmarker/autolink.h
157
- - ext/commonmarker/blocks.c
158
- - ext/commonmarker/buffer.c
159
- - ext/commonmarker/buffer.h
160
- - ext/commonmarker/case_fold_switch.inc
161
- - ext/commonmarker/chunk.h
162
- - ext/commonmarker/cmark-gfm-core-extensions.h
163
- - ext/commonmarker/cmark-gfm-extension_api.h
164
- - ext/commonmarker/cmark-gfm-extensions_export.h
165
- - ext/commonmarker/cmark-gfm.h
166
- - ext/commonmarker/cmark-gfm_export.h
167
- - ext/commonmarker/cmark-gfm_version.h
168
- - ext/commonmarker/cmark.c
169
- - ext/commonmarker/cmark_ctype.c
170
- - ext/commonmarker/cmark_ctype.h
171
- - ext/commonmarker/commonmark.c
172
- - ext/commonmarker/commonmarker.c
173
- - ext/commonmarker/commonmarker.h
174
- - ext/commonmarker/config.h
175
- - ext/commonmarker/core-extensions.c
176
- - ext/commonmarker/entities.inc
177
- - ext/commonmarker/ext_scanners.c
178
- - ext/commonmarker/ext_scanners.h
69
+ - ext/commonmarker/Cargo.toml
179
70
  - ext/commonmarker/extconf.rb
180
- - ext/commonmarker/footnotes.c
181
- - ext/commonmarker/footnotes.h
182
- - ext/commonmarker/houdini.h
183
- - ext/commonmarker/houdini_href_e.c
184
- - ext/commonmarker/houdini_html_e.c
185
- - ext/commonmarker/houdini_html_u.c
186
- - ext/commonmarker/html.c
187
- - ext/commonmarker/html.h
188
- - ext/commonmarker/inlines.c
189
- - ext/commonmarker/inlines.h
190
- - ext/commonmarker/iterator.c
191
- - ext/commonmarker/iterator.h
192
- - ext/commonmarker/latex.c
193
- - ext/commonmarker/linked_list.c
194
- - ext/commonmarker/man.c
195
- - ext/commonmarker/map.c
196
- - ext/commonmarker/map.h
197
- - ext/commonmarker/node.c
198
- - ext/commonmarker/node.h
199
- - ext/commonmarker/parser.h
200
- - ext/commonmarker/plaintext.c
201
- - ext/commonmarker/plugin.c
202
- - ext/commonmarker/plugin.h
203
- - ext/commonmarker/references.c
204
- - ext/commonmarker/references.h
205
- - ext/commonmarker/registry.c
206
- - ext/commonmarker/registry.h
207
- - ext/commonmarker/render.c
208
- - ext/commonmarker/render.h
209
- - ext/commonmarker/scanners.c
210
- - ext/commonmarker/scanners.h
211
- - ext/commonmarker/scanners.re
212
- - ext/commonmarker/strikethrough.c
213
- - ext/commonmarker/strikethrough.h
214
- - ext/commonmarker/syntax_extension.c
215
- - ext/commonmarker/syntax_extension.h
216
- - ext/commonmarker/table.c
217
- - ext/commonmarker/table.h
218
- - ext/commonmarker/tagfilter.c
219
- - ext/commonmarker/tagfilter.h
220
- - ext/commonmarker/tasklist.c
221
- - ext/commonmarker/tasklist.h
222
- - ext/commonmarker/utf8.c
223
- - ext/commonmarker/utf8.h
224
- - ext/commonmarker/xml.c
71
+ - ext/commonmarker/src/lib.rs
72
+ - ext/commonmarker/src/options.rs
73
+ - ext/commonmarker/src/plugins.rs
74
+ - ext/commonmarker/src/plugins/syntax_highlighting.rs
75
+ - ext/commonmarker/src/utils.rs
225
76
  - lib/commonmarker.rb
226
77
  - lib/commonmarker/config.rb
227
- - lib/commonmarker/node.rb
228
- - lib/commonmarker/node/inspect.rb
78
+ - lib/commonmarker/constants.rb
79
+ - lib/commonmarker/extension.rb
229
80
  - lib/commonmarker/renderer.rb
230
- - lib/commonmarker/renderer/html_renderer.rb
81
+ - lib/commonmarker/utils.rb
231
82
  - lib/commonmarker/version.rb
232
83
  homepage: https://github.com/gjtorikian/commonmarker
233
84
  licenses:
234
85
  - MIT
235
86
  metadata:
87
+ allowed_push_host: https://rubygems.org
88
+ funding_uri: https://github.com/sponsors/gjtorikian/
89
+ source_code_uri: https://github.com/gjtorikian/commonmarker
236
90
  rubygems_mfa_required: 'true'
237
91
  post_install_message:
238
- rdoc_options:
239
- - "-x"
240
- - ext/commonmarker/cmark/.*
92
+ rdoc_options: []
241
93
  require_paths:
242
94
  - lib
243
- - ext
244
95
  required_ruby_version: !ruby/object:Gem::Requirement
245
96
  requirements:
246
97
  - - ">="
247
98
  - !ruby/object:Gem::Version
248
- version: '2.6'
249
- - - "<"
250
- - !ruby/object:Gem::Version
251
- version: '4.0'
99
+ version: 3.1.0
252
100
  required_rubygems_version: !ruby/object:Gem::Requirement
253
101
  requirements:
254
102
  - - ">="
255
103
  - !ruby/object:Gem::Version
256
- version: '0'
104
+ version: 3.3.22
257
105
  requirements: []
258
- rubygems_version: 3.3.26
106
+ rubygems_version: 3.5.3
259
107
  signing_key:
260
108
  specification_version: 4
261
- summary: CommonMark parser and renderer. Written in C, wrapped in Ruby.
109
+ summary: CommonMark parser and renderer. Written in Rust, wrapped in Ruby.
262
110
  test_files: []
data/Rakefile DELETED
@@ -1,109 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "date"
4
- require "rake/clean"
5
- require "rake/extensiontask"
6
- require "digest/md5"
7
-
8
- host_os = RbConfig::CONFIG["host_os"]
9
- require "devkit" if host_os == "mingw32"
10
-
11
- task default: [:test]
12
-
13
- # Gem Spec
14
- gem_spec = Gem::Specification.load("commonmarker.gemspec")
15
-
16
- # Ruby Extension
17
- Rake::ExtensionTask.new("commonmarker", gem_spec) do |ext|
18
- ext.lib_dir = File.join("lib", "commonmarker")
19
- end
20
-
21
- # Packaging
22
- require "bundler/gem_tasks"
23
-
24
- # Testing
25
- require "rake/testtask"
26
-
27
- Rake::TestTask.new("test:unit") do |t|
28
- t.libs << "lib"
29
- t.libs << "test"
30
- t.pattern = "test/test_*.rb"
31
- t.verbose = true
32
- t.warning = false
33
- end
34
-
35
- desc "Run unit tests"
36
- task "test:unit" => :compile
37
-
38
- desc "Run unit and conformance tests"
39
- task test: ["test:unit"]
40
-
41
- require "rubocop/rake_task"
42
-
43
- RuboCop::RakeTask.new(:rubocop)
44
-
45
- desc "Run benchmarks"
46
- task :benchmark do
47
- if ENV["FETCH_PROGIT"]
48
- %x(rm -rf test/progit)
49
- %x(git clone https://github.com/progit/progit.git test/progit)
50
- langs = ["ar", "az", "be", "ca", "cs", "de", "en", "eo", "es", "es-ni", "fa", "fi", "fr", "hi", "hu", "id", "it", "ja", "ko", "mk", "nl", "no-nb", "pl", "pt-br", "ro", "ru", "sr", "th", "tr", "uk", "vi", "zh", "zh-tw"]
51
- langs.each do |lang|
52
- %x(cat test/progit/#{lang}/*/*.markdown >> test/benchinput.md)
53
- end
54
- end
55
- $LOAD_PATH.unshift("lib")
56
- load "test/benchmark.rb"
57
- end
58
-
59
- desc "Match C style of cmark"
60
- task :format do
61
- sh "clang-format -style llvm -i ext/commonmarker/*.c ext/commonmarker/*.h"
62
- end
63
-
64
- # Documentation
65
- require "rdoc/task"
66
-
67
- desc "Generate API documentation"
68
- RDoc::Task.new do |rd|
69
- rd.rdoc_dir = "docs"
70
- rd.main = "README.md"
71
- rd.rdoc_files.include("README.md", "lib/**/*.rb", "ext/commonmarker/commonmarker.c")
72
-
73
- rd.options << "--markup tomdoc"
74
- rd.options << "--inline-source"
75
- rd.options << "--line-numbers"
76
- rd.options << "--all"
77
- rd.options << "--fileboxes"
78
- end
79
-
80
- desc "Generate the documentation and run a web server"
81
- task serve: [:rdoc] do
82
- require "webrick"
83
-
84
- puts "Navigate to http://localhost:3000 to see the docs"
85
-
86
- server = WEBrick::HTTPServer.new(Port: 3000)
87
- server.mount("/", WEBrick::HTTPServlet::FileHandler, "docs")
88
- trap("INT") { server.stop }
89
- server.start
90
- end
91
-
92
- desc "Generate and publish docs to gh-pages"
93
- task publish: [:rdoc] do
94
- require "tmpdir"
95
- require "shellwords"
96
-
97
- Dir.mktmpdir do |tmp|
98
- system "mv docs/* #{tmp}"
99
- system "git checkout origin/gh-pages"
100
- system "rm -rf *"
101
- system "mv #{tmp}/* ."
102
- message = Shellwords.escape("Site updated at #{Time.now.utc}")
103
- system "git add ."
104
- system "git commit -am #{message}"
105
- system "git push origin gh-pages --force"
106
- system "git checkout master"
107
- system "echo yolo"
108
- end
109
- end
data/bin/commonmarker DELETED
@@ -1,118 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'optparse'
5
-
6
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
7
- require 'commonmarker'
8
-
9
- root = File.expand_path('..', __dir__)
10
- $LOAD_PATH.unshift File.expand_path('lib', root)
11
-
12
- def parse_options
13
- options = Struct.new(:active_extensions, :active_parse_options, :active_render_options, :output_format, :renderer)
14
- .new([], [:DEFAULT], [:DEFAULT], :html)
15
- extensions = CommonMarker.extensions
16
- parse_options = CommonMarker::Config::OPTS.fetch(:parse)
17
- render_options = CommonMarker::Config::OPTS.fetch(:render)
18
- format_options = CommonMarker::Config::OPTS.fetch(:format)
19
-
20
- option_parser = OptionParser.new do |opts|
21
- opts.banner = 'Usage: commonmarker [--html-renderer] [--extension=EXTENSION]'
22
- opts.separator ' [--to=FORMAT]'
23
- opts.separator ' [--parse-option=OPTION]'
24
- opts.separator ' [--render-option=OPTION]'
25
- opts.separator ' [FILE..]'
26
- opts.separator ''
27
- opts.separator 'Convert one or more CommonMark files to HTML and write to standard output.'
28
- opts.separator 'If no FILE argument is provided, text will be read from STDIN.'
29
- opts.separator ''
30
-
31
- opts.on('--extension=EXTENSION', Array, 'Use EXTENSION for parsing and HTML output (unless --html-renderer is specified)') do |values|
32
- values.each do |value|
33
- if extensions.include?(value)
34
- options.active_extensions << value.to_sym
35
- else
36
- abort("extension '#{value}' not found")
37
- end
38
- end
39
- end
40
-
41
- opts.on('-h', '--help', 'Prints this help') do
42
- puts opts
43
- puts
44
- puts "Available formats: #{format_options.join(', ')}"
45
- puts "Available extentions: #{extensions.join(', ')}"
46
- puts "Available parse options: #{parse_options.keys.join(', ')}"
47
- puts "Available render options: #{render_options.keys.join(', ')}"
48
- puts
49
- puts 'See the README for more information on these.'
50
- exit
51
- end
52
-
53
- opts.on('-tFORMAT', '--to=FORMAT', String, 'Specify output FORMAT') do |value|
54
- value = value.to_sym
55
- if format_options.include?(value)
56
- options.output_format = value
57
- else
58
- abort("format '#{value}' not found")
59
- end
60
- end
61
-
62
- opts.on('--html-renderer', 'Use the HtmlRenderer renderer rather than the native C renderer (only valid when format is html)') do
63
- options.renderer = true
64
- end
65
-
66
- opts.on('--parse-option=OPTION', Array, 'OPTION passed during parsing') do |values|
67
- values.each do |value|
68
- if parse_options.key?(value.to_sym)
69
- options.active_parse_options << value.to_sym
70
- else
71
- abort("parse-option '#{value}' not found")
72
- end
73
- end
74
- end
75
-
76
- opts.on('--render-option=OPTION', Array, 'OPTION passed during rendering') do |values|
77
- values.each do |value|
78
- if render_options.key?(value.to_sym)
79
- options.active_render_options << value.to_sym
80
- else
81
- abort("render-option '#{value}' not found")
82
- end
83
- end
84
- end
85
-
86
- opts.on('-v', '--version', 'Version information') do
87
- puts "commonmarker #{CommonMarker::VERSION}"
88
- exit
89
- end
90
- end
91
-
92
- option_parser.parse!
93
-
94
- options
95
- end
96
-
97
- options = parse_options
98
-
99
- abort("format '#{options.output_format}' does not support using the HtmlRenderer renderer") if
100
- options.renderer && options.output_format != :html
101
-
102
- doc = CommonMarker.render_doc(ARGF.read, options.active_parse_options, options.active_extensions)
103
-
104
- case options.output_format
105
- when :html
106
- if options.renderer
107
- renderer = CommonMarker::HtmlRenderer.new(options: options.active_render_options, extensions: options.active_extensions)
108
- $stdout.write(renderer.render(doc))
109
- else
110
- $stdout.write(doc.to_html(options.active_render_options, options.active_extensions))
111
- end
112
- when :xml
113
- $stdout.write(doc.to_xml(options.active_render_options))
114
- when :commonmark
115
- $stdout.write(doc.to_commonmark(options.active_render_options))
116
- when :plaintext
117
- $stdout.write(doc.to_plaintext(options.active_render_options))
118
- end
data/commonmarker.gemspec DELETED
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- lib = File.expand_path("lib", __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require "commonmarker/version"
6
-
7
- Gem::Specification.new do |s|
8
- s.name = "commonmarker"
9
- s.version = CommonMarker::VERSION
10
- s.summary = "CommonMark parser and renderer. Written in C, wrapped in Ruby."
11
- s.description = "A fast, safe, extensible parser for CommonMark. This wraps the official libcmark library."
12
- s.authors = ["Garen Torikian", "Ashe Connor"]
13
- s.homepage = "https://github.com/gjtorikian/commonmarker"
14
- s.license = "MIT"
15
-
16
- s.files = ["LICENSE.txt", "README.md", "Rakefile", "commonmarker.gemspec", "bin/commonmarker"]
17
- s.files += Dir.glob("lib/**/*.rb")
18
- s.files += Dir.glob("ext/commonmarker/*.*")
19
- s.extensions = ["ext/commonmarker/extconf.rb"]
20
-
21
- s.executables = ["commonmarker"]
22
- s.require_paths = ["lib", "ext"]
23
- s.required_ruby_version = [">= 2.6", "< 4.0"]
24
-
25
- s.metadata["rubygems_mfa_required"] = "true"
26
-
27
- s.rdoc_options += ["-x", "ext/commonmarker/cmark/.*"]
28
-
29
- s.add_development_dependency("awesome_print")
30
- s.add_development_dependency("json", "~> 2.3")
31
- s.add_development_dependency("minitest", "~> 5.6")
32
- s.add_development_dependency("minitest-focus", "~> 1.1")
33
- s.add_development_dependency("rake")
34
- s.add_development_dependency("rake-compiler", "~> 0.9")
35
- s.add_development_dependency("rdoc", "~> 6.2")
36
- s.add_development_dependency("rubocop")
37
- s.add_development_dependency("rubocop-standard")
38
- end
@@ -1,104 +0,0 @@
1
- #include <stdlib.h>
2
- #include <string.h>
3
- #include <stdint.h>
4
- #include "cmark-gfm.h"
5
- #include "cmark-gfm-extension_api.h"
6
-
7
- static struct arena_chunk {
8
- size_t sz, used;
9
- uint8_t push_point;
10
- void *ptr;
11
- struct arena_chunk *prev;
12
- } *A = NULL;
13
-
14
- static struct arena_chunk *alloc_arena_chunk(size_t sz, struct arena_chunk *prev) {
15
- struct arena_chunk *c = (struct arena_chunk *)calloc(1, sizeof(*c));
16
- if (!c)
17
- abort();
18
- c->sz = sz;
19
- c->ptr = calloc(1, sz);
20
- if (!c->ptr)
21
- abort();
22
- c->prev = prev;
23
- return c;
24
- }
25
-
26
- void cmark_arena_push(void) {
27
- if (!A)
28
- return;
29
- A->push_point = 1;
30
- A = alloc_arena_chunk(10240, A);
31
- }
32
-
33
- int cmark_arena_pop(void) {
34
- if (!A)
35
- return 0;
36
- while (A && !A->push_point) {
37
- free(A->ptr);
38
- struct arena_chunk *n = A->prev;
39
- free(A);
40
- A = n;
41
- }
42
- if (A)
43
- A->push_point = 0;
44
- return 1;
45
- }
46
-
47
- static void init_arena(void) {
48
- A = alloc_arena_chunk(4 * 1048576, NULL);
49
- }
50
-
51
- void cmark_arena_reset(void) {
52
- while (A) {
53
- free(A->ptr);
54
- struct arena_chunk *n = A->prev;
55
- free(A);
56
- A = n;
57
- }
58
- }
59
-
60
- static void *arena_calloc(size_t nmem, size_t size) {
61
- if (!A)
62
- init_arena();
63
-
64
- size_t sz = nmem * size + sizeof(size_t);
65
-
66
- // Round allocation sizes to largest integer size to
67
- // ensure returned memory is correctly aligned
68
- const size_t align = sizeof(size_t) - 1;
69
- sz = (sz + align) & ~align;
70
-
71
- struct arena_chunk *chunk;
72
- if (sz > A->sz) {
73
- A->prev = chunk = alloc_arena_chunk(sz, A->prev);
74
- } else if (sz > A->sz - A->used) {
75
- A = chunk = alloc_arena_chunk(A->sz + A->sz / 2, A);
76
- } else {
77
- chunk = A;
78
- }
79
- void *ptr = (uint8_t *) chunk->ptr + chunk->used;
80
- chunk->used += sz;
81
- *((size_t *) ptr) = sz - sizeof(size_t);
82
- return (uint8_t *) ptr + sizeof(size_t);
83
- }
84
-
85
- static void *arena_realloc(void *ptr, size_t size) {
86
- if (!A)
87
- init_arena();
88
-
89
- void *new_ptr = arena_calloc(1, size);
90
- if (ptr)
91
- memcpy(new_ptr, ptr, ((size_t *) ptr)[-1]);
92
- return new_ptr;
93
- }
94
-
95
- static void arena_free(void *ptr) {
96
- (void) ptr;
97
- /* no-op */
98
- }
99
-
100
- cmark_mem CMARK_ARENA_MEM_ALLOCATOR = {arena_calloc, arena_realloc, arena_free};
101
-
102
- cmark_mem *cmark_get_arena_mem_allocator(void) {
103
- return &CMARK_ARENA_MEM_ALLOCATOR;
104
- }