acts_as_human 2.0.1 → 2.0.2

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.0
1
+ 2.0.2
@@ -0,0 +1,48 @@
1
+ module ActsAs
2
+ module Human
3
+ mattr_accessor :acceptable_name, :bad_name_message
4
+
5
+ self.acceptable_name = /\A[^[:cntrl:]\\<>\/&]*\z/
6
+ self.bad_name_message = "some characters in your name are not allowed".freeze
7
+
8
+ def self.included(base)
9
+ base.send :extend, ClassMethods
10
+ end
11
+
12
+ module ClassMethods
13
+
14
+ def acts_as_human(options={})
15
+ cattr_accessor :require_last_name
16
+
17
+ if options.has_key? :require_last_name
18
+ @require_last_name = options[:require_last_name]
19
+ else
20
+ @require_last_name = true
21
+ end
22
+ send :include, InstanceMethods
23
+
24
+ class_eval do
25
+ validates_presence_of :first_name, :message => 'first name is required'
26
+ validates_length_of :first_name, :maximum => 40,
27
+ :message => 'first name is too long (max 40 characters)'
28
+ validates_as_person_name :first_name
29
+
30
+ validates_length_of :middle_names, :maximum => 40,
31
+ :allow_blank => true,
32
+ :message => 'middle names are too long (max 40 characters)'
33
+ validates_as_person_name :middle_names, :allow_nil => true
34
+
35
+ validates_presence_of :last_name, :if => Proc.new { @require_last_name },
36
+ :message => 'last name is required'
37
+ validates_length_of :last_name, :maximum => 40,
38
+ :allow_blank => true,
39
+ :message => 'last name is too long (max 40 characters)'
40
+ validates_as_person_name :last_name
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ ActiveRecord::Base.send(:include, ActsAs::Human)
48
+
@@ -0,0 +1,39 @@
1
+ module ActsAs
2
+ module Human
3
+
4
+ module InstanceMethods
5
+ def full_name
6
+ return '' if first_name.blank? and last_name.blank?
7
+
8
+ return "#{first_name} #{last_name}" if middle_names.blank?
9
+ return "#{first_name} #{middle_names} #{last_name}"
10
+ end
11
+
12
+ def full_name=(names)
13
+ names_array = names.titlecase.split
14
+
15
+ self.first_name = names_array.first
16
+ return if names_array.size < 2
17
+
18
+ self.last_name = names_array.last
19
+
20
+ assign_middle_names(names_array)
21
+ end
22
+
23
+ private
24
+
25
+ def assign_middle_names(names_array)
26
+ if names_array.size > 2
27
+ self.middle_names = get_middle_names(names_array)
28
+ else
29
+ self.middle_names = nil
30
+ end
31
+ end
32
+
33
+ def get_middle_names(names_array)
34
+ names_array[1..(names_array.size-2)].join(' ')
35
+ end
36
+ end
37
+ end
38
+ end
39
+
data/lib/acts_as_human.rb CHANGED
@@ -1,4 +1,3 @@
1
1
  require 'acts_as_human/validations'
2
2
  require 'acts_as_human/instance_methods'
3
3
  require 'acts_as_human/class_methods'
4
- require 'acts_as_human'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_human
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
- - 1
10
- version: 2.0.1
9
+ - 2
10
+ version: 2.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Brent Greeff
@@ -35,6 +35,8 @@ files:
35
35
  - VERSION
36
36
  - lib/acts_as_human.rb
37
37
  - lib/acts_as_human/validations.rb
38
+ - lib/acts_as_human/instance_methods.rb
39
+ - lib/acts_as_human/class_methods.rb
38
40
  - test/acts_as_human_test.rb
39
41
  - test/database.yml
40
42
  - test/schema.rb