qiita-markdown 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of qiita-markdown might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2246b9c7de465987d8096f8f06dff05874c31b1
4
- data.tar.gz: 7f980024c9522ba903c7ffaa6da2964b4b78d907
3
+ metadata.gz: 180a959e88bbb1c45168ff83dcf6c3df486f12d7
4
+ data.tar.gz: b7e6dff4bf6b4810ccdc14fabb1ebb8c4c081053
5
5
  SHA512:
6
- metadata.gz: c83fa85dced0ec7c9dc7f4962073b5576b9dc6ef6b6c2616cb3fd6bcb033ae56e1f85a77553b9f8d350c030f5f711b57fd0d0a337bfa0eaf6671cd142675b2e3
7
- data.tar.gz: ae5a0ccaf8a142815d3fefc1030f24bda3cfab000abc75af67c698df4771b7cae64348908e0e53a419e637bbdba153a952aae34a42b7bdbdf2a1e43cb4b1e467
6
+ metadata.gz: c13f02a0d3b10205576e12233a80f880ac6b540897bcc5bc7ab8eefde14a1090055dd8c452ac09bad53e5b6b85e49bef74b1aabe03e2b3df7b87bca5f4babc0e
7
+ data.tar.gz: 1154d125bf9c9844e61242810b3610ace6b59b197edbd925228435246f0b3a49980686d51270d50ad9966b1449aadb1bb289f81623829f7c43de60b1f6f8b66c
data/.rubocop.yml ADDED
@@ -0,0 +1,7 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ Style/StringLiterals:
4
+ EnforcedStyle: double_quotes
5
+
6
+ Style/TrailingComma:
7
+ EnforcedStyleForMultiline: comma
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,103 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`
2
+ # on 2015-03-12 12:56:25 +0900 using RuboCop version 0.29.1.
3
+ # The point is for the user to remove these configuration records
4
+ # one by one as the offenses are removed from the code base.
5
+ # Note that changes in the inspected code, or installation of new
6
+ # versions of RuboCop, may require this file to be generated again.
7
+
8
+ # Offense count: 1
9
+ Metrics/AbcSize:
10
+ Max: 21
11
+
12
+ # Offense count: 1
13
+ # Configuration parameters: CountComments.
14
+ Metrics/ClassLength:
15
+ Max: 169
16
+
17
+ # Offense count: 27
18
+ # Configuration parameters: AllowURI, URISchemes.
19
+ Metrics/LineLength:
20
+ Max: 122
21
+
22
+ # Offense count: 3
23
+ # Configuration parameters: CountComments.
24
+ Metrics/MethodLength:
25
+ Max: 17
26
+
27
+ # Offense count: 1
28
+ # Cop supports --auto-correct.
29
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
30
+ Style/AndOr:
31
+ Enabled: false
32
+
33
+ # Offense count: 3
34
+ # Cop supports --auto-correct.
35
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
36
+ Style/BarePercentLiterals:
37
+ Enabled: false
38
+
39
+ # Offense count: 1
40
+ Style/ConstantName:
41
+ Enabled: false
42
+
43
+ # Offense count: 10
44
+ Style/Documentation:
45
+ Enabled: false
46
+
47
+ # Offense count: 3
48
+ Style/DoubleNegation:
49
+ Enabled: false
50
+
51
+ # Offense count: 1
52
+ # Configuration parameters: Exclude.
53
+ Style/FileName:
54
+ Enabled: false
55
+
56
+ # Offense count: 1
57
+ # Configuration parameters: MinBodyLength.
58
+ Style/GuardClause:
59
+ Enabled: false
60
+
61
+ # Offense count: 1
62
+ # Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
63
+ Style/Next:
64
+ Enabled: false
65
+
66
+ # Offense count: 9
67
+ # Cop supports --auto-correct.
68
+ # Configuration parameters: PreferredDelimiters.
69
+ Style/PercentLiteralDelimiters:
70
+ Enabled: false
71
+
72
+ # Offense count: 1
73
+ # Cop supports --auto-correct.
74
+ Style/PerlBackrefs:
75
+ Enabled: false
76
+
77
+ # Offense count: 10
78
+ # Configuration parameters: NamePrefix, NamePrefixBlacklist.
79
+ Style/PredicateName:
80
+ Enabled: false
81
+
82
+ # Offense count: 2
83
+ # Configuration parameters: MaxSlashes.
84
+ Style/RegexpLiteral:
85
+ Enabled: false
86
+
87
+ # Offense count: 2
88
+ # Cop supports --auto-correct.
89
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
90
+ Style/SignalException:
91
+ Enabled: false
92
+
93
+ # Offense count: 2
94
+ # Cop supports --auto-correct.
95
+ # Configuration parameters: EnforcedStyleForMultiline, SupportedStyles.
96
+ Style/TrailingComma:
97
+ Enabled: false
98
+
99
+ # Offense count: 6
100
+ # Cop supports --auto-correct.
101
+ # Configuration parameters: WordRegex.
102
+ Style/WordArray:
103
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## Unreleased
2
+
3
+ ## 0.3.0
4
+ - Introduce another processor Qiita::Markdown::SummaryProcessor, which is for rendering a summary of markdown document.
5
+
1
6
  ## 0.2.2
2
7
  - Fix a bug that raised error on rendering `<a>` tag with href for unknown fragment inside of `<sup>` tag (e.g. `<sup><a href="#foo.1">Link</a></sup>`)
3
8
 
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in qiita-markdown.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -12,7 +12,7 @@ Qiita-specified markdown processor.
12
12
  * Task list
13
13
  * Footnotes
14
14
 
15
- ## Usage
15
+ ## Basic Usage
16
16
  Qiita::Markdown::Processor provides markdown rendering logic.
17
17
 
18
18
  ```ruby
@@ -62,3 +62,29 @@ processor.call(text)
62
62
  processor = Qiita::Markdown::Processor.new(asset_root: "http://example.com/assets")
63
63
  processor.call(text)
64
64
  ```
65
+
66
+ ## Rendering Summary
67
+ There's another processor Qiita::Markdown::SummaryProcessor,
68
+ which is for rendering a summary of markdown document.
69
+ It simplifies a document by removing complex markups
70
+ and also truncates it to a specific length without breaking the document structure.
71
+
72
+ Note that this processor does not produce the `:codes` output in contrast to the Processor.
73
+
74
+ ### Context
75
+
76
+ SummaryProcessor accepts the following context in addition to the Processor's context:
77
+
78
+ ```ruby
79
+ {
80
+ truncate: {
81
+ length: 100, # Documents will be truncated if it exceeds this character count. (Integer)
82
+ omission: '…' # A string added to the end of document when it's truncated. (String, nil)
83
+ }
84
+ }
85
+ ```
86
+
87
+ ```ruby
88
+ processor = Qiita::Markdown::SummaryProcessor.new(truncate: { length: 80 })
89
+ processor.call(text)
90
+ ```
data/Rakefile CHANGED
@@ -1,5 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require "rubocop/rake_task"
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
- task default: :spec
6
+ RuboCop::RakeTask.new(:style)
7
+ task default: [:spec, :style]
@@ -13,7 +13,10 @@ require "qiita/markdown/filters/footnote"
13
13
  require "qiita/markdown/filters/mention"
14
14
  require "qiita/markdown/filters/redcarpet"
15
15
  require "qiita/markdown/filters/sanitize"
16
+ require "qiita/markdown/filters/simplify"
16
17
  require "qiita/markdown/filters/syntax_highlight"
17
18
  require "qiita/markdown/filters/toc"
19
+ require "qiita/markdown/filters/truncate"
18
20
  require "qiita/markdown/processor"
21
+ require "qiita/markdown/summary_processor"
19
22
  require "qiita/markdown/version"
@@ -15,7 +15,7 @@ module Qiita
15
15
  def call
16
16
  result[:codes] ||= []
17
17
  doc.search("pre").each do |pre|
18
- if code = pre.at("code")
18
+ if (code = pre.at("code"))
19
19
  label = Label.new(code["class"])
20
20
  filename = label.filename
21
21
  language = label.language
@@ -0,0 +1,47 @@
1
+ module Qiita
2
+ module Markdown
3
+ module Filters
4
+ # A filter for simplifying document structure by removing complex markups
5
+ # (mainly block elements) and complex contents.
6
+ #
7
+ # The logic of this filter is similar to the `Sanitize` filter, but this
8
+ # does not use the `sanitize` gem internally for the following reasons:
9
+ #
10
+ # * Each filter should do only its own responsibility, and this filter is
11
+ # _not_ for sanitization.
12
+ #
13
+ # * The `sanitize` gem automatically adds extra transformers even if we
14
+ # want to clean up only some elements, and they would be run in the
15
+ # `Sanitize` filter later.
16
+ # https://github.com/rgrove/sanitize/blob/v3.1.2/lib/sanitize.rb#L77-L100
17
+ class Simplify < HTML::Pipeline::Filter
18
+ SIMPLE_ELEMENTS = %w(a b code em i ins q s samp span strike strong sub sup var)
19
+
20
+ COMPLEX_CONTENT_ELEMENTS = %w(table)
21
+
22
+ def call
23
+ remove_complex_contents
24
+ clean_complex_markups
25
+ doc
26
+ end
27
+
28
+ private
29
+
30
+ # Remove complex elements along with their contents entirely.
31
+ def remove_complex_contents
32
+ selector = COMPLEX_CONTENT_ELEMENTS.join(",")
33
+ doc.search(selector).each(&:remove)
34
+ end
35
+
36
+ # Remove complex markups while keeping their contents.
37
+ def clean_complex_markups
38
+ doc.traverse do |node|
39
+ next unless node.element?
40
+ next if SIMPLE_ELEMENTS.include?(node.name)
41
+ node.replace(node.children)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -32,7 +32,7 @@ module Qiita
32
32
 
33
33
  def call
34
34
  outer = Nokogiri::HTML.fragment(%Q[<div class="code-frame" data-lang="#{language}">])
35
- frame = outer.at('div')
35
+ frame = outer.at("div")
36
36
  frame.add_child(filename_node) if filename
37
37
  frame.add_child(highlighted_node)
38
38
  @node.replace(outer)
@@ -47,7 +47,7 @@ module Qiita
47
47
  end
48
48
 
49
49
  def id
50
- @node.text.downcase.gsub(/[^\p{Word}\- ]/u, '').gsub(' ', '-')
50
+ @node.text.downcase.gsub(/[^\p{Word}\- ]/u, "").gsub(" ", "-")
51
51
  end
52
52
 
53
53
  def increment
@@ -0,0 +1,81 @@
1
+ module Qiita
2
+ module Markdown
3
+ module Filters
4
+ # A filter for truncating a document without breaking the document
5
+ # structure.
6
+ #
7
+ # You can pass `:length` and `:omission` option to :truncate context.
8
+ #
9
+ # @example
10
+ # Truncate.new(doc, truncate: { length: 50, omission: '... (continued)' })
11
+ class Truncate < HTML::Pipeline::Filter
12
+ DEFAULT_OPTIONS = {
13
+ length: 100,
14
+ omission: "…".freeze
15
+ }.freeze
16
+
17
+ def call
18
+ @current_length = 0
19
+ @previous_char_was_blank = false
20
+
21
+ traverse(doc) do |node|
22
+ if exceeded?
23
+ node.remove
24
+ elsif node.text?
25
+ process_text_node(node)
26
+ end
27
+ end
28
+
29
+ doc
30
+ end
31
+
32
+ private
33
+
34
+ # Traverse the given node recursively in the depth-first order.
35
+ # Note that we cannot use Nokogiri::XML::Node#traverse
36
+ # since it traverses the node's descendants _before_ the node itself.
37
+ # https://github.com/sparklemotion/nokogiri/blob/v1.6.6.2/lib/nokogiri/xml/node.rb#L571-L574
38
+ def traverse(node, &block)
39
+ block.call(node)
40
+
41
+ node.children.each do |child_node|
42
+ traverse(child_node, &block)
43
+ end
44
+ end
45
+
46
+ def exceeded?
47
+ @current_length > max_length
48
+ end
49
+
50
+ def process_text_node(node)
51
+ node.content.each_char.with_index do |char, index|
52
+ current_char_is_blank = char.strip.empty?
53
+
54
+ if !@previous_char_was_blank || !current_char_is_blank
55
+ @current_length += 1
56
+ end
57
+
58
+ @previous_char_was_blank = current_char_is_blank
59
+
60
+ if exceeded?
61
+ node.content = node.content.slice(0...(index - omission.size)) + omission
62
+ break
63
+ end
64
+ end
65
+ end
66
+
67
+ def max_length
68
+ options[:length]
69
+ end
70
+
71
+ def omission
72
+ options[:omission] || "".freeze
73
+ end
74
+
75
+ def options
76
+ @options ||= DEFAULT_OPTIONS.merge(context[:truncate] || {})
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,23 @@
1
+ module Qiita
2
+ module Markdown
3
+ # A processor for rendering a summary of markdown document. This simplifies
4
+ # a document by removing complex markups and also truncates it to a
5
+ # specific length without breaking the document structure.
6
+ class SummaryProcessor < Processor
7
+ DEFAULT_FILTERS = [
8
+ Filters::Redcarpet,
9
+ Filters::Simplify,
10
+ HTML::Pipeline::EmojiFilter,
11
+ Filters::Mention,
12
+ Filters::Sanitize,
13
+ Filters::Truncate
14
+ ]
15
+
16
+ # @note Modify filters if you want.
17
+ # @return [Array<HTML::Pipeline::Filter>]
18
+ def filters
19
+ @filters ||= DEFAULT_FILTERS
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  module Qiita
2
2
  module Markdown
3
- VERSION = "0.2.2"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "pry"
30
30
  spec.add_development_dependency "rake", "~> 10.0"
31
31
  spec.add_development_dependency "rspec", "3.1.0"
32
+ spec.add_development_dependency "rubocop", "~> 0.29"
32
33
  end
@@ -256,13 +256,13 @@ describe Qiita::Markdown::Processor do
256
256
  @justin
257
257
  @justin
258
258
  @mallory@github
259
- @#{?o * 33}
259
+ @#{'o' * 33}
260
260
  @oo
261
261
  EOS
262
262
  end
263
263
 
264
264
  it "extracts mentions correctly" do
265
- expect(result[:mentioned_usernames]).to eq %W[
265
+ expect(result[:mentioned_usernames]).to eq %w[
266
266
  alice
267
267
  dave
268
268
  ell_en
@@ -522,7 +522,7 @@ describe Qiita::Markdown::Processor do
522
522
  end
523
523
  end
524
524
 
525
- context 'with footenotes syntax' do
525
+ context "with footenotes syntax" do
526
526
  let(:markdown) do
527
527
  <<-EOS.strip_heredoc
528
528
  [^1]
@@ -548,7 +548,7 @@ describe Qiita::Markdown::Processor do
548
548
  end
549
549
  end
550
550
 
551
- context 'with manually written link inside of <sup> tag' do
551
+ context "with manually written link inside of <sup> tag" do
552
552
  let(:markdown) do
553
553
  <<-EOS.strip_heredoc
554
554
  <sup>[Qiita](http://qiita.com/)</sup>
@@ -562,7 +562,7 @@ describe Qiita::Markdown::Processor do
562
562
  end
563
563
  end
564
564
 
565
- context 'with manually written <a> tag with strange href inside of <sup> tag' do
565
+ context "with manually written <a> tag with strange href inside of <sup> tag" do
566
566
  let(:markdown) do
567
567
  <<-EOS.strip_heredoc
568
568
  <sup><a href="#foo.1">Link</a></sup>
@@ -0,0 +1,235 @@
1
+ require "active_support/core_ext/string/strip"
2
+
3
+ describe Qiita::Markdown::SummaryProcessor do
4
+ describe "#call" do
5
+ subject(:html) do
6
+ result[:output].to_s
7
+ end
8
+
9
+ let(:context) do
10
+ {}
11
+ end
12
+
13
+ let(:markdown) do
14
+ fail NotImplementedError
15
+ end
16
+
17
+ let(:result) do
18
+ described_class.new(context).call(markdown)
19
+ end
20
+
21
+ context "with valid condition" do
22
+ let(:markdown) do
23
+ <<-EOS.strip_heredoc
24
+ example
25
+ EOS
26
+ end
27
+
28
+ it "returns a Hash with HTML output and other metadata but no codes" do
29
+ expect(result[:mentioned_usernames]).to be_an Array
30
+ expect(result[:output]).to be_a Nokogiri::HTML::DocumentFragment
31
+ expect(result).not_to have_key(:codes)
32
+ end
33
+ end
34
+
35
+ context "with HTML-characters" do
36
+ let(:markdown) do
37
+ "<>&"
38
+ end
39
+
40
+ it "sanitizes them" do
41
+ should eq <<-EOS.strip_heredoc
42
+ &lt;&gt;&amp;
43
+ EOS
44
+ end
45
+ end
46
+
47
+ context "with code" do
48
+ let(:markdown) do
49
+ <<-EOS.strip_heredoc
50
+ ```ruby
51
+ puts 'hello world'
52
+ ```
53
+ EOS
54
+ end
55
+
56
+ it "returns simple code element" do
57
+ should eq <<-EOS.strip_heredoc
58
+ <code class="ruby">puts 'hello world'
59
+ </code>
60
+ EOS
61
+ end
62
+ end
63
+
64
+ context "with emoji" do
65
+ let(:markdown) do
66
+ ":+1:"
67
+ end
68
+
69
+ it "replaces it with img element" do
70
+ should include("img")
71
+ end
72
+ end
73
+
74
+ context "with image" do
75
+ let(:markdown) do
76
+ <<-EOS.strip_heredoc
77
+ ![Qiita](http://qiita.com/icons/favicons/public/apple-touch-icon.png)
78
+ EOS
79
+ end
80
+
81
+ it "removes it" do
82
+ expect(html.strip).to be_empty
83
+ end
84
+ end
85
+
86
+ context "with line breaks" do
87
+ let(:markdown) do
88
+ <<-EOS.strip_heredoc
89
+ foo
90
+ bar
91
+ EOS
92
+ end
93
+
94
+ it "removes them" do
95
+ should eq <<-EOS.strip_heredoc
96
+ foo
97
+ bar
98
+ EOS
99
+ end
100
+ end
101
+
102
+ context "with paragraphs" do
103
+ let(:markdown) do
104
+ <<-EOS.strip_heredoc
105
+ Lorem ipsum dolor sit amet.
106
+
107
+ Consectetur adipisicing elit.
108
+ EOS
109
+ end
110
+
111
+ it "flattens them" do
112
+ should eq <<-EOS.strip_heredoc
113
+ Lorem ipsum dolor sit amet.
114
+
115
+ Consectetur adipisicing elit.
116
+ EOS
117
+ end
118
+ end
119
+
120
+ context "with normal list items" do
121
+ let(:markdown) do
122
+ <<-EOS.strip_heredoc
123
+ - foo
124
+ - bar
125
+ EOS
126
+ end
127
+
128
+ it "flattens them" do
129
+ should eq <<-EOS.strip_heredoc
130
+
131
+ foo
132
+ bar
133
+
134
+ EOS
135
+ end
136
+ end
137
+
138
+ context "with task list items" do
139
+ let(:markdown) do
140
+ <<-EOS.strip_heredoc
141
+ - [ ] foo
142
+ - [x] bar
143
+ EOS
144
+ end
145
+
146
+ it "flattens them without converting to checkboxes" do
147
+ should eq <<-EOS.strip_heredoc
148
+
149
+ [ ] foo
150
+ [x] bar
151
+
152
+ EOS
153
+ end
154
+ end
155
+
156
+ context "with table" do
157
+ let(:markdown) do
158
+ <<-EOS.strip_heredoc
159
+ | a | b | c |
160
+ |---|---|---|
161
+ | a | b | c |
162
+ EOS
163
+ end
164
+
165
+ it "removes it entirely" do
166
+ expect(html.strip).to be_empty
167
+ end
168
+ end
169
+
170
+ context "with a simple long document" do
171
+ before do
172
+ context[:truncate] = { length: 10 }
173
+ end
174
+
175
+ let(:markdown) do
176
+ <<-EOS.strip_heredoc
177
+ Lorem ipsum dolor sit amet.
178
+ EOS
179
+ end
180
+
181
+ it "truncates it to the specified length" do
182
+ should eq "Lorem ips…"
183
+ end
184
+ end
185
+
186
+ context "with a long document consisting of nested elements" do
187
+ before do
188
+ context[:truncate] = { length: 10 }
189
+ end
190
+
191
+ let(:markdown) do
192
+ <<-EOS.strip_heredoc
193
+ _[Qiita](http://qiita.com/) is **a technical knowledge sharing and collaboration platform for programmers**._
194
+ EOS
195
+ end
196
+
197
+ it "truncates it while honoring the document structure" do
198
+ should eq '<em><a href="http://qiita.com/">Qiita</a> is <strong>…</strong></em>'
199
+ end
200
+ end
201
+
202
+ context "with a long document including consecutive whitespaces" do
203
+ before do
204
+ context[:truncate] = { length: 10 }
205
+ end
206
+
207
+ let(:markdown) do
208
+ <<-EOS.strip_heredoc
209
+ **12** 4 [ 6](http://qiita.com/)_7
210
+ 9_ 123
211
+ EOS
212
+ end
213
+
214
+ it "truncates it while counting the consecutive whilespaces as one" do
215
+ should eq "<strong>12</strong> 4 <a href=\"http://qiita.com/\"> 6</a><em>7\n9</em>…"
216
+ end
217
+ end
218
+
219
+ context "with truncate: { omission: nil } context" do
220
+ before do
221
+ context[:truncate] = { length: 10, omission: nil }
222
+ end
223
+
224
+ let(:markdown) do
225
+ <<-EOS.strip_heredoc
226
+ Lorem ipsum dolor sit amet.
227
+ EOS
228
+ end
229
+
230
+ it "does not add extra omission text" do
231
+ should eq "Lorem ipsu"
232
+ end
233
+ end
234
+ end
235
+ end
data/spec/spec_helper.rb CHANGED
@@ -9,7 +9,7 @@ RSpec.configure do |config|
9
9
  mocks.verify_partial_doubles = true
10
10
  end
11
11
 
12
- config.default_formatter = 'doc'
12
+ config.default_formatter = "doc"
13
13
  config.filter_run :focus
14
14
  config.run_all_when_everything_filtered = true
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qiita-markdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-10 00:00:00.000000000 Z
11
+ date: 2015-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - '='
193
193
  - !ruby/object:Gem::Version
194
194
  version: 3.1.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '0.29'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '0.29'
195
209
  description:
196
210
  email:
197
211
  - r7kamura@gmail.com
@@ -201,6 +215,8 @@ extra_rdoc_files: []
201
215
  files:
202
216
  - ".gitignore"
203
217
  - ".rspec"
218
+ - ".rubocop.yml"
219
+ - ".rubocop_todo.yml"
204
220
  - ".travis.yml"
205
221
  - CHANGELOG.md
206
222
  - Gemfile
@@ -215,12 +231,16 @@ files:
215
231
  - lib/qiita/markdown/filters/mention.rb
216
232
  - lib/qiita/markdown/filters/redcarpet.rb
217
233
  - lib/qiita/markdown/filters/sanitize.rb
234
+ - lib/qiita/markdown/filters/simplify.rb
218
235
  - lib/qiita/markdown/filters/syntax_highlight.rb
219
236
  - lib/qiita/markdown/filters/toc.rb
237
+ - lib/qiita/markdown/filters/truncate.rb
220
238
  - lib/qiita/markdown/processor.rb
239
+ - lib/qiita/markdown/summary_processor.rb
221
240
  - lib/qiita/markdown/version.rb
222
241
  - qiita-markdown.gemspec
223
242
  - spec/qiita/markdown/processor_spec.rb
243
+ - spec/qiita/markdown/summary_processor_spec.rb
224
244
  - spec/spec_helper.rb
225
245
  homepage: https://github.com/increments/qiita-markdown
226
246
  licenses:
@@ -248,5 +268,6 @@ specification_version: 4
248
268
  summary: Qiita-specified markdown processor.
249
269
  test_files:
250
270
  - spec/qiita/markdown/processor_spec.rb
271
+ - spec/qiita/markdown/summary_processor_spec.rb
251
272
  - spec/spec_helper.rb
252
273
  has_rdoc: