kramdown-asciidoc 2.0.0 → 2.0.1

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: be0108c05d441dbc4125ed5fa6f51d152ae238d769cf5add12a0c35000c237e4
4
- data.tar.gz: 77fec67f63c28cb7611c45aaca839292cb19686e8d9e02cd87ed31a129fd939a
3
+ metadata.gz: e2f299ca0d156093eca0b0bf206f13bbedb23604e4f6a237b2b5aa16faa76eb0
4
+ data.tar.gz: 7bc8f03b29ecc1986f25c53858a3f4920b3ff3ba8a1d4b3313cee73c4be0dcaa
5
5
  SHA512:
6
- metadata.gz: 309476de155735f63f125bf1c91349f2d261b02c4e69b0ca5e154381893ec6d340429f348d14dd42e08ec4039db7d531a5de36e13089ee2e4ff9609696e161a7
7
- data.tar.gz: e4e265aae1a393d0f1b2038bce02aae9ffaa24d4b8e219458bf557ff219c3629c27d9788a9b1a69115d1e1522b60ec28d3771884cc68c2cfc4dbfa52f15f35b0
6
+ metadata.gz: 3d67ddef393d8155a0362ca7c8f0a997cf16f232f1293c13c8cb49ffa08009353224fa9703a25a4f1ab3b3b3dc4b048b56721b15d344695ec025ab3c8223efbe
7
+ data.tar.gz: 3ad990caafd8c8dd4eb0854e1af5095be820b735feff16d28aeac09b98967aabbefc43d6ecae35bda318d8cfdf65a691ea1e34e6b8a060337b17086b4a58e61e
data/CHANGELOG.adoc CHANGED
@@ -5,6 +5,24 @@
5
5
  This document provides a high-level view of the changes to {project-name} by release.
6
6
  For a detailed view of what has changed, refer to the {uri-repo}/commits/master[commit history] on GitHub.
7
7
 
8
+ == 2.0.1 (2022-06-29) - @mojavelinux
9
+
10
+ === Fixed
11
+
12
+ * Fix crash when fenced code block is empty and does not specify a language (#93)
13
+ * Fix crash when input contains `<script>` tag (#98)
14
+ * Fix crash if blockquote ends with nested block (#96)
15
+ * Handle text that maps to an abbreviation (#97)
16
+ * Handle front matter value that is parsed as a date or datetime (#95)
17
+
18
+ === Changed
19
+
20
+ * Add JRuby 9.3 to CI matrix
21
+
22
+ === Details
23
+
24
+ {url-repo}/releases/tag/v2.0.1[git tag] | {url-repo}/compare/v2.0.0\...v2.0.1[full diff]
25
+
8
26
  == 2.0.0 (2021-07-11) - @mojavelinux
9
27
 
10
28
  === Added
data/Gemfile CHANGED
@@ -12,9 +12,9 @@ group :docs do
12
12
  end unless without.include? 'docs'
13
13
 
14
14
  group :lint do
15
- gem 'rubocop', '~> 1.18.0', require: false
15
+ gem 'rubocop', '~> 1.28.0', require: false
16
16
  gem 'rubocop-rake', '~> 0.6.0', require: false
17
- gem 'rubocop-rspec', '~> 2.4.0', require: false
17
+ gem 'rubocop-rspec', '~> 2.10.0', require: false
18
18
  end unless without.include? 'lint'
19
19
 
20
20
  group :coverage do
data/LICENSE.adoc CHANGED
@@ -1,6 +1,6 @@
1
1
  .The MIT License
2
2
  ....
3
- Copyright (C) 2016-2019 OpenDevise Inc. (on behalf of the Asciidoctor Project)
3
+ Copyright (C) 2016-2021 OpenDevise Inc. and the individual contributors to {project-name}.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.adoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = {project-name} (Markdown to AsciiDoc)
2
2
  Dan Allen <https://github.com/mojavelinux>
3
- v2.0.0, 2021-07-11
3
+ v2.0.1, 2022-06-29
4
4
  // Aliases:
5
5
  :project-name: Kramdown AsciiDoc
6
6
  :project-handle: kramdown-asciidoc
@@ -367,7 +367,7 @@ To avoid having to do this, or make the `kramdoc` command available from anywher
367
367
 
368
368
  == Copyright
369
369
 
370
- Copyright (C) 2016-2019 OpenDevise Inc. (on behalf of the Asciidoctor Project).
370
+ Copyright (C) 2016-2021 OpenDevise Inc. and the individual contributors to {project-name}.
371
371
  Free use of this software is granted under the terms of the MIT License.
372
372
 
373
373
  See the link:LICENSE.adoc[LICENSE] file for details.
data/bin/kramdoc CHANGED
@@ -1,13 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- kramdown_asciidoc = File.absolute_path '../lib/kramdown-asciidoc', __dir__
5
- if File.exist? kramdown_asciidoc
4
+ if File.file? (kramdown_asciidoc = File.join (File.dirname __dir__), 'lib/kramdown-asciidoc.rb')
6
5
  require kramdown_asciidoc
7
6
  else
8
7
  require 'kramdown-asciidoc'
9
8
  end
10
-
11
9
  require 'kramdown-asciidoc/cli'
12
10
 
13
11
  exit Kramdown::AsciiDoc::Cli.run
@@ -36,5 +36,5 @@ Gem::Specification.new do |s|
36
36
  s.add_runtime_dependency 'kramdown-parser-gfm', '~> 1.1.0'
37
37
 
38
38
  s.add_development_dependency 'rake', '~> 13.0.0'
39
- s.add_development_dependency 'rspec', '~> 3.10.0'
39
+ s.add_development_dependency 'rspec', '~> 3.11.0'
40
40
  end
@@ -27,7 +27,10 @@ module AsciiDoc
27
27
  # @option opts [Symbol] :wrap (:preserve) the line wrapping behavior to apply (:preserve, :ventilate, or :none).
28
28
  # @option opts [Integer] :heading_offset (0) the heading offset to apply to heading levels.
29
29
  # @option opts [Boolean] :auto_links (true) whether to allow raw URLs to be recognized as links.
30
- # @option opts [Hash] :attributes ({}) AsciiDoc attributes to add to the document header of the output document.
30
+ # @option opts [Hash] :attributes ({}) additional AsciiDoc attributes to add to header of output document; reserved
31
+ # attributes, like stem, may be overridden; some attributes may impact conversion, such as idprefix and idseparator
32
+ # @option opts [String] :imagesdir (nil) the prefix to remove from image references found in the Markdown document;
33
+ # if not specified, the value of the imagesdir attribute is used
31
34
  # @option opts [Symbol] :encode (true) whether to reencode the source to UTF-8.
32
35
  # @option opts [Array<Proc>] :preprocessors ([]) a list of preprocessors functions to execute on the cleaned Markdown source.
33
36
  # @option opts [Array<Proc>] :postprocessors ([]) a list of functions through which to run the output document.
@@ -82,7 +85,10 @@ module AsciiDoc
82
85
  # @option opts [Symbol] :wrap (:preserve) the line wrapping behavior to apply (:preserve, :ventilate, or :none).
83
86
  # @option opts [Integer] :heading_offset (0) the heading offset to apply to heading levels.
84
87
  # @option opts [Boolean] :auto_links (true) whether to allow raw URLs to be recognized as links.
85
- # @option opts [Hash] :attributes ({}) AsciiDoc attributes to add to the document header of the output document.
88
+ # @option opts [Hash] :attributes ({}) additional AsciiDoc attributes to add to header of output document; reserved
89
+ # attributes, like stem, may be overridden; some attributes may impact conversion, such as idprefix and idseparator
90
+ # @option opts [String] :imagesdir (nil) the prefix to remove from image references found in the Markdown document;
91
+ # if not specified, the value of the imagesdir attribute is used
86
92
  # @option opts [Array<Proc>] :preprocessors ([]) a list of preprocessors functions to execute on the cleaned Markdown source.
87
93
  # @option opts [Array<Proc>] :postprocessors ([]) a list of functions through which to run the output document.
88
94
  # @option opts [Proc] :postprocess (nil) a function through which to run the output document (if :postprocessors is falsy).
@@ -15,7 +15,7 @@ module AsciiDoc
15
15
  opt_parser = ::OptionParser.new do |opts|
16
16
  opts.program_name = 'kramdoc'
17
17
  opts.banner = <<~EOS
18
- Usage: #{opts.program_name} [OPTION]... FILE...
18
+ Usage: #{opts.program_name} [OPTION]... FILE
19
19
 
20
20
  Converts Markdown to AsciiDoc.
21
21
 
@@ -87,10 +87,8 @@ module AsciiDoc
87
87
  if args.empty?
88
88
  opt_parser.warn 'Please specify a Markdown file to convert.'
89
89
  $stdout.write opt_parser.help
90
- return 1
91
- end
92
-
93
- if args.size == 1
90
+ 1
91
+ elsif args.size == 1
94
92
  options[:input_file] = args[0]
95
93
  [0, options]
96
94
  else
@@ -120,8 +118,8 @@ module AsciiDoc
120
118
  ::Kramdoc.convert_file input_file, options
121
119
  end
122
120
  0
123
- rescue ::IOError => e
124
- $stderr.write %(kramdoc: #{e.message}\n)
121
+ rescue ::IOError
122
+ $stderr.write %(kramdoc: #{$!.message}\n)
125
123
  1
126
124
  end
127
125
  end
@@ -206,7 +206,7 @@ module AsciiDoc
206
206
  if contents[0].start_with?(*ADMON_MARKERS_ASCIIDOC) && !(contents.include? '')
207
207
  writer.add_lines contents
208
208
  else
209
- if contents.size > 1 && (contents[-1].start_with? '-- ')
209
+ if contents.size > 1 && ::String === (last_line = contents[-1]) && (last_line.start_with? '-- ')
210
210
  attribution = (attribution_line = contents.pop).slice 3, attribution_line.length
211
211
  writer.add_line %([,#{attribution}])
212
212
  # NOTE there will be at least one non-blank line, but coerce .to_s just to be safe
@@ -228,18 +228,19 @@ module AsciiDoc
228
228
  writer.start_block
229
229
  end
230
230
  lines = el.value.rstrip.split LF
231
+ first_line = lines[0]
231
232
  if (lang = el.attr['class'])
232
233
  # NOTE Kramdown always prefixes class with language-
233
234
  # TODO remap lang if requested
234
235
  writer.add_line %([,#{lang = lang.slice 9, lang.length}])
235
- elsif (prompt = lines[0].start_with? '$ ')
236
+ elsif (prompt = first_line && (first_line.start_with? '$ '))
236
237
  writer.add_line %([,#{lang = 'console'}]) if lines.include? ''
237
238
  end
238
239
  if lang || (el.options[:fenced] && !prompt)
239
240
  writer.add_line '----'
240
241
  writer.add_lines lines
241
242
  writer.add_line '----'
242
- elsif !prompt && ((lines.include? '') || (ListMarkerRx.match? lines[0]))
243
+ elsif !prompt && ((lines.include? '') || (first_line && (ListMarkerRx.match? first_line)))
243
244
  writer.add_line '....'
244
245
  writer.add_lines lines
245
246
  writer.add_line '....'
@@ -487,6 +488,10 @@ module AsciiDoc
487
488
  next_el && next_el.type == :text && (WordRx.match? next_el.value.chr)
488
489
  end
489
490
 
491
+ def convert_abbreviation el, opts
492
+ opts[:writer].append el.value
493
+ end
494
+
490
495
  def convert_text el, opts
491
496
  text = escape_replacements el.value
492
497
  if text.include? '++'
@@ -546,7 +551,11 @@ module AsciiDoc
546
551
  end
547
552
 
548
553
  def convert_html_element el, opts
549
- if (tag = el.value) == 'div' && (child_i = el.children[0]) && child_i.options[:transparent] && (child_i_i = child_i.children[0])
554
+ if (tag = el.value) == 'script'
555
+ opts[:writer].start_block
556
+ opts[:writer].add_lines ['++++', '<script>', el.children[0].value.strip, '</script>', '++++']
557
+ return
558
+ elsif tag == 'div' && (child_i = el.children[0]) && child_i.options[:transparent] && (child_i_i = child_i.children[0])
550
559
  if child_i_i.value == 'span' && ((role = el.attr['class'].to_s).start_with? 'note') && child_i_i.attr['class'] == 'notetitle'
551
560
  marker = ADMON_FORMATTED_MARKERS[(to_element child_i_i.children[0]).value] || 'Note'
552
561
  lines = compose_text (child_i.children.drop 1), parent: child_i, strip: true, split: true, wrap: @wrap
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ autoload :Date, 'time'
6
+ autoload :Time, 'time'
7
+
8
+ unless (YAML.method :safe_load).parameters.include? [:key, :aliases]
9
+ YAML.singleton_class.prepend (Module.new do
10
+ def safe_load yaml, permitted_classes: [], permitted_symbols: [], aliases: false, filename: nil
11
+ super yaml, permitted_classes, permitted_symbols, aliases, filename
12
+ end
13
+ end)
14
+ end
@@ -18,7 +18,7 @@ module AsciiDoc
18
18
  end
19
19
  return source unless line && line.chomp == '---' && !(front_matter.include? ?\n)
20
20
  lines.shift while (line = lines[0]) && line == ?\n
21
- (::YAML.safe_load front_matter.join).each do |key, val|
21
+ (::YAML.safe_load front_matter.join, permitted_classes: [::Date, ::Time]).each do |key, val|
22
22
  if key == 'layout'
23
23
  attributes['page-layout'] = val unless val == 'default'
24
24
  else
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kramdown
4
4
  module AsciiDoc
5
- VERSION = '2.0.0'
5
+ VERSION = '2.0.1'
6
6
  end
7
7
  end
@@ -4,6 +4,7 @@ require 'kramdown'
4
4
  require_relative 'kramdown-asciidoc/kramdown_ext/parser/base'
5
5
  require_relative 'kramdown-asciidoc/kramdown_ext/parser/html'
6
6
  require_relative 'kramdown-asciidoc/core_ext/regexp/is_match'
7
+ require_relative 'kramdown-asciidoc/core_ext/yaml'
7
8
  require_relative 'kramdown-asciidoc/preprocessors'
8
9
  require_relative 'kramdown-asciidoc/writer'
9
10
  require_relative 'kramdown-asciidoc/converter'
@@ -13,4 +14,3 @@ Kramdown::Converter::Asciidoc = Kramdown::AsciiDoc::Converter
13
14
  # add Kramdoc alias
14
15
  Kramdoc = Kramdown::AsciiDoc
15
16
  autoload :Pathname, 'pathname'
16
- autoload :YAML, 'yaml'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kramdown-asciidoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Allen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-11 00:00:00.000000000 Z
11
+ date: 2022-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.10.0
75
+ version: 3.11.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 3.10.0
82
+ version: 3.11.0
83
83
  description: A kramdown extension for converting Markdown documents to AsciiDoc.
84
84
  email:
85
85
  - dan.j.allen@gmail.com
@@ -100,6 +100,7 @@ files:
100
100
  - lib/kramdown-asciidoc/cli.rb
101
101
  - lib/kramdown-asciidoc/converter.rb
102
102
  - lib/kramdown-asciidoc/core_ext/regexp/is_match.rb
103
+ - lib/kramdown-asciidoc/core_ext/yaml.rb
103
104
  - lib/kramdown-asciidoc/kramdown_ext/parser/base.rb
104
105
  - lib/kramdown-asciidoc/kramdown_ext/parser/html.rb
105
106
  - lib/kramdown-asciidoc/preprocessors.rb
@@ -128,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
129
  - !ruby/object:Gem::Version
129
130
  version: '0'
130
131
  requirements: []
131
- rubygems_version: 3.2.22
132
+ rubygems_version: 3.3.7
132
133
  signing_key:
133
134
  specification_version: 4
134
135
  summary: A Markdown to AsciiDoc converter based on kramdown