markdown_views 2.1.2 → 2.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/Rakefile +10 -0
- data/lib/markdown_views.rb +1 -0
- data/lib/markdown_views/renderer.rb +27 -4
- data/lib/markdown_views/version.rb +1 -1
- data/markdown_views.gemspec +3 -2
- data/test/strip_comments_test.rb +67 -0
- data/test/test_helper.rb +7 -0
- metadata +43 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25a0fb5b00066a055d0b4c233759673fcd610526e49f2032895fe2fddc3eaf28
|
4
|
+
data.tar.gz: 151a7d490fef3d447bf5e696974fbd3f74bb53264a908bf778636a2aafb877ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '009af435d553af463e18ecf712701e90bdd061658640606fa0243d9bd6207235eef7dffeacb5519730416bafc2f34272478919efb2965bfc63950686af43e9e7'
|
7
|
+
data.tar.gz: b7a7393c0a961f4ecb5ac4caf490209aff862cae5e7ceb2876a847394ed3b2cb905f380fbaaaf505b5e6a964949fa97ab61efd178046ade2304541e6f784668c
|
data/LICENSE.txt
CHANGED
data/Rakefile
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require "rake/testtask"
|
2
3
|
|
3
4
|
task :generate_stylesheet do
|
4
5
|
%w( base16.light base16.dark base16.solarized.light base16.solarized.dark
|
@@ -9,3 +10,12 @@ task :generate_stylesheet do
|
|
9
10
|
`rougify style #{theme} --scope .rouge-highlight > app/assets/stylesheets/rouge.#{theme}.css`
|
10
11
|
end
|
11
12
|
end
|
13
|
+
|
14
|
+
|
15
|
+
Rake::TestTask.new(:test) do |t|
|
16
|
+
t.libs << "test"
|
17
|
+
t.libs << "lib"
|
18
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
19
|
+
end
|
20
|
+
|
21
|
+
task :default => :test
|
data/lib/markdown_views.rb
CHANGED
@@ -4,9 +4,9 @@ module MarkdownViews
|
|
4
4
|
|
5
5
|
def render(template)
|
6
6
|
out = template.to_s
|
7
|
-
strip_comments
|
7
|
+
out = strip_comments(out) if MarkdownViews.strip_comments
|
8
8
|
out = render_md(out)
|
9
|
-
strip_comments
|
9
|
+
out = strip_comments(out) if MarkdownViews.strip_comments
|
10
10
|
out.html_safe
|
11
11
|
end
|
12
12
|
|
@@ -24,8 +24,31 @@ module MarkdownViews
|
|
24
24
|
MarkdownViews.rouge_opts[:formatter] || Rouge::Formatters::HTML.new
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
# removes single & multi-line comments
|
28
|
+
# if any content besides comment & whitespace is on same line(s), strips just the comment.
|
29
|
+
# if no other content, strips the lines & whitespace too.
|
30
|
+
def strip_comments(input)
|
31
|
+
# ^[ \t]*(<!--.*?-->)++[ \t]*\r?\n lines with just comments
|
32
|
+
# | or
|
33
|
+
# <!--.*?--> comments on lines with other content
|
34
|
+
#
|
35
|
+
# ^ start of line
|
36
|
+
# [ \t]* optional spaces or tabs
|
37
|
+
# (<!--.*?-->)++
|
38
|
+
# <!-- start of html comment
|
39
|
+
# .*? any char, incl linefeed (for multi-line comments)
|
40
|
+
# lazy (non-greedy): *?
|
41
|
+
# --> end of html comment
|
42
|
+
# ++ possessive match - prevents a match across comment boundaries
|
43
|
+
# ie: prevent matching this: <!-- a --> keep <!-- b -->
|
44
|
+
# explanation: initially .*? will refuse to match --> because it's
|
45
|
+
# non-greedy. but, in search of pre/post whitespace, the regex engine
|
46
|
+
# could backtrack and ask .*? to match an --> as long as there's
|
47
|
+
# another --> later. possessive disables the backtracking.
|
48
|
+
# can combine <!-- a --><!-- b --> into one match, which is of no harm.
|
49
|
+
# [ \t]* optional spaces or tabs
|
50
|
+
# \r?\n end of line (either unix or windows style)
|
51
|
+
input.gsub(/^[ \t]*(<!--.*?-->)++[ \t]*\r?\n|<!--.*?-->/m, '')
|
29
52
|
end
|
30
53
|
|
31
54
|
def transform_code_blocks(doc)
|
data/markdown_views.gemspec
CHANGED
@@ -18,10 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency 'commonmarker', '>= 0.18.2', '< 0.
|
21
|
+
spec.add_dependency 'commonmarker', '>= 0.18.2', '< 0.22'
|
22
|
+
spec.add_dependency 'rails', '>= 5.0', '< 6.2'
|
22
23
|
spec.add_dependency 'rouge', '~> 3.3'
|
23
|
-
spec.add_dependency 'actionpack', '>= 5.0', '< 6.1'
|
24
24
|
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.5"
|
26
|
+
spec.add_development_dependency "minitest-reporters"
|
26
27
|
spec.add_development_dependency "rake"
|
27
28
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class StripCommentsTest < Minitest::Test
|
4
|
+
|
5
|
+
def test_not_greedy
|
6
|
+
assert_equal "ace", strip_comments("a<!-- b -->c<!-- d -->e")
|
7
|
+
assert_equal "a\nc\nd\nf", strip_comments("a\n<!-- b -->c\nd<!-- e -->\nf")
|
8
|
+
end
|
9
|
+
|
10
|
+
# only comment should vanish, without absorbing any outside whitespace
|
11
|
+
def test_intra_line_comments
|
12
|
+
assert_equal "ac", strip_comments("a<!-- b -->c"), 'no whitespace'
|
13
|
+
assert_equal "\nac\n", strip_comments("\na<!-- b -->c\n"), 'no whitespace, with linefeeds'
|
14
|
+
assert_equal "a c", strip_comments("a <!-- b -->c"), 'left whitespace'
|
15
|
+
assert_equal "a c", strip_comments("a<!-- b --> c"), 'right whitespace'
|
16
|
+
assert_equal "a c", strip_comments("a <!-- b --> c"), 'double whitespace'
|
17
|
+
assert_equal "ac", strip_comments("a<!--b-->c"), 'comment w/o whitespace'
|
18
|
+
assert_equal "a \nc", strip_comments("a <!-- b -->\nc"), 'trailing comment'
|
19
|
+
# could drop trailing space, but is unnecessary
|
20
|
+
assert_equal "a\n c", strip_comments("a\n<!-- b --> c"), 'leading comment'
|
21
|
+
end
|
22
|
+
|
23
|
+
# only comment should vanish, without absorbing outside whitespace
|
24
|
+
def test_shared_line_multi_line_comments
|
25
|
+
assert_equal "14", strip_comments("1<!-- 2\n3 -->4"), 'no whitespace'
|
26
|
+
assert_equal "1 4", strip_comments("1 <!-- 2\n3 --> 4"), 'with whitespace'
|
27
|
+
assert_equal "1\n 4", strip_comments("1\n <!-- 2\n3 --> 4"), 'leading whitespace on comment'
|
28
|
+
# ^
|
29
|
+
# should this absorb whitespace (preceeding line 2) on an otherwise empty line? ... debatable
|
30
|
+
assert_equal "1 \n4", strip_comments("1 <!-- 2\n3 --> \n4"), 'trailing whitespace on comment'
|
31
|
+
# ^
|
32
|
+
# this one too (the space following 3)?
|
33
|
+
assert_equal "1 \n 4", strip_comments("1 \n<!-- 2\n3 --> 4"), 'trailing whitespace on line'
|
34
|
+
assert_equal "1 \n 4", strip_comments("1 <!-- 2\n3 -->\n 4"), 'leading whitespace on line'
|
35
|
+
end
|
36
|
+
|
37
|
+
# should make line vanish, including outside whitespace
|
38
|
+
def test_whole_line_single_line_comments
|
39
|
+
assert_equal "1\n3\n", strip_comments("1\n<!-- 2 -->\n3\n"), 'adjacent lines'
|
40
|
+
assert_equal "1\r\n3\r\n", strip_comments("1\r\n<!-- 2 -->\r\n3\r\n"), 'adjacent lines w/windows LF'
|
41
|
+
assert_equal "1\n\n\n3\n", strip_comments("1\n\n<!-- 2 -->\n\n3\n"), 'spaced lines'
|
42
|
+
assert_equal " 1\n 3\n", strip_comments(" 1\n <!-- 2 -->\n 3\n"), 'adjacent lines indented w/spaces'
|
43
|
+
assert_equal "\t1\n\t3\n", strip_comments("\t1\n\t<!-- 2 -->\n\t3\n"), 'adjacent lines indented w/tabs'
|
44
|
+
assert_equal " 1\n\n\n 3\n", strip_comments(" 1\n\n <!-- 2 -->\n\n 3\n"), 'spaced lines indented w/spaces'
|
45
|
+
assert_equal "1 \n \n4\t\n", strip_comments("1 \n \n<!-- 2 --> \n<!--3-->\t\n4\t\n"), 'spaced lines w/trailing whitespace'
|
46
|
+
end
|
47
|
+
|
48
|
+
# should make all lines vanish, including outside whitespace on same lines
|
49
|
+
def test_whole_line_multi_line_comments
|
50
|
+
assert_equal "1\n4\n", strip_comments("1\n<!-- 2\n3 -->\n4\n"), 'adjacent lines'
|
51
|
+
assert_equal "1\n\n\n4\n", strip_comments("1\n\n<!-- 2\n3 -->\n\n4\n"), 'spaced lines'
|
52
|
+
assert_equal " 1\n 4\n", strip_comments(" 1\n <!-- 2\n 3 -->\n 4\n"), 'adjacent lines indented w/spaces'
|
53
|
+
assert_equal "1 \n \n4\t\n", strip_comments("1 \n \n<!-- 2 \n3 -->\t\n4\t\n"), 'spaced lines w/trailing whitespace'
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
def strip_comments(*args)
|
58
|
+
MarkdownViews::Renderer.strip_comments(*args)
|
59
|
+
end
|
60
|
+
|
61
|
+
# hack to make diffs more understandable
|
62
|
+
# otherwise minitest sometimes truncates multi-lines diffs, making them unusable
|
63
|
+
def mu_pp(obj)
|
64
|
+
super obj.gsub("\n", '\n').gsub("\t", '\t')
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markdown_views
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thomas morgan
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commonmarker
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: 0.18.2
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '0.
|
22
|
+
version: '0.22'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,41 +29,41 @@ dependencies:
|
|
29
29
|
version: 0.18.2
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '0.
|
32
|
+
version: '0.22'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: rails
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '5.0'
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '6.2'
|
40
43
|
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - "~>"
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '3.3'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: actionpack
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
46
|
requirements:
|
51
47
|
- - ">="
|
52
48
|
- !ruby/object:Gem::Version
|
53
49
|
version: '5.0'
|
54
50
|
- - "<"
|
55
51
|
- !ruby/object:Gem::Version
|
56
|
-
version: '6.
|
52
|
+
version: '6.2'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rouge
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '3.3'
|
57
60
|
type: :runtime
|
58
61
|
prerelease: false
|
59
62
|
version_requirements: !ruby/object:Gem::Requirement
|
60
63
|
requirements:
|
61
|
-
- - "
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '5.0'
|
64
|
-
- - "<"
|
64
|
+
- - "~>"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: '
|
66
|
+
version: '3.3'
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: bundler
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,6 +78,20 @@ dependencies:
|
|
78
78
|
- - "~>"
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '1.5'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: minitest-reporters
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
81
95
|
- !ruby/object:Gem::Dependency
|
82
96
|
name: rake
|
83
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,11 +144,13 @@ files:
|
|
130
144
|
- lib/markdown_views/renderer.rb
|
131
145
|
- lib/markdown_views/version.rb
|
132
146
|
- markdown_views.gemspec
|
147
|
+
- test/strip_comments_test.rb
|
148
|
+
- test/test_helper.rb
|
133
149
|
homepage: https://github.com/zarqman/markdown_views
|
134
150
|
licenses:
|
135
151
|
- MIT
|
136
152
|
metadata: {}
|
137
|
-
post_install_message:
|
153
|
+
post_install_message:
|
138
154
|
rdoc_options: []
|
139
155
|
require_paths:
|
140
156
|
- lib
|
@@ -149,8 +165,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
165
|
- !ruby/object:Gem::Version
|
150
166
|
version: '0'
|
151
167
|
requirements: []
|
152
|
-
rubygems_version: 3.0.
|
153
|
-
signing_key:
|
168
|
+
rubygems_version: 3.0.8
|
169
|
+
signing_key:
|
154
170
|
specification_version: 4
|
155
171
|
summary: Add .md template handler to Rails.
|
156
|
-
test_files:
|
172
|
+
test_files:
|
173
|
+
- test/strip_comments_test.rb
|
174
|
+
- test/test_helper.rb
|