greenmat 3.2.2.1 → 3.2.2.2

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
  SHA1:
3
- metadata.gz: 80fadf21193eda5c5eab714095a6d86a0d608d27
4
- data.tar.gz: a12b70fb72898b4fc831abf617cad4f92017bfd5
3
+ metadata.gz: ad510ebbbe81b765116b386b8ced689042d16bda
4
+ data.tar.gz: 8a9a99fea907d338c33f6191b67b2bf6824dc3ad
5
5
  SHA512:
6
- metadata.gz: 0c4ae5bcfb8486f165bf8606c220d89e0877c6bd51c6d23b3bde3ceb3a818c1fdea613efdd433c71eab53d0dde327f017fa4be42f7fbee449af96dce0564c387
7
- data.tar.gz: 3e2b9324e321d3660e2f9ba4ba3580e6ef18c61ad7857ceccdfb3a89ddd2930edf87e9c6bb9cd77664646d1f2639d17bdf086fa8210e359ee27e9c95889ed532
6
+ metadata.gz: d67f98f40aa8f3847189a345de7e38ee2852c372b91acc767d0e546c424d3e63e18aa6566de0fc21859d1894fc949fa70bf43cc04ddeceff3ed7efd8c6b021c3
7
+ data.tar.gz: 64b1a708033a21a9f4554b2d5d5fff44b2a1d116a46cd7331478410ea13ff37067a850925c4ca47434815620b63d8f8470fe2e1871460530012fe4a6b66a49bc
@@ -6,9 +6,9 @@ install: travis_retry bundle install --without=benchmark
6
6
 
7
7
  rvm:
8
8
  - 2.0.0
9
- - 2.1
10
- - 2.2
11
- - ruby-head
12
-
9
+ - 2.1.10
10
+ - 2.2.6
11
+ - 2.3.3
12
+ - 2.4.0
13
13
  notifications:
14
14
  email: false
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v3.2.2.2
6
+
7
+ * Fix bugs in UTF-8 handling. [#3](https://github.com/increments/greenmat/pull/3) ([@gfx](https://github.com/gfx))
8
+
5
9
  ## v3.2.2.1
6
10
 
7
11
  * Fix a bug where bad memory access would happen in a document starting with `@`.
@@ -16,6 +16,7 @@
16
16
 
17
17
  #include "buffer.h"
18
18
  #include "autolink.h"
19
+ #include "houdini.h"
19
20
 
20
21
  #include <string.h>
21
22
  #include <stdlib.h>
@@ -169,7 +170,7 @@ sd_autolink__www(
169
170
  {
170
171
  size_t link_end;
171
172
 
172
- if (max_rewind > 0 && !ispunct(data[-1]) && !isspace(data[-1]))
173
+ if (max_rewind > 0 && !ispunct(data[-1]) && is_non_space(data[-1]))
173
174
  return 0;
174
175
 
175
176
  if (size < 4 || memcmp(data, "www.", strlen("www.")) != 0)
@@ -180,7 +181,7 @@ sd_autolink__www(
180
181
  if (link_end == 0)
181
182
  return 0;
182
183
 
183
- while (link_end < size && !isspace(data[link_end]))
184
+ while (link_end < size && is_non_space(data[link_end]))
184
185
  link_end++;
185
186
 
186
187
  link_end = autolink_delim(data, link_end, max_rewind, size);
@@ -222,7 +223,7 @@ sd_autolink__email(
222
223
  return 0;
223
224
 
224
225
  for (link_end = 0; link_end < size; ++link_end) {
225
- uint8_t c = data[link_end];
226
+ char c = data[link_end];
226
227
 
227
228
  if (isalnum(c))
228
229
  continue;
@@ -280,7 +281,7 @@ sd_autolink__url(
280
281
  return 0;
281
282
 
282
283
  link_end += domain_len;
283
- while (link_end < size && !isspace(data[link_end]))
284
+ while (link_end < size && is_non_space(data[link_end]))
284
285
  link_end++;
285
286
 
286
287
  link_end = autolink_delim(data, link_end, max_rewind, size);
@@ -1,6 +1,7 @@
1
1
  #ifndef HOUDINI_H__
2
2
  #define HOUDINI_H__
3
3
 
4
+ #include <stdlib.h>
4
5
  #include "buffer.h"
5
6
 
6
7
  #ifdef __cplusplus
@@ -22,6 +23,8 @@ extern void houdini_escape_html(struct buf *ob, const uint8_t *src, size_t size)
22
23
  extern void houdini_escape_html0(struct buf *ob, const uint8_t *src, size_t size, int secure);
23
24
  extern void houdini_escape_href(struct buf *ob, const uint8_t *src, size_t size);
24
25
 
26
+ #define is_non_space(c) (!isspace(c) || (c) >= 0x7f)
27
+
25
28
  #ifdef __cplusplus
26
29
  }
27
30
  #endif
@@ -137,7 +137,7 @@ rndr_blockcode(struct buf *ob, const struct buf *text, const struct buf *lang, v
137
137
 
138
138
  if (i < lang->size) {
139
139
  size_t org = i;
140
- while (i < lang->size && !isspace(lang->data[i]))
140
+ while (i < lang->size && is_non_space(lang->data[i]))
141
141
  i++;
142
142
 
143
143
  if (lang->data[org] == '.')
@@ -22,8 +22,8 @@ Gem::Specification.new do |s|
22
22
  s.require_paths = ["lib"]
23
23
 
24
24
  s.add_development_dependency "nokogiri", "~> 1.6.0"
25
+ s.add_development_dependency "rake", "~> 10.0"
25
26
  s.add_development_dependency "rake-compiler", "~> 0.8.3"
26
27
  s.add_development_dependency "rspec", "~> 3.2"
27
- s.add_development_dependency "rubygems-xcodeproj_generator", '~> 0.1'
28
28
  s.add_development_dependency "test-unit", "~> 2.5.4"
29
29
  end
@@ -1,3 +1,3 @@
1
1
  module Greenmat
2
- VERSION = '3.2.2.1'
2
+ VERSION = '3.2.2.2'
3
3
  end
@@ -131,6 +131,24 @@ HTML
131
131
  html_equal exp, rd
132
132
  end
133
133
 
134
+ def test_auto_linked_www_utf8_issue
135
+ rd = render_with({ autolink: true }, "www.example.com/码")
136
+ exp = %{<p><a href="http://www.example.com/%E7%A0%81">www.example.com/码</a></p>\n}
137
+ assert_equal exp, rd
138
+ end
139
+
140
+ def test_auto_linked_url_utf8_issue
141
+ rd = render_with({ autolink: true }, "http://example.com/码")
142
+ exp = %{<p><a href="http://example.com/%E7%A0%81">http://example.com/码</a></p>\n}
143
+ assert_equal exp, rd
144
+ end
145
+
146
+ def test_auto_linked_email_utf8_issue
147
+ rd = render_with({ autolink: true }, "r@example.comあ")
148
+ exp = %{<p><a href="mailto:r@example.com">r@example.com</a>あ</p>\n}
149
+ assert_equal exp, rd
150
+ end
151
+
134
152
  def test_memory_leak_when_parsing_char_links
135
153
  @markdown.render(<<-leaks)
136
154
  2. Identify the wild-type cluster and determine all clusters
@@ -243,6 +261,12 @@ fenced
243
261
  assert !out.include?("<pre><code>")
244
262
  end
245
263
 
264
+ def test_that_fenced_flag_works_with_utf8
265
+ text = "```ム\ncode\n```"
266
+ out = Greenmat::Markdown.new(Greenmat::Render::HTML, :fenced_code_blocks => true).render(text)
267
+ assert out.include?(%{<pre><code class="ム">})
268
+ end
269
+
246
270
  def test_that_indented_flag_works
247
271
  text = <<indented
248
272
  This is a simple text
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: greenmat
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.2.1
4
+ version: 3.2.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Natacha Porté
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-13 00:00:00.000000000 Z
12
+ date: 2017-02-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -26,47 +26,47 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: 1.6.0
28
28
  - !ruby/object:Gem::Dependency
29
- name: rake-compiler
29
+ name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.8.3
34
+ version: '10.0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.8.3
41
+ version: '10.0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: rspec
43
+ name: rake-compiler
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '3.2'
48
+ version: 0.8.3
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '3.2'
55
+ version: 0.8.3
56
56
  - !ruby/object:Gem::Dependency
57
- name: rubygems-xcodeproj_generator
57
+ name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '0.1'
62
+ version: '3.2'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '0.1'
69
+ version: '3.2'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: test-unit
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -126,7 +126,6 @@ files:
126
126
  - lib/greenmat/version.rb
127
127
  - spec/greenmat/markdown_spec.rb
128
128
  - spec/spec_helper.rb
129
- - tasks/generate_xcode_project.rake
130
129
  - tasks/greenmat.rake
131
130
  - tasks/spec.rake
132
131
  - test/MarkdownTest_1.0.3/MarkdownTest.pl
@@ -247,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
246
  version: '0'
248
247
  requirements: []
249
248
  rubyforge_project:
250
- rubygems_version: 2.4.6
249
+ rubygems_version: 2.6.8
251
250
  signing_key:
252
251
  specification_version: 4
253
252
  summary: A Markdown parser for Qiita, based on Redcarpet.
@@ -1,5 +0,0 @@
1
- require 'rubygems/xcodeproj_generator/rake_task'
2
-
3
- Rubygems::XcodeprojGenerator::RakeTask.new do |project|
4
- project.build_command = 'bundle exec rake compile'
5
- end