kramdown-asciidoc 2.0.0 → 2.0.1

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: 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