motion-markdown-it 4.1.0.2 → 4.2.2.0

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
  SHA1:
3
- metadata.gz: 214800d2799b974abec953888695a55f613bf244
4
- data.tar.gz: 16fed8197c4f45298e8afe3994ff701c49bf3b61
3
+ metadata.gz: c25f046cd230dec30329ee31997f8d1c4820e888
4
+ data.tar.gz: 989cfb0a87fd1efbbc4f332e63aff23e4a1c3349
5
5
  SHA512:
6
- metadata.gz: 73a7c3eb82df1344805e860c58ad815618cbbe727a2cbd42350687d6c559a7bf7b6672f70f22d5234bbf679fc10896263192f6e617899663d7dfb0967b273c88
7
- data.tar.gz: 357565490abb891b1bf6cc3d5b31240aa8b0da3c6e8f512e9440276bfcd750676c634989c76abe8db96109c86d207fe7b215526b0919535eac70f823d4870d1e
6
+ metadata.gz: 08c3e0baeb9071852ea680700f33222ece16cec1a8edc5e33c1b8c56cc2c8efb1442a439e8c4ca1838bdec1adb47e21072f50c1eb4496c0172d4da39c5337ff2
7
+ data.tar.gz: a3a58cdd184efba1d5820d5a8b10e75efa8205f5d938e0f9b87c709320fb8f71c9a899999eecd203004b98fb6f309250746e245da1cfba49c2996af1d15eb375
data/README.md CHANGED
@@ -4,14 +4,17 @@
4
4
 
5
5
  Ruby/RubyMotion version of Markdown-it (CommonMark compliant and extendable)
6
6
 
7
- This gem is a port of the [markdown-it Javascript package](https://github.com/markdown-it/markdown-it) by Vitaly Puzrin and Alex Kocharin. Currently synced with markdown-it 4.1.0
7
+ This gem is a port of the [markdown-it Javascript package](https://github.com/markdown-it/markdown-it) by Vitaly Puzrin and Alex Kocharin. Currently synced with markdown-it 4.2.2
8
8
 
9
9
  __[Javascript Live demo](https://markdown-it.github.io)__
10
10
 
11
- - Supports the CommonMark spec + syntax extensions + sugar (URL autolinking, typographer)
11
+ Follows the __[CommonMark spec](http://spec.commonmark.org/)__ + adds syntax extensions & sugar (URL autolinking, typographer).
12
12
  - Configurable syntax. You can add new rules and even replace existing ones.
13
- - High speed
13
+ - [Safe](https://github.com/markdown-it/markdown-it/tree/master/docs/security.md) by default.
14
14
  - Community-written plugins
15
+ - Community-written plugins
16
+ * [Ruby/RubyMotion](https://github.com/digitalmoksha/motion-markdown-it-plugins)
17
+ * [original javascript plugins](https://www.npmjs.org/browse/keyword/markdown-it-plugin) and [other packages](https://www.npmjs.org/browse/keyword/markdown-it) on npm.
15
18
 
16
19
  ## Benefit
17
20
 
@@ -25,6 +28,7 @@ Performance is still an issue. While it performs reasonably well with small to
25
28
 
26
29
  - [Install](#install)
27
30
  - [Usage examples](#usage-examples)
31
+ - [Plugins](#plugins)
28
32
  - [References / Thanks](#references--thanks)
29
33
  - [License](#license)
30
34
 
@@ -101,7 +105,10 @@ parser = MarkdownIt::Parser.new({
101
105
  typographer: false,
102
106
 
103
107
  # Double + single quotes replacement pairs, when typographer enabled,
104
- # and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.
108
+ # and smartquotes on. Could be either a String or an Array.
109
+ #
110
+ # For example, you can use '«»„“' for Russian, '„“‚‘' for German,
111
+ # and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
105
112
  quotes: '“”‘’',
106
113
 
107
114
  # Highlighter function. Should return escaped HTML,
@@ -110,6 +117,19 @@ parser = MarkdownIt::Parser.new({
110
117
  })
111
118
  ```
112
119
 
120
+ ## Plugins
121
+
122
+ Plugins can be used to extend the syntax and functionality. A [sample set of plugins](https://github.com/digitalmoksha/motion-markdown-it-plugins) has been created based on those already created for the javascript version. Included are:
123
+
124
+ * [Abbreviations](https://github.com/digitalmoksha/motion-markdown-it-plugins/tree/master/lib/motion-markdown-it-plugins/abbr)
125
+ * [Checkbox/Tasklists](https://github.com/digitalmoksha/motion-markdown-it-plugins/tree/master/lib/motion-markdown-it-plugins/checkbox_replace)
126
+ * [Containers](https://github.com/digitalmoksha/motion-markdown-it-plugins/tree/master/lib/motion-markdown-it-plugins/container)
127
+ * [Definition Lists](https://github.com/digitalmoksha/motion-markdown-it-plugins/tree/master/lib/motion-markdown-it-plugins/deflist)
128
+ * [Insert](https://github.com/digitalmoksha/motion-markdown-it-plugins/tree/master/lib/motion-markdown-it-plugins/ins)
129
+ * [Mark](https://github.com/digitalmoksha/motion-markdown-it-plugins/tree/master/lib/motion-markdown-it-plugins/mark)
130
+ * [Subscript](https://github.com/digitalmoksha/motion-markdown-it-plugins/tree/master/lib/motion-markdown-it-plugins/sub)
131
+ * [Superscript](https://github.com/digitalmoksha/motion-markdown-it-plugins/tree/master/lib/motion-markdown-it-plugins/sup)
132
+
113
133
  <!--
114
134
  ### Plugins load
115
135
 
@@ -179,7 +199,7 @@ Via plugins:
179
199
  ### Manage rules
180
200
 
181
201
  By default all rules are enabled, but can be restricted by options. On plugin
182
- load all it's rules are enabled automatically.
202
+ load all its rules are enabled automatically.
183
203
 
184
204
  ```js
185
205
  // Activate/deactivate rules, with curring
@@ -197,9 +217,9 @@ md = require('markdown-it')('full', {
197
217
  ```
198
218
 
199
219
 
200
- ## Benchmark
220
+ ## Benchmark (for Javascript version)
201
221
 
202
- Here is result of readme parse at MB Pro Retina 2013 (2.4 GHz):
222
+ Here is the result of readme parse at MB Pro Retina 2013 (2.4 GHz):
203
223
 
204
224
  ```bash
205
225
  $ benchmark/benchmark.js readme
@@ -217,7 +237,7 @@ __Note.__ CommonMark version runs with [simplified link normalizers](https://git
217
237
  for more "honest" compare. Difference is ~ 1.5x.
218
238
 
219
239
  As you can see, `markdown-it` doesn't pay with speed for it's flexibility.
220
- Slowdown of "full" version caused by additional features, not available in
240
+ Slowdown of "full" version caused by additional features not available in
221
241
  other implementations.
222
242
 
223
243
  -->
@@ -8,8 +8,9 @@ CONFIG = {
8
8
  }
9
9
 
10
10
  #------------------------------------------------------------------------------
11
- # This validator does not pretend to functionality of full weight sanitizers.
12
- # It's a tradeoff between default security, simplicity and usability.
11
+ # This validator can prohibit more than really needed to prevent XSS. It's a
12
+ # tradeoff to keep code simple and to be secure by default.
13
+ #
13
14
  # If you need different setup - override validator method as you wish. Or
14
15
  # replace it with dummy function and use external sanitizer.
15
16
 
@@ -151,9 +152,10 @@ module MarkdownIt
151
152
  # - __typographer__ - `false`. Set `true` to enable [some language-neutral
152
153
  # replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +
153
154
  # quotes beautification (smartquotes).
154
- # - __quotes__ - `“”‘’`, string. Double + single quotes replacement pairs, when
155
- # typographer enabled and smartquotes on. Set doubles to '«»' for Russian,
156
- # '„“' for German.
155
+ # - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement
156
+ # pairs, when typographer enabled and smartquotes on. For example, you can
157
+ # use `'«»„“'` for Russian, `'„“‚‘'` for German, and
158
+ # `['«\xA0', '\xA0»', '‹\xA0', '\xA0›']` for French (including nbsp).
157
159
  # - __highlight__ - `nil`. Highlighter function for fenced code blocks.
158
160
  # Highlighter `function (str, lang)` should return escaped HTML. It can also
159
161
  # return nil if the source was not changed and should be escaped externaly.
@@ -257,8 +259,10 @@ module MarkdownIt
257
259
  # MarkdownIt#validateLink(url) -> Boolean
258
260
  #
259
261
  # Link validation function. CommonMark allows too much in links. By default
260
- # we disable `javascript:` and `vbscript:` schemas. You can change this
261
- # behaviour.
262
+ # we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas
263
+ # except some embedded image types.
264
+ #
265
+ # You can change this behaviour:
262
266
  #
263
267
  # ```javascript
264
268
  # var md = require('markdown-it')();
@@ -16,7 +16,10 @@ module MarkdownIt
16
16
  typographer: false,
17
17
 
18
18
  # Double + single quotes replacement pairs, when typographer enabled,
19
- # and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.
19
+ # and smartquotes on. Could be either a String or an Array.
20
+ #
21
+ # For example, you can use '«»„“' for Russian, '„“‚‘' for German,
22
+ # and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
20
23
  quotes: "\u201c\u201d\u2018\u2019", # “”‘’
21
24
 
22
25
  # Highlighter function. Should return escaped HTML,
@@ -16,7 +16,10 @@ module MarkdownIt
16
16
  typographer: false,
17
17
 
18
18
  # Double + single quotes replacement pairs, when typographer enabled,
19
- # and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.
19
+ # and smartquotes on. Could be either a String or an Array.
20
+ #
21
+ # For example, you can use '«»„“' for Russian, '„“‚‘' for German,
22
+ # and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
20
23
  quotes: "\u201c\u201d\u2018\u2019", # “”‘’
21
24
 
22
25
  # Highlighter function. Should return escaped HTML,
@@ -17,7 +17,10 @@ module MarkdownIt
17
17
  typographer: false,
18
18
 
19
19
  # Double + single quotes replacement pairs, when typographer enabled,
20
- # and smartquotes on. Set doubles to '«»' for Russian, '„“' for German.
20
+ # and smartquotes on. Could be either a String or an Array.
21
+ #
22
+ # For example, you can use '«»„“' for Russian, '„“‚‘' for German,
23
+ # and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
21
24
  quotes: "\u201c\u201d\u2018\u2019", # “”‘’
22
25
 
23
26
  # Highlighter function. Should return escaped HTML,
@@ -209,7 +209,7 @@ module MarkdownIt
209
209
  # * ```javascript
210
210
  # * var md = require('markdown-it')();
211
211
  # *
212
- # * md.core.ruler.push('emphasis', 'my_rule', function replace(state) {
212
+ # * md.core.ruler.push('my_rule', function replace(state) {
213
213
  # * //...
214
214
  # * });
215
215
  # * ```
@@ -55,6 +55,8 @@ module MarkdownIt
55
55
  # ```
56
56
  nextLine = startLine + 1
57
57
  while nextLine < endLine
58
+ break if state.tShift[nextLine] < oldIndent
59
+
58
60
  pos = state.bMarks[nextLine] + state.tShift[nextLine]
59
61
  max = state.eMarks[nextLine]
60
62
 
@@ -104,7 +106,7 @@ module MarkdownIt
104
106
  #
105
107
  # Any negative number will do the job here, but it's better for it
106
108
  # to be large enough to make any bugs obvious.
107
- state.tShift[nextLine] = -1337
109
+ state.tShift[nextLine] = -1
108
110
  nextLine += 1
109
111
  end
110
112
 
@@ -17,6 +17,9 @@ module MarkdownIt
17
17
  # it's considered a lazy continuation regardless of what's there
18
18
  (nextLine += 1) && next if (state.tShift[nextLine] - state.blkIndent > 3)
19
19
 
20
+ # quirk for blockquotes, this line should already be checked by that rule
21
+ (nextLine += 1) && next if state.tShift[nextLine] < 0
22
+
20
23
  # Some tags can terminate paragraph without empty line.
21
24
  terminate = false
22
25
  0.upto(terminatorRules.length - 1) do |i|
@@ -33,10 +33,12 @@ module MarkdownIt
33
33
  terminatorRules = state.md.block.ruler.getRules('reference')
34
34
 
35
35
  while nextLine < endLine && !state.isEmpty(nextLine)
36
- nextLine += 1
37
36
  # this would be a code block normally, but after paragraph
38
37
  # it's considered a lazy continuation regardless of what's there
39
- next if (state.tShift[nextLine] - state.blkIndent > 3)
38
+ (nextLine += 1) && next if (state.tShift[nextLine] - state.blkIndent > 3)
39
+
40
+ # quirk for blockquotes, this line should already be checked by that rule
41
+ (nextLine += 1) && next if state.tShift[nextLine] < 0
40
42
 
41
43
  # Some tags can terminate paragraph without empty line.
42
44
  terminate = false
@@ -47,6 +49,7 @@ module MarkdownIt
47
49
  end
48
50
  end
49
51
  break if (terminate)
52
+ nextLine += 1
50
53
  end
51
54
 
52
55
  str = state.getLines(startLine, nextLine, state.blkIndent, false).strip
@@ -140,11 +143,16 @@ module MarkdownIt
140
143
  return false
141
144
  end
142
145
 
146
+ label = normalizeReference(str.slice(1...labelEnd))
147
+ if label == ''
148
+ # CommonMark 0.20 disallows empty labels
149
+ return false
150
+ end
151
+
143
152
  # Reference can not terminate anything. This check is for safety only.
144
153
  # istanbul ignore if
145
154
  return true if (silent)
146
155
 
147
- label = normalizeReference(str.slice(1...labelEnd))
148
156
  if (state.env[:references].nil?)
149
157
  state.env[:references] = {}
150
158
  end
@@ -150,7 +150,7 @@ module MarkdownIt
150
150
  # Opt: don't use push queue for single line
151
151
  if (line + 1) == line_end
152
152
  first = @bMarks[line] + [@tShift[line], indent].min
153
- last = keepLastLF ? @bMarks[line_end] : @eMarks[line_end - 1]
153
+ last = @eMarks[line_end - 1] + (keepLastLF ? 1 : 0)
154
154
  return @src.slice(first...last)
155
155
  end
156
156
 
@@ -14,15 +14,21 @@ module MarkdownIt
14
14
 
15
15
  #------------------------------------------------------------------------------
16
16
  def self.escapedSplit(str)
17
- result = []
18
- pos = 0
19
- max = str.length
20
- escapes = 0
21
- lastPos = 0
22
- ch = str.charCodeAt(pos)
17
+ result = []
18
+ pos = 0
19
+ max = str.length
20
+ escapes = 0
21
+ lastPos = 0
22
+ backTicked = false
23
+ lastBackTick = 0
24
+
25
+ ch = str.charCodeAt(pos)
23
26
 
24
27
  while (pos < max)
25
- if (ch == 0x7c && (escapes % 2 == 0)) # '|'
28
+ if (ch == 0x60 && (escapes % 2 == 0)) # `
29
+ backTicked = !backTicked
30
+ lastBackTick = pos
31
+ elsif (ch == 0x7c && (escapes % 2 == 0) && !backTicked) # '|'
26
32
  result.push(str[lastPos...pos])
27
33
  lastPos = pos + 1
28
34
  elsif (ch == 0x5c) # '\'
@@ -32,6 +38,12 @@ module MarkdownIt
32
38
  end
33
39
 
34
40
  pos += 1
41
+ # If there was an un-closed backtick, go back to just after
42
+ # the last backtick, but as if it was a normal character
43
+ if (pos == max && backTicked)
44
+ backTicked = false
45
+ pos = lastBackTick + 1
46
+ end
35
47
  ch = str.charCodeAt(pos)
36
48
  end
37
49
 
@@ -1,7 +1,5 @@
1
1
  # Simple typographyc replacements
2
2
  #
3
- # '' → ‘’
4
- # "" → “”. Set '«»' for Russian, '„“' for German, empty to disable
5
3
  # (c) (C) → ©
6
4
  # (tm) (TM) → ™
7
5
  # (r) (R) → ®
@@ -105,15 +105,27 @@ module MarkdownIt
105
105
  break if (stack[j][:level] < thisLevel)
106
106
  if (item[:single] == isSingle && stack[j][:level] == thisLevel)
107
107
  item = stack[j]
108
- if (isSingle)
109
- tokens[item[:token]].content = replaceAt(tokens[item[:token]].content, item[:pos], state.md.options[:quotes][2])
110
- token.content = replaceAt(token.content, t.begin(0), state.md.options[:quotes][3])
108
+ if isSingle
109
+ openQuote = state.md.options[:quotes][2]
110
+ closeQuote = state.md.options[:quotes][3]
111
111
  else
112
- tokens[item[:token]].content = replaceAt(tokens[item[:token]].content, item[:pos], state.md.options[:quotes][0])
113
- token.content = replaceAt(token.content, t.begin(0), state.md.options[:quotes][1])
112
+ openQuote = state.md.options[:quotes][0]
113
+ closeQuote = state.md.options[:quotes][1]
114
114
  end
115
- # stack.length = j
116
- stack = (j < stack.length ? stack.slice(0, j) : stack.fill(nil, stack.length...(j)))
115
+
116
+ # replace token.content *before* tokens[item.token].content,
117
+ # because, if they are pointing at the same token, replaceAt
118
+ # could mess up indices when quote length != 1
119
+ token.content = replaceAt(token.content, t.begin(0), closeQuote)
120
+ tokens[item[:token]].content = replaceAt(tokens[item[:token]].content, item[:pos], openQuote)
121
+
122
+ pos += closeQuote.length - 1
123
+ pos += (openQuote.length - 1) if item[:token] == i
124
+
125
+ text = token.content
126
+ max = text.length
127
+
128
+ stack = (j < stack.length ? stack.slice(0, j) : stack.fill(nil, stack.length...(j))) # stack.length = j
117
129
  continue_outer_loop = true # continue OUTER;
118
130
  break
119
131
  end
@@ -9,11 +9,11 @@ module MarkdownIt
9
9
  # "start" should point at a valid marker
10
10
  #------------------------------------------------------------------------------
11
11
  def self.scanDelims(state, start)
12
- pos = start
13
- can_open = true
14
- can_close = true
15
- max = state.posMax
16
- marker = state.src.charCodeAt(start)
12
+ pos = start
13
+ left_flanking = true
14
+ right_flanking = true
15
+ max = state.posMax
16
+ marker = state.src.charCodeAt(start)
17
17
 
18
18
  # treat beginning of the line as a whitespace
19
19
  lastChar = start > 0 ? state.src.charCodeAt(start - 1) : 0x20
@@ -22,10 +22,6 @@ module MarkdownIt
22
22
  pos += 1
23
23
  end
24
24
 
25
- if (pos >= max)
26
- can_open = false
27
- end
28
-
29
25
  count = pos - start
30
26
 
31
27
  # treat end of the line as a whitespace
@@ -38,27 +34,28 @@ module MarkdownIt
38
34
  isNextWhiteSpace = isWhiteSpace(nextChar)
39
35
 
40
36
  if (isNextWhiteSpace)
41
- can_open = false
37
+ left_flanking = false
42
38
  elsif (isNextPunctChar)
43
39
  if (!(isLastWhiteSpace || isLastPunctChar))
44
- can_open = false
40
+ left_flanking = false
45
41
  end
46
42
  end
47
43
 
48
44
  if (isLastWhiteSpace)
49
- can_close = false
45
+ right_flanking = false
50
46
  elsif (isLastPunctChar)
51
47
  if (!(isNextWhiteSpace || isNextPunctChar))
52
- can_close = false
48
+ right_flanking = false
53
49
  end
54
50
  end
55
51
 
56
52
  if (marker == 0x5F) # _
57
- if (can_open && can_close)
58
- # "_" inside a word can neither open nor close an emphasis
59
- can_open = false
60
- can_close = isNextPunctChar
61
- end
53
+ # "_" inside a word can neither open nor close an emphasis
54
+ can_open = left_flanking && (!right_flanking || isLastPunctChar)
55
+ can_close = right_flanking && (!left_flanking || isNextPunctChar)
56
+ else
57
+ can_open = left_flanking
58
+ can_close = right_flanking
62
59
  end
63
60
 
64
61
  return { can_open: can_open, can_close: can_close, delims: count }
@@ -1,5 +1,5 @@
1
1
  module MotionMarkdownIt
2
2
 
3
- VERSION = '4.1.0.2'
3
+ VERSION = '4.2.2.0'
4
4
 
5
5
  end
@@ -14,7 +14,7 @@ files.each do |file|
14
14
 
15
15
  # results = Benchmark.bmbm do |b|
16
16
  results = Benchmark.bm do |b|
17
- b.report("motion-markdown-it 0.1.0") do
17
+ b.report("motion-markdown-it #{MotionMarkdownIt::VERSION}") do
18
18
  parser = MarkdownIt::Parser.new({ html: true, linkify: true, typographer: true })
19
19
  runs.times { parser.render(data) }
20
20
  end
@@ -4,7 +4,7 @@ describe 'API' do
4
4
  it 'constructor' do
5
5
  expect {
6
6
  MarkdownIt::Parser.new('bad preset')
7
- }.to raise_error
7
+ }.to raise_error(StandardError)
8
8
 
9
9
  # options should override preset
10
10
  md = MarkdownIt::Parser.new(:commonmark, { html: false })
@@ -23,7 +23,7 @@ describe 'API' do
23
23
 
24
24
  expect {
25
25
  md.configure
26
- }.to raise_error
26
+ }.to raise_error(StandardError)
27
27
  end
28
28
 
29
29
  class TestPlugin
@@ -131,11 +131,11 @@ describe 'API' do
131
131
  md = MarkdownIt::Parser.new
132
132
  expect {
133
133
  md.enable([ 'link', 'code', 'invalid' ])
134
- }.to raise_error
134
+ }.to raise_error(StandardError)
135
135
 
136
136
  expect {
137
137
  md.disable([ 'link', 'code', 'invalid' ])
138
- }.to raise_error
138
+ }.to raise_error(StandardError)
139
139
 
140
140
  expect {
141
141
  md.enable([ 'link', 'code' ])
@@ -301,3 +301,30 @@ describe 'maxNesting' do
301
301
  end
302
302
 
303
303
  end
304
+
305
+ #------------------------------------------------------------------------------
306
+ describe 'smartquotes' do
307
+ md = MarkdownIt::Parser.new({
308
+ typographer: true,
309
+
310
+ # all strings have different length to make sure
311
+ # we didn't accidentally count the wrong one
312
+ quotes: [ '[[[', ']]', '(((((', '))))' ]
313
+ })
314
+
315
+ #------------------------------------------------------------------------------
316
+ it 'Should support multi-character quotes' do
317
+ expect(md.render('"foo" \'bar\'')).to eq "<p>[[[foo]] (((((bar))))</p>\n"
318
+ end
319
+
320
+ #------------------------------------------------------------------------------
321
+ it 'Should support nested multi-character quotes' do
322
+ expect(md.render('"foo \'bar\' baz"')).to eq "<p>[[[foo (((((bar)))) baz]]</p>\n"
323
+ end
324
+
325
+ #------------------------------------------------------------------------------
326
+ it 'Should support multi-character quotes in different tags' do
327
+ expect(md.render('"a *b \'c *d* e\' f* g"')).to eq "<p>[[[a <em>b (((((c <em>d</em> e)))) f</em> g]]</p>\n"
328
+ end
329
+
330
+ end
@@ -26,7 +26,7 @@ describe 'Utils' do
26
26
  expect(assign({ a: 1 }, nil, { b: 2 })).to eq ({ a: 1, b: 2 })
27
27
  expect {
28
28
  assign({}, 123)
29
- }.to raise_error
29
+ }.to raise_error(StandardError)
30
30
  end
31
31
 
32
32
  #------------------------------------------------------------------------------
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion-markdown-it
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0.2
4
+ version: 4.2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Walker
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-04-03 00:00:00.000000000 Z
13
+ date: 2015-06-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mdurl-rb