middleman-blog-similar 1.1.1 → 2.0.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +33 -0
  5. data/.travis.yml +12 -21
  6. data/Gemfile +20 -35
  7. data/Guardfile +9 -9
  8. data/README.md +57 -82
  9. data/Rakefile +9 -7
  10. data/features/default.feature +21 -0
  11. data/features/support/env.rb +20 -10
  12. data/fixtures/test-app/source/{2014-05-08-article0.md → 2014-05-08-article0.html.md} +2 -1
  13. data/fixtures/test-app/source/{2014-05-09-article1.md → 2014-05-09-article1.html.md} +2 -0
  14. data/fixtures/test-app/source/{2014-05-10-article2.md → 2014-05-10-article2.html.md} +1 -1
  15. data/fixtures/test-app/source/{2014-05-11-article3.md → 2014-05-11-article3.html.md} +0 -0
  16. data/fixtures/test-app/source/{2014-05-12-article4.md → 2014-05-12-article4.html.md} +1 -0
  17. data/fixtures/test-app/source/{2014-05-13-article5.md → 2014-05-13-article5.html.md} +1 -0
  18. data/fixtures/test-app/source/{2014-05-14-article6.md → 2014-05-14-article6.html.md} +1 -0
  19. data/fixtures/test-app/source/index.html.slim +1 -0
  20. data/fixtures/test-app/source/layout.slim +1 -1
  21. data/fixtures/test-app/source/layouts/article.slim +6 -6
  22. data/lib/middleman-blog-similar.rb +3 -3
  23. data/lib/middleman-blog-similar/blog_article_extensions.rb +8 -20
  24. data/lib/middleman-blog-similar/database.rb +70 -0
  25. data/lib/middleman-blog-similar/extension.rb +37 -15
  26. data/lib/middleman-blog-similar/helpers.rb +12 -6
  27. data/lib/middleman-blog-similar/models/article.rb +33 -0
  28. data/lib/middleman-blog-similar/models/migration.rb +32 -0
  29. data/lib/middleman-blog-similar/models/tag.rb +10 -0
  30. data/lib/middleman-blog-similar/models/tagging.rb +10 -0
  31. data/lib/middleman-blog-similar/resource_list_manipulator.rb +19 -0
  32. data/lib/middleman-blog-similar/tagger/entagger.rb +17 -0
  33. data/lib/middleman-blog-similar/tagger/mecab.rb +19 -0
  34. data/lib/middleman-blog-similar/tagger/tags.rb +13 -0
  35. data/lib/middleman-blog-similar/version.rb +1 -1
  36. data/lib/middleman_extension.rb +0 -1
  37. data/middleman-blog-similar.gemspec +18 -13
  38. data/spec/middleman-blog-similar/extension_spec.rb +44 -1
  39. data/spec/middleman-blog-similar/tagger_spec.rb +24 -0
  40. data/spec/spec_helper.rb +33 -24
  41. metadata +77 -72
  42. data/features/damerau_levenshtein.feature +0 -20
  43. data/features/levenshtein.feature +0 -20
  44. data/features/word_frequency.feature +0 -15
  45. data/lib/middleman-blog-similar/algorithm.rb +0 -19
  46. data/lib/middleman-blog-similar/algorithm/damerau_levenshtein.rb +0 -7
  47. data/lib/middleman-blog-similar/algorithm/levenshtein.rb +0 -7
  48. data/lib/middleman-blog-similar/algorithm/unigrams.csv +0 -21089
  49. data/lib/middleman-blog-similar/algorithm/word_frequency.rb +0 -69
  50. data/lib/middleman-blog-similar/algorithm/word_frequency/mecab.rb +0 -22
  51. data/lib/middleman-blog-similar/algorithm/word_frequency/tree_tagger.rb +0 -20
  52. data/spec/helper_spec.rb +0 -4
  53. data/spec/middleman-blog-similar/algorithm/damerau_levenshtein_spec.rb +0 -42
  54. data/spec/middleman-blog-similar/algorithm/levenshtein_spec.rb +0 -42
  55. data/spec/middleman-blog-similar/algorithm/word_frequency/mecab_spec.rb +0 -41
  56. data/spec/middleman-blog-similar/algorithm/word_frequency/tree_tagger_spec.rb +0 -52
  57. data/spec/middleman-blog-similar/algorithm/word_frequency_spec.rb +0 -73
  58. data/spec/middleman-blog-similar/algorithm_spec.rb +0 -40
@@ -0,0 +1,19 @@
1
+ require 'natto'
2
+
3
+ module Middleman
4
+ module Blog
5
+ module Similar
6
+ module Tagger
7
+ class Mecab
8
+ def call(article)
9
+ Natto::MeCab.new.parse(article.body.gsub(%r{</?[^>]+>}, ''))
10
+ .split("\n")
11
+ .map { |l| l.split("\t") }
12
+ .select { |l| l[1] && l[1].start_with?('名詞,一般') }
13
+ .map { |l| l[0] }
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ module Middleman
2
+ module Blog
3
+ module Similar
4
+ module Tagger
5
+ class Tags
6
+ def call(article)
7
+ article.tags
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,7 +1,7 @@
1
1
  module Middleman
2
2
  module Blog
3
3
  module Similar
4
- VERSION = "1.1.1"
4
+ VERSION = '2.0.0'.freeze
5
5
  end
6
6
  end
7
7
  end
@@ -1,2 +1 @@
1
1
  require 'middleman-blog-similar'
2
-
@@ -1,21 +1,26 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "middleman-blog-similar/version"
2
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
+ require 'middleman-blog-similar/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = "middleman-blog-similar"
6
+ s.name = 'middleman-blog-similar'
7
7
  s.version = Middleman::Blog::Similar::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
- s.authors = ["Atsushi Nagase"]
10
- s.email = ["a@ngs.io"]
11
- s.homepage = "https://github.com/ngs/middleman-blog-similar"
12
- s.summary = %q{Similar article extension for middleman-blog}
13
- s.description = %q{Similar article extension for middleman-blog}
14
- s.license = "MIT"
9
+ s.authors = ['Atsushi Nagase']
10
+ s.email = ['a@ngs.io']
11
+ s.homepage = 'https://github.com/ngs/middleman-blog-similar'
12
+ s.summary = 'Similar article extension for middleman-blog'
13
+ s.description = <<-EOF
14
+ Similar article extension for middleman-blog.
15
+ Finds similar articles using tags, part-of-speech or custom lambda.
16
+ EOF
17
+ s.license = 'MIT'
15
18
  s.files = `git ls-files -z`.split("\0")
16
19
  s.test_files = `git ls-files -z -- {fixtures,features,spec}/*`.split("\0")
17
- s.require_paths = ["lib"]
18
- s.add_runtime_dependency("middleman-core", ["~> 3.2" ])
19
- s.add_runtime_dependency("middleman-blog", ["~> 3.5" ])
20
- s.add_runtime_dependency("fast-stemmer", ["~> 1.0.2"])
20
+ s.require_paths = ['lib']
21
+ s.required_ruby_version = '>= 2.2.0'
22
+ s.add_runtime_dependency 'activerecord', '~> 5.0', '>= 5.0.0'
23
+ s.add_runtime_dependency 'middleman-core', '~> 4.0', '>= 4.0.0'
24
+ s.add_runtime_dependency 'middleman-blog', '~> 4.0', '>= 4.0.0'
25
+ s.add_dependency 'sqlite3', '~> 1.3'
21
26
  end
@@ -1,4 +1,47 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'Middleman::Blog::SimilarExtension' do
3
+ # rubocop:disable Metrics/BlockLength
4
+ describe Middleman::Blog::SimilarExtension do
5
+ before(:all) { @app = middleman_app('test-app') { activate :similar, db: ':memory:' } }
6
+ let(:app) { @app }
7
+ let(:resource) { app.sitemap.resources.select { |res| res.page_id == page_id }.first }
8
+ let(:page_id) { '2014-05-08-article0' }
9
+ describe 'activation' do
10
+ subject { app.extensions }
11
+ its([:similar]) { is_expected.not_to be_nil }
12
+ its([:blog]) { is_expected.not_to be_nil }
13
+ context 'with unknown tagger' do
14
+ let(:app) { middleman_app('test-app') { activate :similar, db: ':memory:', tagger: 'hoge' } }
15
+ it { expect { app }.to raise_error LoadError, 'cannot load such file -- middleman-blog-similar/tagger/hoge' }
16
+ end
17
+ context 'with invalid tagger' do
18
+ let(:app) { middleman_app('test-app') { activate :similar, db: ':memory:', tagger: 1 } }
19
+ it { expect { app }.to raise_error RuntimeError, /Invalid type for tagger option/ }
20
+ end
21
+ end
22
+ describe 'results' do
23
+ subject { resource.similar_articles.map { |a| [a.page_id, a.data.category || '<none>'].concat a.tags } }
24
+ it { is_expected.to have(4).items }
25
+ its([0]) { is_expected.to eq %w(2014-05-14-article6 <none> dog Brown cat) }
26
+ its([1]) { is_expected.to eq %w(2014-05-12-article4 <none> dog cat fox) }
27
+ its([2]) { is_expected.to eq %w(2014-05-09-article1 test dog cat) }
28
+ its([3]) { is_expected.to eq %w(2014-05-13-article5 <none> dog) }
29
+ context 'when configured with weight map' do
30
+ before :all do
31
+ @app = middleman_app('test-app') do
32
+ activate :similar,
33
+ db: ':memory:',
34
+ tagger: {
35
+ tags: 1,
36
+ category: [2, ->(article) { article.data.category ? [article.data.category] : [] }]
37
+ }
38
+ end
39
+ end
40
+ it { is_expected.to have(4).items }
41
+ its([0]) { is_expected.to eq %w(2014-05-09-article1 test dog cat) }
42
+ its([1]) { is_expected.to eq %w(2014-05-14-article6 <none> dog Brown cat) }
43
+ its([2]) { is_expected.to eq %w(2014-05-12-article4 <none> dog cat fox) }
44
+ its([3]) { is_expected.to eq %w(2014-05-13-article5 <none> dog) }
45
+ end
46
+ end
4
47
  end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'tagger' do
4
+ before(:all) { @app = middleman_app('test-app') {} }
5
+ let(:app) { @app }
6
+ let(:resource) { app.sitemap.resources.select { |res| res.page_id == page_id }.first }
7
+ let(:page_id) { '2014-05-08-article0' }
8
+ subject { described_class.new.call resource }
9
+ describe ::Middleman::Blog::Similar::Tagger::Tags do
10
+ it { is_expected.to eq %w(dog cat brown) }
11
+ end
12
+ describe ::Middleman::Blog::Similar::Tagger::Mecab do
13
+ let(:page_id) { '2014-05-11-article3' }
14
+ it { is_expected.to eq %w(叫び 悪口 教師 西洋 尻 時分 坊ちゃん 国家 この世 人間 国家 隙) }
15
+ context 'written in English' do
16
+ let(:page_id) { '2014-05-10-article2' }
17
+ it { is_expected.to eq %w(quick brown fox jumps over the lazy dog dog dog) }
18
+ end
19
+ end
20
+ describe ::Middleman::Blog::Similar::Tagger::Entagger do
21
+ let(:page_id) { '2014-05-10-article2' }
22
+ it { is_expected.to eq %w(fox jumps dog) }
23
+ end
24
+ end
data/spec/spec_helper.rb CHANGED
@@ -2,25 +2,41 @@ PROJECT_ROOT_PATH = File.dirname(File.dirname(__FILE__))
2
2
 
3
3
  require 'rubygems'
4
4
  $LOAD_PATH.unshift File.join(PROJECT_ROOT_PATH, 'lib')
5
- require 'spork'
6
5
  require 'rspec'
7
- require "middleman-core"
8
- require "middleman-blog"
9
- require "middleman-blog/helpers"
6
+ require 'rspec/collection_matchers'
7
+ require 'rspec/its'
8
+ require 'middleman-core'
9
+ require 'middleman-blog'
10
+ require 'middleman-blog/helpers'
11
+
12
+ require 'codeclimate-test-reporter'
13
+ require 'coveralls'
14
+ require 'simplecov'
15
+
16
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
17
+ Coveralls::SimpleCov::Formatter,
18
+ SimpleCov::Formatter::HTMLFormatter,
19
+ CodeClimate::TestReporter::Formatter
20
+ ]
21
+
22
+ SimpleCov.root(File.expand_path(File.dirname(__FILE__) + '/..'))
23
+ SimpleCov.start
24
+
25
+ ENV['COVERALLS_REPO_TOKEN'] && Coveralls.wear!
10
26
 
11
27
  module SpecHelpers
12
28
  include FileUtils
13
29
 
14
- def middleman_app fixture_path, &block
15
- tmp_dir = File.expand_path("../../tmp", __FILE__)
16
- fixture_dir = File.expand_path("../../fixtures", __FILE__)
17
- fixture_tmp = File.join tmp_dir, "rspec"
30
+ def middleman_app(fixture_path, &block)
31
+ tmp_dir = File.expand_path('../../tmp', __FILE__)
32
+ fixture_dir = File.expand_path('../../fixtures', __FILE__)
33
+ fixture_tmp = File.join tmp_dir, 'rspec'
18
34
  root_dir = File.join fixture_tmp, fixture_path
19
35
  rmtree fixture_tmp
20
36
  mkdir_p tmp_dir
21
37
  cp_r fixture_dir, fixture_tmp
22
- ENV["MM_SOURCE"] = 'source'
23
- ENV["MM_ROOT"] = root_dir
38
+ ENV['MM_SOURCE'] = 'source'
39
+ ENV['MM_ROOT'] = root_dir
24
40
  initialize_commands = @initialize_commands || []
25
41
  initialize_commands.unshift block
26
42
  initialize_commands.unshift lambda {
@@ -28,7 +44,7 @@ module SpecHelpers
28
44
  set :show_exceptions, false
29
45
  activate :blog
30
46
  }
31
- Middleman::Application.server.inst do
47
+ ::Middleman::Application.new do
32
48
  initialize_commands.each do |p|
33
49
  instance_exec(&p)
34
50
  end
@@ -36,23 +52,16 @@ module SpecHelpers
36
52
  end
37
53
  end
38
54
 
39
- Spork.prefork do
40
- RSpec.configure do |config|
41
- config.include SpecHelpers
42
- end
43
- require "middleman-blog-similar"
44
- require "middleman-blog-similar/extension"
55
+ RSpec.configure do |config|
56
+ config.include SpecHelpers
45
57
  end
46
58
 
47
- Spork.each_run do; end
48
-
49
- if ENV['CODECLIMATE_REPO_TOKEN']
50
- CodeClimate::TestReporter.start
51
- require "codeclimate-test-reporter"
52
- end
59
+ require 'middleman-blog-similar/extension'
60
+ require 'middleman-blog-similar'
61
+ Dir.glob(PROJECT_ROOT_PATH + '/lib/middleman-blog-similar/tagger/*') { |file| require file }
53
62
 
54
63
  class String
55
64
  def unindent
56
- gsub(/^#{scan(/^\s*/).min_by{|l|l.length}}/, "").sub(/\n$/, '')
65
+ gsub(/^#{scan(/^\s*/).min_by(&:length)}/, '').sub(/\n$/, '')
57
66
  end
58
67
  end
metadata CHANGED
@@ -1,66 +1,102 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-blog-similar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Atsushi Nagase
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-17 00:00:00.000000000 Z
11
+ date: 2017-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 5.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '5.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.0.0
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: middleman-core
15
35
  requirement: !ruby/object:Gem::Requirement
16
36
  requirements:
17
- - - ~>
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '4.0'
40
+ - - ">="
18
41
  - !ruby/object:Gem::Version
19
- version: '3.2'
42
+ version: 4.0.0
20
43
  type: :runtime
21
44
  prerelease: false
22
45
  version_requirements: !ruby/object:Gem::Requirement
23
46
  requirements:
24
- - - ~>
47
+ - - "~>"
25
48
  - !ruby/object:Gem::Version
26
- version: '3.2'
49
+ version: '4.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 4.0.0
27
53
  - !ruby/object:Gem::Dependency
28
54
  name: middleman-blog
29
55
  requirement: !ruby/object:Gem::Requirement
30
56
  requirements:
31
- - - ~>
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '4.0'
60
+ - - ">="
32
61
  - !ruby/object:Gem::Version
33
- version: '3.5'
62
+ version: 4.0.0
34
63
  type: :runtime
35
64
  prerelease: false
36
65
  version_requirements: !ruby/object:Gem::Requirement
37
66
  requirements:
38
- - - ~>
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '4.0'
70
+ - - ">="
39
71
  - !ruby/object:Gem::Version
40
- version: '3.5'
72
+ version: 4.0.0
41
73
  - !ruby/object:Gem::Dependency
42
- name: fast-stemmer
74
+ name: sqlite3
43
75
  requirement: !ruby/object:Gem::Requirement
44
76
  requirements:
45
- - - ~>
77
+ - - "~>"
46
78
  - !ruby/object:Gem::Version
47
- version: 1.0.2
79
+ version: '1.3'
48
80
  type: :runtime
49
81
  prerelease: false
50
82
  version_requirements: !ruby/object:Gem::Requirement
51
83
  requirements:
52
- - - ~>
84
+ - - "~>"
53
85
  - !ruby/object:Gem::Version
54
- version: 1.0.2
55
- description: Similar article extension for middleman-blog
86
+ version: '1.3'
87
+ description: |2
88
+ Similar article extension for middleman-blog.
89
+ Finds similar articles using tags, part-of-speech or custom lambda.
56
90
  email:
57
91
  - a@ngs.io
58
92
  executables: []
59
93
  extensions: []
60
94
  extra_rdoc_files: []
61
95
  files:
62
- - .gitignore
63
- - .travis.yml
96
+ - ".gitignore"
97
+ - ".rspec"
98
+ - ".rubocop.yml"
99
+ - ".travis.yml"
64
100
  - CHANGELOG.md
65
101
  - CONTRIBUTING.md
66
102
  - Gemfile
@@ -68,43 +104,37 @@ files:
68
104
  - LICENSE.md
69
105
  - README.md
70
106
  - Rakefile
71
- - features/damerau_levenshtein.feature
72
- - features/levenshtein.feature
107
+ - features/default.feature
73
108
  - features/support/env.rb
74
- - features/word_frequency.feature
75
- - fixtures/test-app/source/2014-05-08-article0.md
76
- - fixtures/test-app/source/2014-05-09-article1.md
77
- - fixtures/test-app/source/2014-05-10-article2.md
78
- - fixtures/test-app/source/2014-05-11-article3.md
79
- - fixtures/test-app/source/2014-05-12-article4.md
80
- - fixtures/test-app/source/2014-05-13-article5.md
81
- - fixtures/test-app/source/2014-05-14-article6.md
109
+ - fixtures/test-app/source/2014-05-08-article0.html.md
110
+ - fixtures/test-app/source/2014-05-09-article1.html.md
111
+ - fixtures/test-app/source/2014-05-10-article2.html.md
112
+ - fixtures/test-app/source/2014-05-11-article3.html.md
113
+ - fixtures/test-app/source/2014-05-12-article4.html.md
114
+ - fixtures/test-app/source/2014-05-13-article5.html.md
115
+ - fixtures/test-app/source/2014-05-14-article6.html.md
82
116
  - fixtures/test-app/source/index.html.slim
83
117
  - fixtures/test-app/source/layout.slim
84
118
  - fixtures/test-app/source/layouts/article.slim
85
119
  - fixtures/test-app/source/page.html.slim
86
120
  - lib/middleman-blog-similar.rb
87
- - lib/middleman-blog-similar/algorithm.rb
88
- - lib/middleman-blog-similar/algorithm/damerau_levenshtein.rb
89
- - lib/middleman-blog-similar/algorithm/levenshtein.rb
90
- - lib/middleman-blog-similar/algorithm/unigrams.csv
91
- - lib/middleman-blog-similar/algorithm/word_frequency.rb
92
- - lib/middleman-blog-similar/algorithm/word_frequency/mecab.rb
93
- - lib/middleman-blog-similar/algorithm/word_frequency/tree_tagger.rb
94
121
  - lib/middleman-blog-similar/blog_article_extensions.rb
122
+ - lib/middleman-blog-similar/database.rb
95
123
  - lib/middleman-blog-similar/extension.rb
96
124
  - lib/middleman-blog-similar/helpers.rb
125
+ - lib/middleman-blog-similar/models/article.rb
126
+ - lib/middleman-blog-similar/models/migration.rb
127
+ - lib/middleman-blog-similar/models/tag.rb
128
+ - lib/middleman-blog-similar/models/tagging.rb
129
+ - lib/middleman-blog-similar/resource_list_manipulator.rb
130
+ - lib/middleman-blog-similar/tagger/entagger.rb
131
+ - lib/middleman-blog-similar/tagger/mecab.rb
132
+ - lib/middleman-blog-similar/tagger/tags.rb
97
133
  - lib/middleman-blog-similar/version.rb
98
134
  - lib/middleman_extension.rb
99
135
  - middleman-blog-similar.gemspec
100
- - spec/helper_spec.rb
101
- - spec/middleman-blog-similar/algorithm/damerau_levenshtein_spec.rb
102
- - spec/middleman-blog-similar/algorithm/levenshtein_spec.rb
103
- - spec/middleman-blog-similar/algorithm/word_frequency/mecab_spec.rb
104
- - spec/middleman-blog-similar/algorithm/word_frequency/tree_tagger_spec.rb
105
- - spec/middleman-blog-similar/algorithm/word_frequency_spec.rb
106
- - spec/middleman-blog-similar/algorithm_spec.rb
107
136
  - spec/middleman-blog-similar/extension_spec.rb
137
+ - spec/middleman-blog-similar/tagger_spec.rb
108
138
  - spec/spec_helper.rb
109
139
  homepage: https://github.com/ngs/middleman-blog-similar
110
140
  licenses:
@@ -116,43 +146,18 @@ require_paths:
116
146
  - lib
117
147
  required_ruby_version: !ruby/object:Gem::Requirement
118
148
  requirements:
119
- - - '>='
149
+ - - ">="
120
150
  - !ruby/object:Gem::Version
121
- version: '0'
151
+ version: 2.2.0
122
152
  required_rubygems_version: !ruby/object:Gem::Requirement
123
153
  requirements:
124
- - - '>='
154
+ - - ">="
125
155
  - !ruby/object:Gem::Version
126
156
  version: '0'
127
157
  requirements: []
128
158
  rubyforge_project:
129
- rubygems_version: 2.0.14
159
+ rubygems_version: 2.6.8
130
160
  signing_key:
131
161
  specification_version: 4
132
162
  summary: Similar article extension for middleman-blog
133
- test_files:
134
- - features/damerau_levenshtein.feature
135
- - features/levenshtein.feature
136
- - features/support/env.rb
137
- - features/word_frequency.feature
138
- - fixtures/test-app/source/2014-05-08-article0.md
139
- - fixtures/test-app/source/2014-05-09-article1.md
140
- - fixtures/test-app/source/2014-05-10-article2.md
141
- - fixtures/test-app/source/2014-05-11-article3.md
142
- - fixtures/test-app/source/2014-05-12-article4.md
143
- - fixtures/test-app/source/2014-05-13-article5.md
144
- - fixtures/test-app/source/2014-05-14-article6.md
145
- - fixtures/test-app/source/index.html.slim
146
- - fixtures/test-app/source/layout.slim
147
- - fixtures/test-app/source/layouts/article.slim
148
- - fixtures/test-app/source/page.html.slim
149
- - spec/helper_spec.rb
150
- - spec/middleman-blog-similar/algorithm/damerau_levenshtein_spec.rb
151
- - spec/middleman-blog-similar/algorithm/levenshtein_spec.rb
152
- - spec/middleman-blog-similar/algorithm/word_frequency/mecab_spec.rb
153
- - spec/middleman-blog-similar/algorithm/word_frequency/tree_tagger_spec.rb
154
- - spec/middleman-blog-similar/algorithm/word_frequency_spec.rb
155
- - spec/middleman-blog-similar/algorithm_spec.rb
156
- - spec/middleman-blog-similar/extension_spec.rb
157
- - spec/spec_helper.rb
158
- has_rdoc:
163
+ test_files: []