permalink 1.2.0 → 2.1.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 +7 -0
- data/.github/FUNDING.yml +3 -0
- data/.gitignore +3 -1
- data/.rubocop.yml +13 -0
- data/.travis.yml +7 -0
- data/Gemfile +3 -1
- data/README.md +118 -0
- data/Rakefile +14 -4
- data/lib/permalink.rb +38 -8
- data/lib/permalink/active_record.rb +127 -0
- data/lib/permalink/normalizations/contraction.rb +11 -0
- data/lib/permalink/normalizations/downcase.rb +11 -0
- data/lib/permalink/normalizations/leading_trailing_dashes.rb +11 -0
- data/lib/permalink/normalizations/multiple_dashes.rb +11 -0
- data/lib/permalink/normalizations/non_alphanumeric.rb +12 -0
- data/lib/permalink/normalizations/transliteration.rb +14 -0
- data/lib/permalink/version.rb +4 -2
- data/permalink.gemspec +15 -13
- data/test/permalink/active_record_test.rb +175 -0
- data/test/permalink/normalizations_test.rb +48 -0
- data/test/permalink/permalink_test.rb +22 -0
- data/test/support/post.rb +5 -0
- data/test/support/schema.rb +11 -0
- data/test/support/user.rb +5 -0
- data/test/test_helper.rb +17 -0
- metadata +94 -106
- data/.rspec +0 -1
- data/Gemfile.lock +0 -79
- data/README.markdown +0 -79
- data/lib/permalink/orm/active_record.rb +0 -26
- data/lib/permalink/orm/base.rb +0 -83
- data/lib/permalink/orm/mongo_mapper.rb +0 -28
- data/lib/permalink/orm/mongoid.rb +0 -24
- data/lib/permalink/string_ext.rb +0 -12
- data/spec/permalink/active_record_spec.rb +0 -13
- data/spec/permalink/mongo_mapper_spec.rb +0 -13
- data/spec/permalink/mongoid_spec.rb +0 -13
- data/spec/permalink/string_spec.rb +0 -23
- data/spec/spec_helper.rb +0 -24
- data/spec/support/article.rb +0 -4
- data/spec/support/page.rb +0 -5
- data/spec/support/post.rb +0 -2
- data/spec/support/schema.rb +0 -5
- data/spec/support/shared.rb +0 -95
data/permalink.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
require "permalink/version"
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "./lib/permalink/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "permalink"
|
@@ -9,21 +9,23 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.authors = ["Nando Vieira"]
|
10
10
|
s.email = ["fnando.vieira@gmail.com"]
|
11
11
|
s.homepage = "http://rubygems.org/gems/permalink"
|
12
|
-
s.summary = "Generate permalink attributes on ActiveRecord"
|
12
|
+
s.summary = "Generate permalink attributes on ActiveModel/ActiveRecord"
|
13
13
|
s.description = s.summary
|
14
|
+
s.license = "MIT"
|
15
|
+
s.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
14
16
|
|
15
17
|
s.files = `git ls-files`.split("\n")
|
16
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
-
s.executables = `git ls-files -- bin
|
19
|
+
s.executables = `git ls-files -- bin/*`
|
20
|
+
.split("\n")
|
21
|
+
.map {|f| File.basename(f) }
|
18
22
|
s.require_paths = ["lib"]
|
19
23
|
|
20
|
-
s.
|
21
|
-
s.add_development_dependency "
|
22
|
-
s.add_development_dependency "test-unit"
|
23
|
-
s.add_development_dependency "rspec", "~> 2.7"
|
24
|
-
s.add_development_dependency "mongoid", "~> 2.3"
|
25
|
-
s.add_development_dependency "mongo_mapper", "~> 0.9"
|
26
|
-
s.add_development_dependency "bson_ext"
|
27
|
-
s.add_development_dependency "pry"
|
24
|
+
s.add_dependency "activerecord"
|
25
|
+
s.add_development_dependency "minitest-utils"
|
28
26
|
s.add_development_dependency "rake"
|
27
|
+
s.add_development_dependency "rubocop"
|
28
|
+
s.add_development_dependency "rubocop-fnando"
|
29
|
+
s.add_development_dependency "simplecov"
|
30
|
+
s.add_development_dependency "sqlite3"
|
29
31
|
end
|
@@ -0,0 +1,175 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class ActiveRecordTest < Minitest::Test
|
6
|
+
let(:model) { Post }
|
7
|
+
|
8
|
+
setup do
|
9
|
+
model.delete_all
|
10
|
+
model.permalink :title
|
11
|
+
end
|
12
|
+
|
13
|
+
test "responds to options" do
|
14
|
+
assert model.respond_to?(:permalink_options)
|
15
|
+
end
|
16
|
+
|
17
|
+
test "uses default options" do
|
18
|
+
model.permalink :title
|
19
|
+
record = model.create(title: "Some nice post")
|
20
|
+
assert_equal "some-nice-post", record.permalink
|
21
|
+
end
|
22
|
+
|
23
|
+
test "uses custom attribute" do
|
24
|
+
model.permalink :title, to: :slug
|
25
|
+
record = model.create(title: "Some nice post")
|
26
|
+
assert_equal "some-nice-post", record.slug
|
27
|
+
end
|
28
|
+
|
29
|
+
test "sets permalink before_save" do
|
30
|
+
record = model.new(title: "Some nice post")
|
31
|
+
assert_nil record.permalink
|
32
|
+
record.valid?
|
33
|
+
assert_equal "some-nice-post", record.permalink
|
34
|
+
end
|
35
|
+
|
36
|
+
test "creates unique permalinks" do
|
37
|
+
model.permalink :title, unique: true
|
38
|
+
|
39
|
+
record = model.create(title: "Some nice post")
|
40
|
+
assert_equal "some-nice-post", record.permalink
|
41
|
+
|
42
|
+
record = model.create(title: "Some nice post")
|
43
|
+
assert_equal "some-nice-post-2", record.permalink
|
44
|
+
|
45
|
+
record = model.create(title: "Some nice post")
|
46
|
+
assert_equal "some-nice-post-3", record.permalink
|
47
|
+
end
|
48
|
+
|
49
|
+
test "creates unique permalinks with custom separator" do
|
50
|
+
model.permalink :title, unique: true, separator: "_"
|
51
|
+
|
52
|
+
record = model.create(title: "Some nice post")
|
53
|
+
assert_equal "some_nice_post", record.permalink
|
54
|
+
|
55
|
+
record = model.create(title: "Some nice post")
|
56
|
+
assert_equal "some_nice_post_2", record.permalink
|
57
|
+
end
|
58
|
+
|
59
|
+
test "creates unique permalinks based on scope" do
|
60
|
+
model.permalink :title, unique: true, scope: :user_id
|
61
|
+
|
62
|
+
user = User.create!
|
63
|
+
another_user = User.create!
|
64
|
+
|
65
|
+
# Create posts for user
|
66
|
+
record = model.create(title: "Some nice post", user: user)
|
67
|
+
assert_equal "some-nice-post", record.permalink
|
68
|
+
|
69
|
+
record = model.create(title: "Some nice post", user: user)
|
70
|
+
assert_equal "some-nice-post-2", record.permalink
|
71
|
+
|
72
|
+
# Create posts for another user
|
73
|
+
record = model.create(title: "Some nice post", user: another_user)
|
74
|
+
assert_equal "some-nice-post", record.permalink
|
75
|
+
|
76
|
+
record = model.create(title: "Some nice post", user: another_user)
|
77
|
+
assert_equal "some-nice-post-2", record.permalink
|
78
|
+
end
|
79
|
+
|
80
|
+
test "returns param for unique permalink" do
|
81
|
+
model.permalink :title, to_param: :permalink, unique: true
|
82
|
+
|
83
|
+
record = model.create(title: "Ruby")
|
84
|
+
assert_equal "ruby", record.to_param
|
85
|
+
|
86
|
+
record = model.create(title: "Ruby")
|
87
|
+
assert_equal "ruby-2", record.to_param
|
88
|
+
end
|
89
|
+
|
90
|
+
test "overrides to_param with custom fields" do
|
91
|
+
model.permalink :title, to: :slug, to_param: [:slug, :id, "page"]
|
92
|
+
|
93
|
+
record = model.create(title: "Some nice post")
|
94
|
+
assert_equal "some-nice-post-#{record.id}-page", record.to_param
|
95
|
+
end
|
96
|
+
|
97
|
+
test "ignores blank attributes from to_param" do
|
98
|
+
model.permalink :title, to_param: [:id, " ", nil, "\t", :permalink]
|
99
|
+
|
100
|
+
record = model.create(title: "Some nice post")
|
101
|
+
assert_equal "#{record.id}-some-nice-post", record.to_param
|
102
|
+
end
|
103
|
+
|
104
|
+
test "sets permalink if permalink is blank" do
|
105
|
+
record = model.create(title: "Some nice post", permalink: " ")
|
106
|
+
assert_equal "some-nice-post", record.permalink
|
107
|
+
end
|
108
|
+
|
109
|
+
test "keeps defined permalink" do
|
110
|
+
record = model.create(title: "Some nice post", permalink: "awesome-post")
|
111
|
+
assert_equal "awesome-post", record.permalink
|
112
|
+
end
|
113
|
+
|
114
|
+
test "creates unique permalinks for number-ended titles" do
|
115
|
+
model.permalink :title, unique: true
|
116
|
+
|
117
|
+
record = model.create(title: "Rails 3")
|
118
|
+
assert_equal "rails-3", record.permalink
|
119
|
+
|
120
|
+
record = model.create(title: "Rails 3")
|
121
|
+
assert_equal "rails-3-2", record.permalink
|
122
|
+
end
|
123
|
+
|
124
|
+
test "forces permalink" do
|
125
|
+
model.permalink :title, force: true
|
126
|
+
|
127
|
+
record = model.create(title: "Some nice post")
|
128
|
+
record.update title: "Awesome post"
|
129
|
+
|
130
|
+
assert_equal "awesome-post", record.permalink
|
131
|
+
end
|
132
|
+
|
133
|
+
test "forces permalink and keep unique" do
|
134
|
+
model.permalink :title, force: true, unique: true
|
135
|
+
|
136
|
+
record = model.create(title: "Some nice post")
|
137
|
+
|
138
|
+
record.update title: "Awesome post"
|
139
|
+
assert_equal "awesome-post", record.permalink
|
140
|
+
|
141
|
+
record = model.create(title: "Awesome post")
|
142
|
+
assert_equal "awesome-post-2", record.permalink
|
143
|
+
end
|
144
|
+
|
145
|
+
test "keeps same permalink when another field changes" do
|
146
|
+
model.permalink :title, force: true, unique: true
|
147
|
+
|
148
|
+
record = model.create(title: "Some nice post")
|
149
|
+
record.update description: "some description"
|
150
|
+
|
151
|
+
assert_equal "some-nice-post", record.permalink
|
152
|
+
end
|
153
|
+
|
154
|
+
test "overrides to_param method" do
|
155
|
+
model.permalink :title
|
156
|
+
|
157
|
+
record = model.create(title: "Some nice post")
|
158
|
+
assert_equal "#{record.id}-some-nice-post", record.to_param
|
159
|
+
end
|
160
|
+
|
161
|
+
test "uses custom separator" do
|
162
|
+
model.permalink :title, separator: "_"
|
163
|
+
record = model.create(title: "Some nice post")
|
164
|
+
|
165
|
+
assert_equal "#{record.id}_some_nice_post", record.to_param
|
166
|
+
end
|
167
|
+
|
168
|
+
test "uses custom normalization" do
|
169
|
+
model.permalink :title,
|
170
|
+
normalizations: [->(input, _options) { input.to_s.reverse }]
|
171
|
+
record = model.create(title: "Some nice post")
|
172
|
+
|
173
|
+
assert_equal "Some nice post".reverse, record.permalink
|
174
|
+
end
|
175
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class NormalizationsTest < Minitest::Test
|
6
|
+
test "applies contraction replacement" do
|
7
|
+
assert_equal "its", Permalink::Normalizations::Contraction.call("it's")
|
8
|
+
assert_equal "aint", Permalink::Normalizations::Contraction.call("ain’t")
|
9
|
+
end
|
10
|
+
|
11
|
+
test "applies transliteration" do
|
12
|
+
assert_equal "aeiou",
|
13
|
+
Permalink::Normalizations::Transliteration.call("áéíóú")
|
14
|
+
end
|
15
|
+
|
16
|
+
test "applies downcasing" do
|
17
|
+
assert_equal "test", Permalink::Normalizations::Downcase.call("TEST")
|
18
|
+
end
|
19
|
+
|
20
|
+
test "applies lead/trailing dashes replacement" do
|
21
|
+
permalink = Permalink::Normalizations::LeadingTrailingDashes.call("-test-")
|
22
|
+
assert_equal "test", permalink
|
23
|
+
end
|
24
|
+
|
25
|
+
test "applies multiple dashes replacement" do
|
26
|
+
permalink =
|
27
|
+
Permalink::Normalizations::MultipleDashes.call("nice----permalink")
|
28
|
+
assert_equal "nice-permalink", permalink
|
29
|
+
end
|
30
|
+
|
31
|
+
test "applies multiple dashes replacement with custom separator" do
|
32
|
+
permalink = Permalink::Normalizations::MultipleDashes
|
33
|
+
.call("nice----permalink", separator: "_")
|
34
|
+
assert_equal "nice_permalink", permalink
|
35
|
+
end
|
36
|
+
|
37
|
+
test "applies non-alphanumeric replacement" do
|
38
|
+
permalink =
|
39
|
+
Permalink::Normalizations::NonAlphanumeric.call("nice-permalink!")
|
40
|
+
assert_equal "nice-permalink-", permalink
|
41
|
+
end
|
42
|
+
|
43
|
+
test "applies non-alphanumeric replacement with custom separator" do
|
44
|
+
permalink = Permalink::Normalizations::NonAlphanumeric
|
45
|
+
.call("nice-permalink!", separator: "_")
|
46
|
+
assert_equal "nice_permalink_", permalink
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class PermalinkTest < Minitest::Test
|
6
|
+
{
|
7
|
+
"This IS a Tripped out title!!.!1 (well/ not really)" => "this-is-a-tripped-out-title-1-well-not-really", # rubocop:disable Layout/LineLength
|
8
|
+
'////// meph1sto r0x ! \\\\\\' => "meph1sto-r0x",
|
9
|
+
"āčēģīķļņū" => "acegiklnu",
|
10
|
+
"中文測試 chinese text" => "chinese-text",
|
11
|
+
'some-)()()-ExtRa!/// .data==?> to \/\/test' => "some-extra-data-to-test",
|
12
|
+
"http://simplesideias.com.br/tags/" => "http-simplesideias-com-br-tags",
|
13
|
+
"Don't Repeat Yourself (DRY)" => "dont-repeat-yourself-dry",
|
14
|
+
"Text\nwith\nline\n\n\tbreaks" => "text-with-line-breaks",
|
15
|
+
"can't do it" => "cant-do-it",
|
16
|
+
"i'm a dog" => "im-a-dog"
|
17
|
+
}.each do |from, to|
|
18
|
+
test "creates permalink for #{from}" do
|
19
|
+
assert_equal to, Permalink.generate(from)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "simplecov"
|
4
|
+
SimpleCov.start
|
5
|
+
|
6
|
+
require "bundler/setup"
|
7
|
+
require "permalink"
|
8
|
+
|
9
|
+
require "minitest/utils"
|
10
|
+
require "minitest/autorun"
|
11
|
+
|
12
|
+
ActiveRecord::Base
|
13
|
+
.establish_connection(adapter: "sqlite3", database: ":memory:")
|
14
|
+
|
15
|
+
load("support/schema.rb")
|
16
|
+
require "support/user"
|
17
|
+
require "support/post"
|
metadata
CHANGED
@@ -1,184 +1,172 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: permalink
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 2.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Nando Vieira
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2020-09-25 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activerecord
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
|
-
type: :
|
20
|
+
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: sqlite3-ruby
|
27
|
-
requirement: &70099537997320 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
23
|
requirements:
|
30
|
-
- -
|
24
|
+
- - ">="
|
31
25
|
- !ruby/object:Gem::Version
|
32
26
|
version: '0'
|
33
|
-
type: :development
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70099537997320
|
36
27
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement:
|
39
|
-
none: false
|
28
|
+
name: minitest-utils
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
40
30
|
requirements:
|
41
|
-
- -
|
31
|
+
- - ">="
|
42
32
|
- !ruby/object:Gem::Version
|
43
33
|
version: '0'
|
44
34
|
type: :development
|
45
35
|
prerelease: false
|
46
|
-
version_requirements:
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: rspec
|
49
|
-
requirement: &70099537985380 !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- -
|
38
|
+
- - ">="
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
55
|
-
type: :development
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *70099537985380
|
40
|
+
version: '0'
|
58
41
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement:
|
61
|
-
none: false
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
62
44
|
requirements:
|
63
|
-
- -
|
45
|
+
- - ">="
|
64
46
|
- !ruby/object:Gem::Version
|
65
|
-
version: '
|
47
|
+
version: '0'
|
66
48
|
type: :development
|
67
49
|
prerelease: false
|
68
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
71
|
-
requirement:
|
72
|
-
none: false
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
73
58
|
requirements:
|
74
|
-
- -
|
59
|
+
- - ">="
|
75
60
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0
|
61
|
+
version: '0'
|
77
62
|
type: :development
|
78
63
|
prerelease: false
|
79
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
80
69
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
requirement:
|
83
|
-
none: false
|
70
|
+
name: rubocop-fnando
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
84
72
|
requirements:
|
85
|
-
- -
|
73
|
+
- - ">="
|
86
74
|
- !ruby/object:Gem::Version
|
87
75
|
version: '0'
|
88
76
|
type: :development
|
89
77
|
prerelease: false
|
90
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
91
83
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
93
|
-
requirement:
|
94
|
-
none: false
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
95
86
|
requirements:
|
96
|
-
- -
|
87
|
+
- - ">="
|
97
88
|
- !ruby/object:Gem::Version
|
98
89
|
version: '0'
|
99
90
|
type: :development
|
100
91
|
prerelease: false
|
101
|
-
version_requirements:
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
102
97
|
- !ruby/object:Gem::Dependency
|
103
|
-
name:
|
104
|
-
requirement:
|
105
|
-
none: false
|
98
|
+
name: sqlite3
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
106
100
|
requirements:
|
107
|
-
- -
|
101
|
+
- - ">="
|
108
102
|
- !ruby/object:Gem::Version
|
109
103
|
version: '0'
|
110
104
|
type: :development
|
111
105
|
prerelease: false
|
112
|
-
version_requirements:
|
113
|
-
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Generate permalink attributes on ActiveModel/ActiveRecord
|
114
112
|
email:
|
115
113
|
- fnando.vieira@gmail.com
|
116
114
|
executables: []
|
117
115
|
extensions: []
|
118
116
|
extra_rdoc_files: []
|
119
117
|
files:
|
120
|
-
- .
|
121
|
-
- .
|
118
|
+
- ".github/FUNDING.yml"
|
119
|
+
- ".gitignore"
|
120
|
+
- ".rubocop.yml"
|
121
|
+
- ".travis.yml"
|
122
122
|
- Gemfile
|
123
|
-
-
|
124
|
-
- README.markdown
|
123
|
+
- README.md
|
125
124
|
- Rakefile
|
126
125
|
- lib/permalink.rb
|
127
|
-
- lib/permalink/
|
128
|
-
- lib/permalink/
|
129
|
-
- lib/permalink/
|
130
|
-
- lib/permalink/
|
131
|
-
- lib/permalink/
|
126
|
+
- lib/permalink/active_record.rb
|
127
|
+
- lib/permalink/normalizations/contraction.rb
|
128
|
+
- lib/permalink/normalizations/downcase.rb
|
129
|
+
- lib/permalink/normalizations/leading_trailing_dashes.rb
|
130
|
+
- lib/permalink/normalizations/multiple_dashes.rb
|
131
|
+
- lib/permalink/normalizations/non_alphanumeric.rb
|
132
|
+
- lib/permalink/normalizations/transliteration.rb
|
132
133
|
- lib/permalink/version.rb
|
133
134
|
- permalink.gemspec
|
134
|
-
-
|
135
|
-
-
|
136
|
-
-
|
137
|
-
-
|
138
|
-
-
|
139
|
-
-
|
140
|
-
-
|
141
|
-
- spec/support/post.rb
|
142
|
-
- spec/support/schema.rb
|
143
|
-
- spec/support/shared.rb
|
135
|
+
- test/permalink/active_record_test.rb
|
136
|
+
- test/permalink/normalizations_test.rb
|
137
|
+
- test/permalink/permalink_test.rb
|
138
|
+
- test/support/post.rb
|
139
|
+
- test/support/schema.rb
|
140
|
+
- test/support/user.rb
|
141
|
+
- test/test_helper.rb
|
144
142
|
homepage: http://rubygems.org/gems/permalink
|
145
|
-
licenses:
|
146
|
-
|
143
|
+
licenses:
|
144
|
+
- MIT
|
145
|
+
metadata: {}
|
146
|
+
post_install_message:
|
147
147
|
rdoc_options: []
|
148
148
|
require_paths:
|
149
149
|
- lib
|
150
150
|
required_ruby_version: !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
151
|
requirements:
|
153
|
-
- -
|
152
|
+
- - ">="
|
154
153
|
- !ruby/object:Gem::Version
|
155
|
-
version:
|
156
|
-
segments:
|
157
|
-
- 0
|
158
|
-
hash: 232250411774848879
|
154
|
+
version: 2.5.0
|
159
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
|
-
none: false
|
161
156
|
requirements:
|
162
|
-
- -
|
157
|
+
- - ">="
|
163
158
|
- !ruby/object:Gem::Version
|
164
159
|
version: '0'
|
165
|
-
segments:
|
166
|
-
- 0
|
167
|
-
hash: 232250411774848879
|
168
160
|
requirements: []
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
summary: Generate permalink attributes on ActiveRecord
|
161
|
+
rubygems_version: 3.1.2
|
162
|
+
signing_key:
|
163
|
+
specification_version: 4
|
164
|
+
summary: Generate permalink attributes on ActiveModel/ActiveRecord
|
174
165
|
test_files:
|
175
|
-
-
|
176
|
-
-
|
177
|
-
-
|
178
|
-
-
|
179
|
-
-
|
180
|
-
-
|
181
|
-
-
|
182
|
-
- spec/support/post.rb
|
183
|
-
- spec/support/schema.rb
|
184
|
-
- spec/support/shared.rb
|
166
|
+
- test/permalink/active_record_test.rb
|
167
|
+
- test/permalink/normalizations_test.rb
|
168
|
+
- test/permalink/permalink_test.rb
|
169
|
+
- test/support/post.rb
|
170
|
+
- test/support/schema.rb
|
171
|
+
- test/support/user.rb
|
172
|
+
- test/test_helper.rb
|