kramdown-asciidoc 1.0.0.alpha.2 → 1.0.0.alpha.3

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: d272b7da83b441ebdb647887c7d9355fb05eba02b5dd3f01094bc7b089fe2a34
4
- data.tar.gz: 58f6c5b345bd05e72c06a571b72cdd829766a87a33fa87b3ae0f0d7adab3b3b7
3
+ metadata.gz: e95a5d12ba8c16a4dffb8257066dda516b072943947fa156ef5e94914451b36d
4
+ data.tar.gz: 1381d930ab4aaa34f9ec2bf1ccf274357c76f061a0f4715336bacd6fee7e3124
5
5
  SHA512:
6
- metadata.gz: e3f41c1b6a204e64ea4f4baf582910a0b06004dd1fe11676f6b2cb47cca317214c359a86991ba24c133aa18764df6ab1a4b06e9e107eeb31f0085d37d30e3719
7
- data.tar.gz: 362e0cb506477aae3cf22b57b2be596b573259e6da83e20a0a9cfc62e0c7e63d830760975b2ddd72f360ffb59b07e0e0245dc779289153e17ef5c4af931fb5b7
6
+ metadata.gz: b3acf70f81410433141239ed11bfc9fb3d498eddeecffad94144a98386aac5146b80ab4609dd3b673609961fefedad7ef5f4a21e05ef34859f3d4915e5e48062
7
+ data.tar.gz: cdc0863d2926c1488a263ec73f067ca201038192f35b25c79872507d5da6b81ef70cf53134d40e770c9edbd6170f98079cdd0d05ddc2d33b1b1c80c0ff74b3ea
@@ -5,6 +5,19 @@
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
+ == 1.0.0.alpha.3 (2018-05-31) - @mojavelinux
9
+
10
+ === Added
11
+
12
+ * patch conversion from HTML br element to native until the fix for gettalong/kramdown#514 is released
13
+ * preserve non-default table column alignment
14
+ * honor image width specified in style attribute of HTML img element
15
+ * replace empty HTML p element with paragraph containing \{blank}
16
+
17
+ === Changed
18
+
19
+ * replace ndash symbol with \-- instead of \–
20
+
8
21
  == 1.0.0.alpha.2 (2018-05-24) - @mojavelinux
9
22
 
10
23
  === Added
@@ -13,7 +26,7 @@ For a detailed view of what has changed, refer to the {uri-repo}/commits/master[
13
26
  * convert HTML-based admonition blocks
14
27
  * drop HTML div element if enclosing an image
15
28
  * transfer id and class/role attributes to block image
16
- * pass through width attribute to image if specified on HTML img element
29
+ * honor image width specified on width attribute of HTML img element
17
30
 
18
31
  === Changed
19
32
 
data/Gemfile CHANGED
@@ -1,3 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ group :coverage do
6
+ gem 'deep-cover', git: 'https://github.com/mojavelinux/deep-cover', branch: 'no-cli', require: false
7
+ gem 'sass', require: false unless ENV['CI']
8
+ end
@@ -1,6 +1,6 @@
1
1
  = {project-name} (Markdown to AsciiDoc)
2
2
  Dan Allen <https://github.com/mojavelinux>
3
- v1.0.0.alpha.2, 2018-05-24
3
+ v1.0.0.alpha.3, 2018-05-31
4
4
  // Aliases:
5
5
  :project-name: Kramdown AsciiDoc
6
6
  :project-handle: kramdown-asciidoc
@@ -23,14 +23,15 @@ endif::[]
23
23
  :uri-asciidoc: https://asciidoctor.org/docs/what-is-asciidoc/#what-is-asciidoc
24
24
  :uri-asciidoctor: https://asciidoctor.org
25
25
  :uri-rvm: https://rvm.io
26
- :uri-install-rvm: https://rvm.io/rvm/install
27
- //:img-gem: https://img.shields.io/gem/v/kramdown-asciidoc.svg?label=gem
26
+ :uri-rvm-install: https://rvm.io/rvm/install
28
27
  :uri-ci-travis: https://travis-ci.org/asciidoctor/kramdown-asciidoc
29
- :img-ci-travis: https://img.shields.io/travis/asciidoctor/kramdown-asciidoc/master.svg
28
+ :uri-ci-travis-img: https://img.shields.io/travis/asciidoctor/kramdown-asciidoc/master.svg
29
+ :uri-gem: https://rubygems.org/gems/kramdown-asciidoc
30
+ :uri-gem-img: https://img.shields.io/gem/v/kramdown-asciidoc.svg?label=gem
30
31
 
31
32
  ifdef::status[]
32
- //image:{img-gem}[Gem Version,link={uri-gem}]
33
- image:{img-ci-travis}[Build Status (Travis CI),link={uri-ci-travis}]
33
+ image:{uri-gem-img}[Gem Version,link={uri-gem}]
34
+ image:{uri-ci-travis-img}[Build Status (Travis CI),link={uri-ci-travis}]
34
35
  endif::[]
35
36
 
36
37
  {uri-repo}[{project-name}] (gem: *{project-handle}*) is a Kramdown extension for converting Markdown documents to {uri-asciidoc}[AsciiDoc].
@@ -41,7 +42,7 @@ Notably, the converter generates modern AsciiDoc syntax suitable for use with {u
41
42
  To install and run {project-name}, you need Ruby 2.4 or better installed and a few RubyGems (aka gems).
42
43
  We'll explain how to install the gems in the next section.
43
44
 
44
- To check whether you have Ruby installed, and which version you have, run the following command:
45
+ To check whether you have Ruby installed, and which version, run the following command:
45
46
 
46
47
  $ ruby -v
47
48
 
@@ -50,7 +51,7 @@ We generally recommend using RVM because it allows you to install gems without r
50
51
 
51
52
  == Installation
52
53
 
53
- {project-name} is published as a pre-release gem named {project-handle} to RubyGems.org.
54
+ {project-name} is published to RubyGems.org as a pre-release gem named *{project-handle}*.
54
55
 
55
56
  You can install the pre-release version using the following command:
56
57
 
@@ -95,7 +96,7 @@ Next, switch to the project directory:
95
96
 
96
97
  We recommend using {uri-rvm}[RVM] when developing applications with Ruby.
97
98
  We like RVM because it keeps the dependencies required by the project isolated from the rest of your system.
98
- Follow the {uri-install-rvm}[installation instructions] on the RVM site to setup RVM and install Ruby.
99
+ Follow the {uri-rvm-install}[installation instructions] on the RVM site to setup RVM and install Ruby.
99
100
 
100
101
  Once you have RVM setup, switch to the RVM-managed version of Ruby recommended by the project using this command:
101
102
 
@@ -1,2 +1,13 @@
1
1
  require 'kramdown'
2
2
  require_relative 'kramdown-asciidoc/converter'
3
+ autoload :YAML, 'yaml'
4
+
5
+ # REMOVE once Kramdown > 1.16.2 is released
6
+ class Kramdown::Parser::Html::ElementConverter
7
+ def convert_br el
8
+ el.options.clear
9
+ el.type = el.value.to_sym
10
+ el.value = ''
11
+ nil
12
+ end
13
+ end
@@ -21,7 +21,6 @@ module Kramdown; module AsciiDoc
21
21
 
22
22
  def self.extract_front_matter source, attributes
23
23
  if (line_i = (lines = source.each_line).next) && line_i.chomp == '---'
24
- require 'yaml' unless defined? ::YAML
25
24
  lines = lines.drop 1
26
25
  front_matter = []
27
26
  while (line = lines.shift) && line.chomp != '---'
@@ -59,7 +58,7 @@ module Kramdown; module AsciiDoc
59
58
  '’' => '`\'',
60
59
  # FIXME in the future, mdash will be three dashes in AsciiDoc; for now, down-convert
61
60
  '—' => '--',
62
- '–' => '&#8211;',
61
+ '–' => '--',
63
62
  '…' => '...',
64
63
  }
65
64
  TYPOGRAPHIC_ENTITY_TO_MARKUP = {
@@ -72,9 +71,15 @@ module Kramdown; module AsciiDoc
72
71
  laquo_scape: '<< ',
73
72
  raquo_space: ' >>',
74
73
  }
74
+ TABLE_ALIGNMENTS = {
75
+ left: '<',
76
+ center: '^',
77
+ right: '>',
78
+ }
75
79
 
76
80
  ApostropheRx = /\b’\b/
77
81
  CommentPrefixRx = /^ *! ?/m
82
+ CssPropDelimRx = /\s*;\s*/
78
83
  ReplaceableTextRx = /[-=]>|<[-=]|\.\.\./
79
84
  StartOfLinesRx = /^/m
80
85
  TypographicSymbolRx = /[“”‘’—–…]/
@@ -154,19 +159,22 @@ module Kramdown; module AsciiDoc
154
159
  else
155
160
  prefix, suffix = '', LFx2
156
161
  end
162
+ if (children = el.children).empty?
163
+ contents = '{blank}'
157
164
  # NOTE detect plain admonition marker (e.g, Note: ...)
158
- if (child_i = el.children[0] || VoidElement).type == :text && (child_i_text = child_i.value).start_with?(*ADMON_MARKERS)
165
+ elsif (child_i = children[0]).type == :text && (child_i_text = child_i.value).start_with?(*ADMON_MARKERS)
159
166
  marker, child_i_text = child_i_text.split ': ', 2
160
167
  child_i = clone child_i, value: %(#{ADMON_TYPE_MAP[marker]}: #{child_i_text})
161
- el = clone el, children: [child_i] + (el.children.drop 1)
168
+ el = clone el, children: [child_i] + (children.drop 1)
162
169
  contents = inner el, opts
163
170
  # NOTE detect formatted admonition marker (e.g., *Note:* ...)
164
171
  elsif (child_i.type == :strong || child_i.type == :em) &&
165
172
  (marker_el = child_i.children[0]) && ((marker = ADMON_FORMATTED_MARKERS[marker_el.value]) ||
166
- ((marker = ADMON_LABELS[marker_el.value]) && (child_ii = el.children[1] || VoidElement).type == :text &&
173
+ ((marker = ADMON_LABELS[marker_el.value]) && (child_ii = children[1] || VoidElement).type == :text &&
167
174
  ((child_ii_text = child_ii.value).start_with? ': ')))
168
- el = clone el, children: (el.children.drop 1)
169
- el.children[0] = clone child_ii, value: (child_ii_text.slice 1, child_ii_text.length) if child_ii
175
+ children = children.drop 1
176
+ children[0] = clone child_ii, value: (child_ii_text.slice 1, child_ii_text.length) if child_ii
177
+ el = clone el, children: children
170
178
  contents = %(#{ADMON_TYPE_MAP[marker]}:#{inner el, opts})
171
179
  else
172
180
  contents = inner el, opts
@@ -251,11 +259,16 @@ module Kramdown; module AsciiDoc
251
259
  prefix = (prev = opts[:prev]) && prev.options[:compound] ? LF : ''
252
260
  marker = opts[:parent].type == :ol ? '.' : '*'
253
261
  indent = (level = opts[:level]) - 1
254
- %(#{prefix}#{indent > 0 ? (' ' * indent) : ''}#{marker * level} #{(inner el, (opts.merge rstrip: true))}#{LF})
262
+ %(#{prefix}#{indent > 0 ? ' ' * indent : ''}#{marker * level} #{(inner el, (opts.merge rstrip: true))}#{LF})
255
263
  end
256
264
 
257
265
  def convert_table el, opts
258
- head = cols = nil
266
+ head = nil
267
+ cols = (alignments = el.options[:alignment]).size
268
+ if alignments.any? {|align| align == :center || align == :right }
269
+ colspecs = alignments.map {|align| TABLE_ALIGNMENTS[align] }.join ','
270
+ colspecs = %("#{colspecs}") if cols > 1
271
+ end
259
272
  table_buf = ['|===']
260
273
  el.children.each do |container|
261
274
  container.children.each do |row|
@@ -265,18 +278,20 @@ module Kramdown; module AsciiDoc
265
278
  cell_contents = cell_contents.gsub '|', '\|' if cell_contents.include? '|'
266
279
  row_buf << %(| #{cell_contents})
267
280
  end
268
- cols ||= row_buf.size
269
281
  if container.type == :thead
270
282
  head = true
271
- row_buf = [row_buf * ' ']
272
- row_buf << ''
283
+ row_buf = [row_buf * ' ', '']
273
284
  elsif cols > 1
274
285
  row_buf << ''
275
286
  end
276
287
  table_buf.concat row_buf
277
288
  end
278
289
  end
279
- table_buf.unshift %([cols=#{cols}*]) unless head || cols < 2
290
+ if colspecs
291
+ table_buf.unshift %([cols=#{colspecs}])
292
+ elsif !head && cols > 1
293
+ table_buf.unshift %([cols=#{cols}*])
294
+ end
280
295
  table_buf.pop if table_buf[-1] == ''
281
296
  table_buf << '|==='
282
297
  %(#{table_buf * LF}#{LFx2})
@@ -371,6 +386,14 @@ module Kramdown; module AsciiDoc
371
386
  if (width = el.attr['width'])
372
387
  macro_attrs << '' if macro_attrs.empty?
373
388
  macro_attrs << width
389
+ elsif (css = el.attr['style']) && (width_css = (css.split CssPropDelimRx).find {|p| p.start_with? 'width:' })
390
+ macro_attrs << '' if macro_attrs.empty?
391
+ width = (width_css.slice (width_css.index ':') + 1, width_css.length).strip
392
+ unless width.end_with? '%'
393
+ width = width.to_f
394
+ width = width.to_i if width == width.to_i
395
+ end
396
+ macro_attrs << width
374
397
  end
375
398
  if (url = opts[:url])
376
399
  macro_attrs << %(link=#{url})
@@ -1,3 +1,3 @@
1
1
  module Kramdown; module AsciiDoc
2
- VERSION = '1.0.0.alpha.2'
2
+ VERSION = '1.0.0.alpha.3'
3
3
  end; end
@@ -0,0 +1,4 @@
1
+ |===
2
+ | This is a test. +
3
+ This is only a test.
4
+ |===
@@ -0,0 +1 @@
1
+ | This is a test.<br/>This is only a test. |
@@ -0,0 +1,5 @@
1
+ before
2
+
3
+ {blank}
4
+
5
+ after
@@ -0,0 +1,5 @@
1
+ before
2
+
3
+ <p></p>
4
+
5
+ after
@@ -0,0 +1 @@
1
+ image::logo.png[,480]
@@ -0,0 +1 @@
1
+ <img src="logo.png" style="float: right; width: 480px">
@@ -0,0 +1,12 @@
1
+ [cols=">,^,<"]
2
+ |===
3
+ | Name | Index | Desc
4
+
5
+ | foo
6
+ | 1
7
+ | bar
8
+
9
+ | bim
10
+ | 2
11
+ | bop
12
+ |===
@@ -0,0 +1,4 @@
1
+ | Name | Index | Desc |
2
+ |-----:|:-----:|:-----|
3
+ | foo | 1 | bar |
4
+ | bim | 2 | bop |
@@ -1 +1 @@
1
- 9&#8211;5 is the gig.
1
+ 9--5 is the gig.
@@ -1,9 +1,10 @@
1
- if ENV['COVERAGE'] == 'true'
1
+ case ENV['COVERAGE']
2
+ when 'deep'
3
+ ENV['DEEP_COVER'] = 'true'
4
+ require 'deep_cover'
5
+ when 'true'
6
+ require 'deep_cover/builtin_takeover'
2
7
  require 'simplecov'
3
- SimpleCov.start do
4
- add_filter %w(/.bundle/ /spec/)
5
- coverage_dir 'build/coverage-report'
6
- end
7
8
  end
8
9
 
9
10
  require 'kramdown-asciidoc'
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: 1.0.0.alpha.2
4
+ version: 1.0.0.alpha.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Allen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-24 00:00:00.000000000 Z
11
+ date: 2018-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -113,6 +113,8 @@ files:
113
113
  - spec/fixtures/blockquote/with-attribution.md
114
114
  - spec/fixtures/br/tag-followed-by-newline.adoc
115
115
  - spec/fixtures/br/tag-followed-by-newline.md
116
+ - spec/fixtures/br/tag-in-table-cell.adoc
117
+ - spec/fixtures/br/tag-in-table-cell.md
116
118
  - spec/fixtures/br/tag-preceded-by-space.adoc
117
119
  - spec/fixtures/br/tag-preceded-by-space.md
118
120
  - spec/fixtures/br/tag.adoc
@@ -167,12 +169,16 @@ files:
167
169
  - spec/fixtures/html_element/abbr.md
168
170
  - spec/fixtures/html_element/admonition.adoc
169
171
  - spec/fixtures/html_element/admonition.md
172
+ - spec/fixtures/html_element/empty-p.adoc
173
+ - spec/fixtures/html_element/empty-p.md
170
174
  - spec/fixtures/html_element/heading-with-class.adoc
171
175
  - spec/fixtures/html_element/heading-with-class.md
172
176
  - spec/fixtures/html_element/heading-with-id.adoc
173
177
  - spec/fixtures/html_element/heading-with-id.md
174
178
  - spec/fixtures/html_element/img-with-alt-and-width.adoc
175
179
  - spec/fixtures/html_element/img-with-alt-and-width.md
180
+ - spec/fixtures/html_element/img-with-css-width.adoc
181
+ - spec/fixtures/html_element/img-with-css-width.md
176
182
  - spec/fixtures/html_element/img-with-width.adoc
177
183
  - spec/fixtures/html_element/img-with-width.md
178
184
  - spec/fixtures/html_element/img.adoc
@@ -231,8 +237,8 @@ files:
231
237
  - spec/fixtures/p/admonition/strong-emphasis.md
232
238
  - spec/fixtures/p/multiple-lines.adoc
233
239
  - spec/fixtures/p/multiple-lines.md
234
- - spec/fixtures/p/multiple.adoc
235
- - spec/fixtures/p/multiple.md
240
+ - spec/fixtures/p/sequential.adoc
241
+ - spec/fixtures/p/sequential.md
236
242
  - spec/fixtures/p/single-line.adoc
237
243
  - spec/fixtures/p/single-line.md
238
244
  - spec/fixtures/root/body-only.adoc
@@ -253,6 +259,8 @@ files:
253
259
  - spec/fixtures/strong/constrained.md
254
260
  - spec/fixtures/strong/nested-emphasis.adoc
255
261
  - spec/fixtures/strong/nested-emphasis.md
262
+ - spec/fixtures/table/alignment.adoc
263
+ - spec/fixtures/table/alignment.md
256
264
  - spec/fixtures/table/cell-with-pipe.adoc
257
265
  - spec/fixtures/table/cell-with-pipe.md
258
266
  - spec/fixtures/table/single-column-with-header.adoc
@@ -375,6 +383,8 @@ test_files:
375
383
  - spec/fixtures/blockquote/with-attribution.md
376
384
  - spec/fixtures/br/tag-followed-by-newline.adoc
377
385
  - spec/fixtures/br/tag-followed-by-newline.md
386
+ - spec/fixtures/br/tag-in-table-cell.adoc
387
+ - spec/fixtures/br/tag-in-table-cell.md
378
388
  - spec/fixtures/br/tag-preceded-by-space.adoc
379
389
  - spec/fixtures/br/tag-preceded-by-space.md
380
390
  - spec/fixtures/br/tag.adoc
@@ -429,12 +439,16 @@ test_files:
429
439
  - spec/fixtures/html_element/abbr.md
430
440
  - spec/fixtures/html_element/admonition.adoc
431
441
  - spec/fixtures/html_element/admonition.md
442
+ - spec/fixtures/html_element/empty-p.adoc
443
+ - spec/fixtures/html_element/empty-p.md
432
444
  - spec/fixtures/html_element/heading-with-class.adoc
433
445
  - spec/fixtures/html_element/heading-with-class.md
434
446
  - spec/fixtures/html_element/heading-with-id.adoc
435
447
  - spec/fixtures/html_element/heading-with-id.md
436
448
  - spec/fixtures/html_element/img-with-alt-and-width.adoc
437
449
  - spec/fixtures/html_element/img-with-alt-and-width.md
450
+ - spec/fixtures/html_element/img-with-css-width.adoc
451
+ - spec/fixtures/html_element/img-with-css-width.md
438
452
  - spec/fixtures/html_element/img-with-width.adoc
439
453
  - spec/fixtures/html_element/img-with-width.md
440
454
  - spec/fixtures/html_element/img.adoc
@@ -493,8 +507,8 @@ test_files:
493
507
  - spec/fixtures/p/admonition/strong-emphasis.md
494
508
  - spec/fixtures/p/multiple-lines.adoc
495
509
  - spec/fixtures/p/multiple-lines.md
496
- - spec/fixtures/p/multiple.adoc
497
- - spec/fixtures/p/multiple.md
510
+ - spec/fixtures/p/sequential.adoc
511
+ - spec/fixtures/p/sequential.md
498
512
  - spec/fixtures/p/single-line.adoc
499
513
  - spec/fixtures/p/single-line.md
500
514
  - spec/fixtures/root/body-only.adoc
@@ -515,6 +529,8 @@ test_files:
515
529
  - spec/fixtures/strong/constrained.md
516
530
  - spec/fixtures/strong/nested-emphasis.adoc
517
531
  - spec/fixtures/strong/nested-emphasis.md
532
+ - spec/fixtures/table/alignment.adoc
533
+ - spec/fixtures/table/alignment.md
518
534
  - spec/fixtures/table/cell-with-pipe.adoc
519
535
  - spec/fixtures/table/cell-with-pipe.md
520
536
  - spec/fixtures/table/single-column-with-header.adoc