simple_slug 0.2.0 → 0.3.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 +4 -4
- data/.travis.yml +1 -1
- data/lib/simple_slug/model_addition.rb +4 -3
- data/lib/simple_slug/version.rb +1 -1
- data/lib/simple_slug.rb +5 -0
- data/simple_slug.gemspec +2 -2
- data/spec/simple_slug/base_spec.rb +4 -0
- data/spec/simple_slug/model_addition_spec.rb +24 -0
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42fa741cbe466a58681cb3cefadc7b6d0b51b482
|
4
|
+
data.tar.gz: 14481b78f88550c22b0d2de99fc57cca767d18f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: decf2bb240b092b883d6de908ac75840d04e51bc60ffa198eea175e1e380c511f1d990b2ba200a14e84acc8ba38126f4284a1b87eea610027e6367c1a4c18d59
|
7
|
+
data.tar.gz: fed2de665fbd48727cb9e1f3ff1c5ae233b5bcd12c60d980a6364f03c0e30f3762f3a5e46af7a8f277917b27f550f5f7e4c92ad8ed493b8fecf275d0328aac4e
|
data/.travis.yml
CHANGED
@@ -8,7 +8,7 @@ module SimpleSlug
|
|
8
8
|
def simple_slug(*args)
|
9
9
|
class_attribute :simple_slug_options, instance_writer: false
|
10
10
|
options = args.extract_options!
|
11
|
-
self.simple_slug_options = options.reverse_merge(slug_column: SimpleSlug.slug_column, slug_method: args)
|
11
|
+
self.simple_slug_options = options.reverse_merge(slug_column: SimpleSlug.slug_column, slug_method: args, max_length: SimpleSlug.max_length)
|
12
12
|
|
13
13
|
include InstanceMethods
|
14
14
|
extend ClassMethods
|
@@ -51,6 +51,7 @@ module SimpleSlug
|
|
51
51
|
|
52
52
|
def simple_slug_generate(force=false)
|
53
53
|
simple_slug = simple_slug_normalize(simple_slug_base)
|
54
|
+
simple_slug = simple_slug.first(simple_slug_options[:max_length]) if simple_slug_options[:max_length]
|
54
55
|
return true if !force && simple_slug == send(simple_slug_options[:slug_column]).to_s.sub(/--\d+\z/, '')
|
55
56
|
resolved_simple_slug = simple_slug_resolve(simple_slug)
|
56
57
|
send "#{simple_slug_options[:slug_column]}=", resolved_simple_slug
|
@@ -61,8 +62,8 @@ module SimpleSlug
|
|
61
62
|
end
|
62
63
|
|
63
64
|
def simple_slug_normalize(base)
|
64
|
-
normalized = I18n.transliterate(base).parameterize('-').downcase
|
65
|
-
normalized.to_s =~
|
65
|
+
normalized = I18n.transliterate(base).parameterize(separator: '-').downcase
|
66
|
+
normalized.to_s =~ SimpleSlug::STARTS_WITH_NUMBER_REGEXP ? "_#{normalized}" : normalized
|
66
67
|
end
|
67
68
|
|
68
69
|
def simple_slug_resolve(slug_value)
|
data/lib/simple_slug/version.rb
CHANGED
data/lib/simple_slug.rb
CHANGED
data/simple_slug.gemspec
CHANGED
@@ -18,8 +18,8 @@ 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 'activerecord', '>= 4.0.0', '< 5.
|
22
|
-
spec.add_dependency 'i18n', '~> 0.
|
21
|
+
spec.add_dependency 'activerecord', '>= 4.0.0', '< 5.1'
|
22
|
+
spec.add_dependency 'i18n', '~> 0.7'
|
23
23
|
|
24
24
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
25
25
|
spec.add_development_dependency 'rake'
|
@@ -75,4 +75,28 @@ describe SimpleSlug::ModelAddition do
|
|
75
75
|
SlugGenerationRspecModel.friendly_find('title')
|
76
76
|
end
|
77
77
|
end
|
78
|
+
|
79
|
+
describe 'max length' do
|
80
|
+
before do
|
81
|
+
allow_any_instance_of(SlugGenerationRspecModel).to receive(:simple_slug_exists?).and_return(false)
|
82
|
+
end
|
83
|
+
|
84
|
+
after do
|
85
|
+
SlugGenerationRspecModel.simple_slug_options.delete(:max_length)
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'cuts slug to max length' do
|
89
|
+
expect(SlugGenerationRspecModel.new(name: 'Hello' * 100).simple_slug_generate.length).to eq 240
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'use max length from per model options' do
|
93
|
+
SlugGenerationRspecModel.simple_slug_options[:max_length] = 100
|
94
|
+
expect(SlugGenerationRspecModel.new(name: 'Hello' * 100).simple_slug_generate.length).to eq 100
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'omit max length' do
|
98
|
+
SimpleSlug.max_length = nil
|
99
|
+
expect(SlugGenerationRspecModel.new(name: 'Hello' * 100).simple_slug_generate.length).to eq 500
|
100
|
+
end
|
101
|
+
end
|
78
102
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_slug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Leschenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: 4.0.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '5.
|
22
|
+
version: '5.1'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,21 +29,21 @@ dependencies:
|
|
29
29
|
version: 4.0.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '5.
|
32
|
+
version: '5.1'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: i18n
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0.
|
39
|
+
version: '0.7'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '0.
|
46
|
+
version: '0.7'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
version: '0'
|
131
131
|
requirements: []
|
132
132
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
133
|
+
rubygems_version: 2.5.1
|
134
134
|
signing_key:
|
135
135
|
specification_version: 4
|
136
136
|
summary: Friendly url generator with history.
|