mongoid_translate 0.1.0 → 0.1.1

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.
@@ -21,32 +21,29 @@ module Mongoid
21
21
  index 'translations.language'
22
22
  end
23
23
 
24
- module InstanceMethods
25
- # Return list of existing languages
26
- #
27
- # @return [ Array ]
28
- #
29
- def languages
30
- translations.map(&:language)
31
- end
24
+ # Return list of existing languages
25
+ #
26
+ # @return [ Array ]
27
+ #
28
+ def languages
29
+ translations.map(&:language)
30
+ end
32
31
 
33
- # Return main translation object
34
- #
35
- # @return [ Document ]
36
- #
37
- def main_translation
38
- translations.where(language: main_language).one
39
- end
32
+ # Return main translation object
33
+ #
34
+ # @return [ Document ]
35
+ #
36
+ def main_translation
37
+ translations.where(language: main_language).one
38
+ end
40
39
 
41
- def method_missing(method, *args, &block)
42
- if self.languages.include?(method)
43
- translations.where(language: method).one
44
- else
45
- super(method, *args, &block)
46
- end
40
+ def method_missing(method, *args, &block)
41
+ if self.languages.include?(method)
42
+ translations.where(language: method).one
43
+ else
44
+ super(method, *args, &block)
47
45
  end
48
-
49
- end # InstanceMethods
46
+ end
50
47
 
51
48
  module ClassMethods
52
49
  attr_accessor :translated_fields
@@ -9,23 +9,30 @@ module Mongoid
9
9
  #
10
10
  included do
11
11
  scope :by_slug, lambda {|slug| where('translations.slug' => slug )}
12
+ validate :slug_uniqueness
12
13
  index 'translations.slug'
13
14
  end
14
15
 
15
- module InstanceMethods
16
- # Return slug.
17
- # Didn't want to mess with to_param.
18
- #
19
- # @example
20
- # document.to_slug
21
- #
22
- # @return [ String ]
23
- #
24
- def to_slug
25
- locale = languages.include?(I18n.locale) ? I18n.locale : main_language
26
- translations.where(language: locale).one.slug
16
+ # Return slug.
17
+ # Didn't want to mess with to_param.
18
+ #
19
+ # @example
20
+ # document.to_slug
21
+ #
22
+ # @return [ String ]
23
+ #
24
+ def to_slug
25
+ locale = languages.include?(I18n.locale) ? I18n.locale : main_language
26
+ translations.where(language: locale).one.slug
27
+ end
28
+
29
+ private
30
+
31
+ def slug_uniqueness
32
+ if self.class.excludes(id: self.id).any_in('translations.slug' => self.translations.map(&:slug)).exists?
33
+ errors.add(:translations, :slug_uniqueness)
27
34
  end
28
- end # InstanceMethods
35
+ end
29
36
 
30
37
  module ClassMethods
31
38
  attr_accessor :slugged
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid
3
3
  module Translate
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
6
6
  end
@@ -19,15 +19,13 @@ module Mongoid
19
19
  embedded_in name.underscore.to_sym, class_name: class_name
20
20
  end
21
21
 
22
- module InstanceMethods
23
- # Check if current translation is main_translation.
24
- #
25
- # @return [ Boolean ]
26
- #
27
- def main_translation?
28
- parent = self.class.to_s.sub(/^.*::/, '').underscore
29
- self.send(parent).main_language == self.language
30
- end
31
- end # InstanceMethods
22
+ # Check if current translation is main_translation.
23
+ #
24
+ # @return [ Boolean ]
25
+ #
26
+ def main_translation?
27
+ parent = self.class.to_s.sub(/^.*::/, '').underscore
28
+ self.send(parent).main_language == self.language
29
+ end
32
30
  end # Translation
33
31
  end # Mongoid
@@ -12,47 +12,45 @@ module Mongoid
12
12
  after_validation :set_slug
13
13
  end
14
14
 
15
- module InstanceMethods
16
- # Slug creation.
17
- #
18
- # @return [ Object ]
19
- #
20
- def set_slug
21
- if self.slug.blank? && slugged_field.present?
22
- if translation_parent_class.send(:by_slug, slugged).one
23
- self.slug = slugged_with_token
24
- else
25
- self.slug = slugged
26
- end
15
+ # Slug creation.
16
+ #
17
+ # @return [ Object ]
18
+ #
19
+ def set_slug
20
+ if self.slug.blank? && slugged_field.present?
21
+ if translation_parent_class.send(:by_slug, slugged).one
22
+ self.slug = slugged_with_token
23
+ else
24
+ self.slug = slugged
27
25
  end
28
26
  end
27
+ end
29
28
 
30
- private
29
+ private
31
30
 
32
- def slugged_field
33
- @slugged_field ||= self.send(translation_parent_class.slugged)
34
- end
31
+ def slugged_field
32
+ @slugged_field ||= self.send(translation_parent_class.slugged)
33
+ end
35
34
 
36
- def slugged
37
- @slugged ||= slugged_field.parameterize.blank? ? slugged_field : slugged_field.parameterize
38
- end
35
+ def slugged
36
+ @slugged ||= slugged_field.parameterize.blank? ? slugged_field : slugged_field.parameterize
37
+ end
39
38
 
40
- def slugged_with_token
41
- @slugged_with_token ||= [slugged, generate_token].join('-')
42
- end
39
+ def slugged_with_token
40
+ @slugged_with_token ||= [slugged, generate_token].join('-')
41
+ end
43
42
 
44
- def translation_parent_class
45
- self.class.to_s.sub('Translation::', '').constantize
46
- end
43
+ def translation_parent_class
44
+ self.class.to_s.sub('Translation::', '').constantize
45
+ end
47
46
 
48
- def translation_parent
49
- self.send(self.class.to_s.sub(/^.*::/, '').underscore)
50
- end
47
+ def translation_parent
48
+ self.send(self.class.to_s.sub(/^.*::/, '').underscore)
49
+ end
51
50
 
52
- def generate_token
53
- SecureRandom.base64(4).tr('+/=', '-_ ').strip.delete("\n")
54
- end
51
+ def generate_token
52
+ SecureRandom.base64(4).tr('+/=', '-_ ').strip.delete("\n")
53
+ end
55
54
  end
56
- end # InstanceMethods
57
55
  end # Translation
58
56
  end # Mongoid
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_translate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-02-14 00:00:00.000000000 Z
13
+ date: 2012-04-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &76394790 !ruby/object:Gem::Requirement
17
+ requirement: &10000200 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '3.1'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *76394790
25
+ version_requirements: *10000200
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: mongoid
28
- requirement: &76394330 !ruby/object:Gem::Requirement
28
+ requirement: &9999380 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '2.3'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *76394330
36
+ version_requirements: *9999380
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: bson_ext
39
- requirement: &76393870 !ruby/object:Gem::Requirement
39
+ requirement: &9998880 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '1.4'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *76393870
47
+ version_requirements: *9998880
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec
50
- requirement: &76393200 !ruby/object:Gem::Requirement
50
+ requirement: &9998420 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,7 +55,7 @@ dependencies:
55
55
  version: '2.6'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *76393200
58
+ version_requirements: *9998420
59
59
  description: Translate mongoid models.
60
60
  email: jboyer@af83.com
61
61
  executables: []
@@ -90,9 +90,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
90
  version: '0'
91
91
  requirements: []
92
92
  rubyforge_project:
93
- rubygems_version: 1.8.12
93
+ rubygems_version: 1.8.10
94
94
  signing_key:
95
95
  specification_version: 3
96
96
  summary: Translate mongoid models.
97
97
  test_files: []
98
- has_rdoc: