simple_slug 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a288220a77771ee9ef0b7578d6831e83dfa9e8fe
4
- data.tar.gz: 9ecf9b7e5d4cabc46e09aff7dc2738533eb04029
3
+ metadata.gz: 42fa741cbe466a58681cb3cefadc7b6d0b51b482
4
+ data.tar.gz: 14481b78f88550c22b0d2de99fc57cca767d18f3
5
5
  SHA512:
6
- metadata.gz: 8980a48ed1d7db74e82f1baf19ba7d2b2fed3380123b9cd44028771adbbb14346b8e7b7031c8bd5d25d03da136afe5458b4f5dab380352f4a01d7189aed31b6f
7
- data.tar.gz: 680168768188b1fd55f03010a2b660269347f72b1d38b5cda9dd5ec1a1fdfd0ffdcb0d5e049b71c6dee06076fd045976a80e5ba40522517dce319995c2791115
6
+ metadata.gz: decf2bb240b092b883d6de908ac75840d04e51bc60ffa198eea175e1e380c511f1d990b2ba200a14e84acc8ba38126f4284a1b87eea610027e6367c1a4c18d59
7
+ data.tar.gz: fed2de665fbd48727cb9e1f3ff1c5ae233b5bcd12c60d980a6364f03c0e30f3762f3a5e46af7a8f277917b27f550f5f7e4c92ad8ed493b8fecf275d0328aac4e
data/.travis.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
- - 2.1.0
4
+ - 2.3.0
@@ -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 =~ /\A\d+/ ? "_#{normalized}" : normalized
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)
@@ -1,3 +1,3 @@
1
1
  module SimpleSlug
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
data/lib/simple_slug.rb CHANGED
@@ -15,6 +15,11 @@ module SimpleSlug
15
15
  mattr_accessor :slug_column
16
16
  @@slug_column = 'slug'
17
17
 
18
+ mattr_accessor :max_length
19
+ @@max_length = 240
20
+
21
+ STARTS_WITH_NUMBER_REGEXP =/\A\d+/
22
+
18
23
  def self.setup
19
24
  yield self
20
25
  end
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.0'
22
- spec.add_dependency 'i18n', '~> 0.6'
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'
@@ -13,5 +13,9 @@ describe SimpleSlug do
13
13
  it 'exclude regexps' do
14
14
  expect( SimpleSlug.exclude_regexp).to eq /\A\d+\z/
15
15
  end
16
+
17
+ it 'max length' do
18
+ expect( SimpleSlug.max_length).to eq 240
19
+ end
16
20
  end
17
21
  end
@@ -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.2.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: 2014-12-21 00:00:00.000000000 Z
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.0'
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.0'
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.6'
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.6'
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.4.3
133
+ rubygems_version: 2.5.1
134
134
  signing_key:
135
135
  specification_version: 4
136
136
  summary: Friendly url generator with history.