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 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.