namae 0.8.3 → 0.8.4

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: 5e1ee8f637224f405bedf0613836a4b59f6b1f0e
4
- data.tar.gz: 499724d0f9325bd3da3647536a9490c1880cec41
3
+ metadata.gz: 24ebdab9dcba1587795fd5a50f17f76024e7260e
4
+ data.tar.gz: e9782ac717a00aa60aa4d752413fa1aecfbd9c49
5
5
  SHA512:
6
- metadata.gz: 314e4c74757ee48a6ee5bc4067b6299faa7636a221a6e98d18fecb91ca6bf74cb95524db3379e6424834c72f181e61c7af125e641681d01b8ca3ebb988866830
7
- data.tar.gz: ba8db13e21484ffc445ef7a8baa650f64145e722a9616b50f4c7a1cc75b5bff283e1bce910fc4259c8d507ddcce71dc7f35cd8fe9a0eb6a4dfc605a98b0ccb1b
6
+ metadata.gz: 10711cdb7d8a966ef4ee07d048ff8243947942ca8b7c9e7d763ab6d6a8fcd5580f25b89b3ec0275d2387a36664d13028779afd83630c571d91bf35f54338a3cf
7
+ data.tar.gz: e9723eaf26f61219868c8f28ea155d8f036fb68fb017cf0d454e69af82dba96a99d3886365f6b342f67133263415451bafcdd555051514e43353b0f8fb860592
@@ -1,5 +1,56 @@
1
1
  module Namae
2
2
 
3
+ # NameFormatting can be mixed in by an object providing individual
4
+ # name parts (family, given, suffix, particle, etc.) to add support
5
+ # for name formatting.
6
+ module NameFormatting
7
+
8
+ # @return [String] the name in sort order
9
+ def sort_order(delimiter = ', ')
10
+ [family_part, given_part].reject(&:empty?).join(delimiter)
11
+ end
12
+
13
+ # @return [String] the name in display order
14
+ def display_order
15
+ [given_part, family_part].reject(&:empty?).join(' ')
16
+ end
17
+
18
+ # @param options [Hash] the options to create the initials
19
+ #
20
+ # @option options [true,false] :expand (false) whether or not to expand the family name
21
+ # @option options [true,false] :dots (true) whether or not to print dots between the initials
22
+ # @option options [true,false] :spaces (false) whether or not to print spaces between the initals
23
+ #
24
+ # @return [String] the name's initials.
25
+ def initials(options = {})
26
+ options = Name.defaults[:initials].merge(options)
27
+
28
+ if options[:expand]
29
+ [initials_of(given_part, options), family].compact.join(' ')
30
+ else
31
+ initials_of([given_part, family_part].join(' '), options)
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def family_part
38
+ [particle, family].compact.join(' ')
39
+ end
40
+
41
+ def given_part
42
+ [given, dropping_particle].compact.join(' ')
43
+ end
44
+
45
+ # @param name [String] a name or part of a name
46
+ # @return [String] the initials of the passed-in name
47
+ def initials_of(name, options = {})
48
+ i = name.gsub(/([[:upper:]])[[:lower:]]+/, options[:dots] ? '\1.' : '\1')
49
+ i.gsub!(/\s+/, '') unless options[:spaces]
50
+ i
51
+ end
52
+ end
53
+
3
54
  # A Name represents a single personal name, exposing its constituent
4
55
  # parts (e.g., family name, given name etc.). Name instances are typically
5
56
  # created and returned from {Namae.parse Namae.parse}.
@@ -13,7 +64,9 @@ module Namae
13
64
  class Name < Struct.new :family, :given, :suffix, :particle,
14
65
  :dropping_particle, :nick, :appellation, :title
15
66
 
16
- # rbx compatibility
67
+ include NameFormatting
68
+
69
+ # RBX compatibility
17
70
  @parts = members.map(&:to_sym).freeze
18
71
 
19
72
  @defaults = {
@@ -64,16 +117,6 @@ module Namae
64
117
  end
65
118
  end
66
119
 
67
- # @return [String] the name in sort order
68
- def sort_order(delimiter = ', ')
69
- [family_part, given_part].reject(&:empty?).join(delimiter)
70
- end
71
-
72
- # @return [String] the name in display order
73
- def display_order
74
- [given_part, family_part].reject(&:empty?).join(' ')
75
- end
76
-
77
120
  # @return [Boolean] whether or not all the name components are nil.
78
121
  def empty?
79
122
  values.compact.empty?
@@ -95,22 +138,6 @@ module Namae
95
138
  self
96
139
  end
97
140
 
98
- # @param options [Hash] the options to create the initials
99
- #
100
- # @option options [true,false] :expand (false) whether or not to expand the family name
101
- # @option options [true,false] :dots (true) whether or not to print dots between the initials
102
- # @option options [true,false] :spaces (false) whether or not to print spaces between the initals
103
- #
104
- # @return [String] the name's initials.
105
- def initials(options = {})
106
- options = Name.defaults[:initials].merge(options)
107
-
108
- if options[:expand]
109
- [initials_of(given_part, options), family].compact.join(' ')
110
- else
111
- initials_of([given_part, family_part].join(' '), options)
112
- end
113
- end
114
141
 
115
142
  # @overload values_at(selector, ... )
116
143
  # Returns an array containing the elements in self corresponding to
@@ -135,23 +162,5 @@ module Namae
135
162
 
136
163
  alias to_s display_order
137
164
 
138
- private
139
-
140
- def family_part
141
- [particle, family].compact.join(' ')
142
- end
143
-
144
- def given_part
145
- [given, dropping_particle].compact.join(' ')
146
- end
147
-
148
- # @param name [String] a name or part of a name
149
- # @return [String] the initials of the passed-in name
150
- def initials_of(name, options = {})
151
- i = name.gsub(/([[:upper:]])[[:lower:]]+/, options[:dots] ? '\1.' : '\1')
152
- i.gsub!(/\s+/, '') unless options[:spaces]
153
- i
154
- end
155
-
156
165
  end
157
166
  end
@@ -2,7 +2,7 @@ module Namae
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 8
5
- PATCH = 3
5
+ PATCH = 4
6
6
  BUILD = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.').freeze
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: namae 0.8.3 ruby lib
5
+ # stub: namae 0.8.4 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "namae"
9
- s.version = "0.8.3"
9
+ s.version = "0.8.4"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Sylvester Keil", "Dan Collis-Puro"]
14
- s.date = "2014-01-28"
14
+ s.date = "2014-03-17"
15
15
  s.description = " Namae (\u{540d}\u{524d}) is a parser for human names. It recognizes personal names of various cultural backgrounds and tries to split them into their component parts (e.g., given and family names, honorifics etc.). "
16
16
  s.email = ["sylvester@keil.or.at", "dan@collispuro.com"]
17
17
  s.extra_rdoc_files = [
@@ -51,7 +51,7 @@ Gem::Specification.new do |s|
51
51
  ]
52
52
  s.homepage = "https://github.com/berkmancenter/namae"
53
53
  s.licenses = ["AGPL"]
54
- s.rubygems_version = "2.2.1"
54
+ s.rubygems_version = "2.2.2"
55
55
  s.summary = "Namae (\u{540d}\u{524d}) parses personal names and splits them into their component parts."
56
56
 
57
57
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: namae
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvester Keil
@@ -9,48 +9,48 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-28 00:00:00.000000000 Z
12
+ date: 2014-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: simplecov
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0.8'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ~>
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0.8'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rubinius-coverage
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ~>
33
33
  - !ruby/object:Gem::Version
34
34
  version: '2.0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ~>
40
40
  - !ruby/object:Gem::Version
41
41
  version: '2.0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: coveralls
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ~>
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0.7'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - ~>
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0.7'
56
56
  - !ruby/object:Gem::Dependency
@@ -67,9 +67,9 @@ dependencies:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
69
  version: 1.4.9
70
- description: " Namae (名前) is a parser for human names. It recognizes personal names
70
+ description: ' Namae (名前) is a parser for human names. It recognizes personal names
71
71
  of various cultural backgrounds and tries to split them into their component parts
72
- (e.g., given and family names, honorifics etc.). "
72
+ (e.g., given and family names, honorifics etc.). '
73
73
  email:
74
74
  - sylvester@keil.or.at
75
75
  - dan@collispuro.com
@@ -78,13 +78,13 @@ extensions: []
78
78
  extra_rdoc_files:
79
79
  - README.md
80
80
  files:
81
- - ".autotest"
82
- - ".coveralls.yml"
83
- - ".document"
84
- - ".rspec"
85
- - ".simplecov"
86
- - ".travis.yml"
87
- - ".yardopts"
81
+ - .autotest
82
+ - .coveralls.yml
83
+ - .document
84
+ - .rspec
85
+ - .simplecov
86
+ - .travis.yml
87
+ - .yardopts
88
88
  - AGPL
89
89
  - BSDL
90
90
  - Gemfile
@@ -118,17 +118,17 @@ require_paths:
118
118
  - lib
119
119
  required_ruby_version: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - ">="
121
+ - - '>='
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0'
124
124
  required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  requirements:
126
- - - ">="
126
+ - - '>='
127
127
  - !ruby/object:Gem::Version
128
128
  version: '0'
129
129
  requirements: []
130
130
  rubyforge_project:
131
- rubygems_version: 2.2.1
131
+ rubygems_version: 2.2.2
132
132
  signing_key:
133
133
  specification_version: 4
134
134
  summary: Namae (名前) parses personal names and splits them into their component parts.