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

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