name_tamer 0.6.0 → 1.0.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.
Files changed (46) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +41 -0
  3. data/LICENSE +1 -1
  4. data/README.md +60 -34
  5. data/lib/name-tamer.rb +2 -0
  6. data/lib/name_tamer/constants/adfixes_prefix_person +44 -0
  7. data/lib/name_tamer/constants/adfixes_suffix_organization +213 -0
  8. data/lib/name_tamer/constants/adfixes_suffix_person +131 -0
  9. data/lib/name_tamer/constants.rb +28 -60
  10. data/lib/name_tamer/name/private_methods_nice_name.rb +116 -0
  11. data/lib/name_tamer/name/private_methods_simple_name.rb +71 -0
  12. data/lib/name_tamer/name/utilities.rb +84 -0
  13. data/lib/name_tamer/name.rb +13 -294
  14. data/lib/name_tamer/strings/approximations.rb +209 -0
  15. data/lib/name_tamer/strings/bad_encoding.rb +148 -0
  16. data/lib/name_tamer/strings/capitalization.rb +46 -0
  17. data/lib/name_tamer/strings/compound_names.rb +34 -0
  18. data/lib/name_tamer/strings/core.rb +62 -0
  19. data/lib/name_tamer/strings/name_modifiers.rb +51 -0
  20. data/lib/name_tamer/strings/spacing.rb +22 -0
  21. data/lib/name_tamer/strings.rb +9 -0
  22. data/lib/name_tamer/text.rb +21 -13
  23. data/lib/name_tamer/version.rb +3 -1
  24. data/lib/name_tamer.rb +2 -3
  25. metadata +26 -36
  26. data/.codeclimate.yml +0 -18
  27. data/.env +0 -1
  28. data/.gitignore +0 -26
  29. data/.hound.yml +0 -6
  30. data/.rspec +0 -2
  31. data/.rubocop.yml +0 -63
  32. data/.travis.yml +0 -13
  33. data/Gemfile +0 -20
  34. data/Guardfile +0 -16
  35. data/Rakefile +0 -14
  36. data/doc/maintenance.rake +0 -76
  37. data/doc/prefixes.csv +0 -49
  38. data/doc/suffixes.csv +0 -345
  39. data/lib/name_tamer/array.rb +0 -8
  40. data/lib/name_tamer/string.rb +0 -280
  41. data/name_tamer.gemspec +0 -19
  42. data/spec/name_tamer/name_spec.rb +0 -95
  43. data/spec/name_tamer/string_spec.rb +0 -5
  44. data/spec/name_tamer/text_spec.rb +0 -40
  45. data/spec/spec_helper.rb +0 -14
  46. data/spec/support/names.yml +0 -741
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f4cec196a889452445f937bcebe32026091d7e39
4
- data.tar.gz: 458fb4f8fad553bb4633302ad640772a0182b2f3
2
+ SHA256:
3
+ metadata.gz: 8a398c8020be8c46d8a50bd42ed442d567a0a4eeb281fd1d88854b5ff8e5e505
4
+ data.tar.gz: dc8bd4b94fd402e2753303aa0753a148ae8ec2b4d16c0e0d8c622570b8f015e0
5
5
  SHA512:
6
- metadata.gz: 15cf43c55b31ca59761a17c1779d0fa556f16e0e52c2c7fcefebd531883a12bf5395b63aa0f551a9c0a50392942f75d463a0ef694c7220457e03d6fc2e90b5ab
7
- data.tar.gz: afe13378d864b4e7c06eccf6aae5969f5626d2d629987b218f33a4db0f0f781df5be047980c5fff49994ca40da9fb220dc9ccee729b8c24d5c79d541071ad6d3
6
+ metadata.gz: 27a6f4233d5e71791a18aa063c9b7b32509f7bd9d00beded4e1d99a08a29c2a52e94507d627db812bc298620cd22d11e8198546a856d78f6aabcfda4dd04452d
7
+ data.tar.gz: f420d7a4dfc7dd97f773c745d57cb0a73be6864c754838197ba440c0b2790f118314b9e2de4cd3e4b146bf9578de913e8f7ee6ad86705cd80db76aedc813535d
data/CHANGELOG.md ADDED
@@ -0,0 +1,41 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] - 2026-07-18
9
+
10
+ ### Changed
11
+
12
+ - **Breaking:** Ruby 3.3 or newer is required; Ruby 2.7–3.2 are no longer
13
+ supported.
14
+ - **Breaking:** `name_tamer` no longer defines methods on core classes. The
15
+ `String` helpers (`whitespace_to!`, `approximate_latin_chars!` and friends)
16
+ are now pure functions on `NameTamer::Strings`, and `Array#neighbours` has
17
+ become an internal helper of `NameTamer::Text`. The public API —
18
+ `NameTamer[]`, `NameTamer::Name`, `NameTamer.parameterize` — is unchanged.
19
+ - **Breaking:** the terminal-colour `String` methods (`"text".yellow` etc.)
20
+ have been removed; they were unrelated to name taming.
21
+
22
+ ### Fixed
23
+
24
+ - Multi-word prefixes and suffixes (for example `Chartered F.C.S.I.`,
25
+ `Private Limited`) are stripped correctly again, restoring the behaviour
26
+ of the released 0.6.1 gem after a regression when the adfix lists moved
27
+ into data files.
28
+ - The test suite runs on Ruby 3.4+ again (`yaml` is now required explicitly
29
+ and fixtures load under Psych 4's safe defaults).
30
+
31
+ ### Added
32
+
33
+ - Continuous integration on GitHub Actions: RuboCop plus RSpec on Ruby 3.3,
34
+ 3.4 and 4.0, with 100% line and branch coverage enforced.
35
+ - SonarQube Cloud analysis with imported coverage and RuboCop reports.
36
+ - Releases are published to RubyGems via trusted publishing (OIDC) from a
37
+ gated GitHub Actions environment.
38
+
39
+ ## [0.6.1] and earlier
40
+
41
+ See the [commit history](https://github.com/dominicsayers/name_tamer/commits/main).
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017 Dominic Sayers
3
+ Copyright (c) 2017-2026 Dominic Sayers
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,28 +1,31 @@
1
- ## NameTamer
1
+ # NameTamer
2
2
 
3
3
  [![Gem version](https://badge.fury.io/rb/name_tamer.svg)](https://rubygems.org/gems/name_tamer)
4
4
  [![Gem downloads](https://img.shields.io/gem/dt/name_tamer.svg)](https://rubygems.org/gems/name_tamer)
5
- [![Build Status](https://travis-ci.org/dominicsayers/name_tamer.svg?branch=master)](https://travis-ci.org/dominicsayers/name_tamer)
6
- [![Code Climate](https://codeclimate.com/github/dominicsayers/name_tamer/badges/gpa.svg)](https://codeclimate.com/github/dominicsayers/name_tamer)
7
- [![Test Coverage](https://codeclimate.com/github/dominicsayers/name_tamer/badges/coverage.svg)](https://codeclimate.com/github/dominicsayers/name_tamer/coverage)
8
- [![Dependency Status](https://gemnasium.com/badges/github.com/dominicsayers/name_tamer.svg)](https://gemnasium.com/github.com/dominicsayers/name_tamer)
9
- [![Security](https://hakiri.io/github/dominicsayers/name_tamer/master.svg)](https://hakiri.io/github/dominicsayers/name_tamer/master)
5
+ [![Test](https://github.com/dominicsayers/name_tamer/actions/workflows/test.yml/badge.svg)](https://github.com/dominicsayers/name_tamer/actions/workflows/test.yml)
6
+ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dominicsayers_name_tamer&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=dominicsayers_name_tamer)
10
7
 
11
8
  NameTamer: making sense of names
12
9
 
13
10
  ## Installation
14
11
 
15
- Add this line to your application's Gemfile:
12
+ Add the gem to your application:
16
13
 
17
- gem 'name_tamer'
14
+ ```console
15
+ bundle add name_tamer
16
+ ```
18
17
 
19
- And then execute:
18
+ Or install it yourself:
20
19
 
21
- $ bundle
20
+ ```console
21
+ gem install name_tamer
22
+ ```
22
23
 
23
- Or install it yourself as:
24
+ ## Supported Ruby versions
24
25
 
25
- $ gem install name_tamer
26
+ `name_tamer` supports the Ruby versions in [normal or security maintenance
27
+ upstream](https://www.ruby-lang.org/en/downloads/branches/) — currently
28
+ Ruby 3.3, 3.4 and 4.0. The test suite runs against all of them.
26
29
 
27
30
  ## Usage
28
31
 
@@ -42,41 +45,64 @@ name_tamer.nice_name # => John Q. Smith
42
45
  name_tamer.contact_type # => :person
43
46
  ```
44
47
 
45
- NameTamer will make an intelligent guess at the type of the name but it's not infallible. NameTamer likes it if you tell it whether the name is a person or an organization:
48
+ NameTamer will make an intelligent guess at the type of the name but it's
49
+ not infallible. NameTamer likes it if you tell it whether the name is a
50
+ person or an organization:
46
51
 
47
52
  ```ruby
48
- name_tamer = NameTamer::Name.new 'Di Doo Doo d.o.o.', contact_type: :organization
49
- name_tamer.simple_name # => Di Doo Doo
53
+ name_tamer = NameTamer::Name.new 'Acme Group Private Limited', contact_type: :organization
54
+ name_tamer.simple_name # => Acme Group
50
55
  ```
51
56
 
57
+ ## Upgrading from 0.x
58
+
59
+ Version 1.0.0 makes three breaking changes:
60
+
61
+ - Ruby 3.3 or newer is required.
62
+ - The gem no longer defines methods on `String` or `Array`. The helpers are
63
+ pure functions on `NameTamer::Strings` (e.g.
64
+ `NameTamer::Strings.approximate_latin_chars('Reñé')`), and each returns a
65
+ new string instead of mutating the receiver.
66
+ - The terminal-colour `String` methods (`'text'.yellow` and friends) are
67
+ gone; use a dedicated gem such as `rainbow` if you need them.
68
+
69
+ The documented API — `NameTamer[]`, `NameTamer::Name`,
70
+ `NameTamer.parameterize` — is unchanged.
71
+
52
72
  ## Contributing
53
73
 
54
- There must be lots of name suffixes and prefixes that I haven't catered for, so please get in touch if `name_tamer` doesn't recognise one that you've found.
74
+ There must be lots of name suffixes and prefixes that I haven't catered
75
+ for, so please get in touch if `name_tamer` doesn't recognise one that
76
+ you've found.
55
77
 
56
- If there are any other common two-word family names that I've missed then please let me know. `name_tamer` tries to make sure Helena Bonham Carter gets slugified to `helena-bonham-carter` and not `helena-carter`, but I'm sure there are loads of two-word family names I don't know about.
78
+ If there are any other common two-word family names that I've missed then
79
+ please let me know. `name_tamer` tries to make sure Helena Bonham Carter
80
+ gets slugified to `helena-bonham-carter` and not `helena-carter`, but I'm
81
+ sure there are loads of two-word family names I don't know about.
57
82
 
58
83
  Please read all the following articles before contributing:
59
84
 
60
- * [Personal names around the world](https://www.w3.org/International/questions/qa-personal-names)
61
- * [Falsehoods Programmers Believe About Names](https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/)
62
- * [Last Name First](http://www.solidether.net/article/last-name-first/)
63
- * [Namae (名前)](https://github.com/berkmancenter/namae)
64
- * [Matts Name Parser](https://github.com/mericson/people)
65
- * [Types of business entity](http://en.wikipedia.org/wiki/Types_of_business_entity)
66
- * [List of professional designations in the United States](http://en.wikipedia.org/wiki/List_of_post-nominal_letters_(USA))
67
- * [List of post-nominal letters (United Kingdom)](http://en.wikipedia.org/wiki/List_of_post-nominal_letters_(United_Kingdom))
68
- * [Nobiliary particle](http://en.wikipedia.org/wiki/Nobiliary_particle)
69
- * [Spanish naming customs](http://en.wikipedia.org/wiki/Spanish_naming_customs)
70
- * [Unified style sheet for linguistics](http://linguistlist.org/pubs/tocs/JournalUnifiedStyleSheet2007.pdf) [PDF]
85
+ - [Personal names around the world](https://www.w3.org/International/questions/qa-personal-names)
86
+ - [Falsehoods Programmers Believe About Names](https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/)
87
+ - [Last Name First](http://www.solidether.net/article/last-name-first/)
88
+ - [Namae (名前)](https://github.com/berkmancenter/namae)
89
+ - [Matts Name Parser](https://github.com/mericson/people)
90
+ - [Types of business entity](http://en.wikipedia.org/wiki/Types_of_business_entity)
91
+ - [List of professional designations in the United States](http://en.wikipedia.org/wiki/List_of_post-nominal_letters_(USA))
92
+ - [List of post-nominal letters (United Kingdom)](http://en.wikipedia.org/wiki/List_of_post-nominal_letters_(United_Kingdom))
93
+ - [Nobiliary particle](http://en.wikipedia.org/wiki/Nobiliary_particle)
94
+ - [Spanish naming customs](http://en.wikipedia.org/wiki/Spanish_naming_customs)
95
+ - [Unified style sheet for linguistics](http://linguistlist.org/pubs/tocs/JournalUnifiedStyleSheet2007.pdf) [PDF]
71
96
 
72
97
  ### How to contribute
73
98
 
74
- 1. Fork it
75
- 1. Create your feature branch (`git checkout -b my-new-feature`)
76
- 1. Commit your changes (`git commit -am 'Add some feature'`)
77
- 1. Push to the branch (`git push origin my-new-feature`)
78
- 1. Create new Pull Request
99
+ 1. Fork it
100
+ 1. Create your feature branch (`git checkout -b my-new-feature`)
101
+ 1. Commit your changes (`git commit -am 'Add some feature'`)
102
+ 1. Push to the branch (`git push origin my-new-feature`)
103
+ 1. Create new Pull Request
79
104
 
80
105
  ## Acknowledgements
81
106
 
82
- 1. Thanks to Ryan Bigg for the guide to making your first gem https://github.com/radar/guides/blob/master/gem-development.md
107
+ 1. Thanks to Ryan Bigg for the
108
+ [guide to making your first gem](https://github.com/radar/guides/blob/master/gem-development.md)
data/lib/name-tamer.rb CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'name_tamer'
@@ -0,0 +1,44 @@
1
+ Baroness
2
+ Capt.
3
+ Captain
4
+ Col.
5
+ Colonel
6
+ Dame
7
+ Doctor
8
+ Doktor
9
+ Dr.
10
+ Frau
11
+ Herr
12
+ Judge
13
+ Justice
14
+ Lady
15
+ Lieut.
16
+ Lieutenant
17
+ Lord
18
+ Madame
19
+ Major
20
+ Master
21
+ Matron
22
+ Messrs.
23
+ Mgr.
24
+ Miss
25
+ Mister
26
+ Mlle.
27
+ Mme.
28
+ Mons.
29
+ Mr. & Mrs.
30
+ Mr. and Mrs.
31
+ Mr.
32
+ Mrs.
33
+ Ms.
34
+ Msgr.
35
+ Prof.
36
+ Professor
37
+ Rev.
38
+ Reverend
39
+ Sir
40
+ Sister
41
+ The Hon.
42
+ The Lady.
43
+ The Lord
44
+ The Rt. Hon.
@@ -0,0 +1,213 @@
1
+ S. de R.L. de C.V.
2
+ S.A.P.I. de C.V.
3
+ y. Cía. S. en C.
4
+ Private Limited
5
+ S.M. Pte. Ltd.
6
+ Cía. S. C. A.
7
+ y. Cía. S. C.
8
+ S.A. de C.V.
9
+ spol. s.r.o.
10
+ (Pty.) Ltd.
11
+ (Pvt.) Ltd.
12
+ A.D.S.I.Tz.
13
+ S.p. z.o.o.
14
+ (Pvt.)Ltd.
15
+ akc. spol.
16
+ Cía. Ltda.
17
+ E.B.V.B.A.
18
+ P. Limited
19
+ S. de R.L.
20
+ S.I.C.A.V.
21
+ S.P.R.L.U.
22
+ А.Д.С.И.Ц.
23
+ (P.) Ltd.
24
+ C. por A.
25
+ Comm.V.A.
26
+ Ltd. Şti.
27
+ Plc. Ltd.
28
+ Pte. Ltd.
29
+ Pty. Ltd.
30
+ Pvt. Ltd.
31
+ Soc. Col.
32
+ A.M.B.A.
33
+ A.S.B.L.
34
+ A.V.E.E.
35
+ B.V.B.A.
36
+ B.V.I.O.
37
+ C.V.B.A.
38
+ C.V.O.A.
39
+ E.E.I.G.
40
+ E.I.R.L.
41
+ E.O.O.D.
42
+ E.U.R.L.
43
+ F.M.B.A.
44
+ G.m.b.H.
45
+ Ges.b.R.
46
+ K.G.a.A.
47
+ L.L.L.P.
48
+ Ltd. Co.
49
+ Ltd. Co.
50
+ M.E.P.E.
51
+ n.y.r.t.
52
+ O.V.E.E.
53
+ P.E.E.C.
54
+ P.L.L.C.
55
+ P.L.L.C.
56
+ S. en C.
57
+ S.a.p.a.
58
+ S.A.R.L.
59
+ S.à.R.L.
60
+ S.A.S.U.
61
+ S.C.e.I.
62
+ S.C.O.P.
63
+ S.C.p.A.
64
+ S.C.R.I.
65
+ S.C.R.L.
66
+ S.M.B.A.
67
+ S.P.R.L.
68
+ Е.О.О.Д.
69
+ &. Cie.
70
+ and Co.
71
+ Comm.V.
72
+ Limited
73
+ P. Ltd.
74
+ Part.G.
75
+ Sh.p.k.
76
+ &. Co.
77
+ C.X.A.
78
+ d.n.o.
79
+ d.o.o.
80
+ E.A.D.
81
+ e.h.f.
82
+ E.P.E.
83
+ E.S.V.
84
+ F.C.P.
85
+ F.I.E.
86
+ G.b.R.
87
+ G.I.E.
88
+ G.M.K.
89
+ G.S.K.
90
+ H.U.F.
91
+ K.D.A.
92
+ k.f.t.
93
+ k.h.t.
94
+ k.k.t.
95
+ L.L.C.
96
+ L.L.P.
97
+ o.h.f.
98
+ O.H.G.
99
+ O.O.D.
100
+ O.y.j.
101
+ p.l.c.
102
+ P.S.U.
103
+ S.A.E.
104
+ S.A.S.
105
+ S.C.A.
106
+ S.C.E.
107
+ S.C.S.
108
+ S.E.M.
109
+ S.E.P.
110
+ s.e.s.
111
+ S.G.R.
112
+ S.N.C.
113
+ S.p.A.
114
+ S.P.E.
115
+ S.R.L.
116
+ s.r.o.
117
+ Unltd.
118
+ V.O.F.
119
+ V.o.G.
120
+ v.o.s.
121
+ V.Z.W.
122
+ z.r.t.
123
+ А.А.Т.
124
+ Е.А.Д.
125
+ З.А.Т.
126
+ К.Д.А.
127
+ О.О.Д.
128
+ Т.А.А.
129
+ 股份有限公司
130
+ Ap.S.
131
+ Corp.
132
+ ltda.
133
+ Sh.A.
134
+ st.G.
135
+ Ultd.
136
+ a.b.
137
+ A.D.
138
+ A.E.
139
+ A.G.
140
+ A.S.
141
+ A.Ş.
142
+ A.y.
143
+ B.M.
144
+ b.t.
145
+ B.V.
146
+ C.A.
147
+ C.V.
148
+ d.d.
149
+ e.c.
150
+ E.E.
151
+ e.G.
152
+ E.I.
153
+ E.P.
154
+ E.T.
155
+ E.U.
156
+ e.v.
157
+ G.K.
158
+ G.P.
159
+ h.f.
160
+ Inc.
161
+ K.D.
162
+ K.G.
163
+ K.K.
164
+ k.s.
165
+ k.v.
166
+ K.y.
167
+ L.C.
168
+ L.P.
169
+ Ltd.
170
+ N.K.
171
+ N.L.
172
+ N.V.
173
+ O.E.
174
+ O.G.
175
+ O.Ü.
176
+ O.y.
177
+ P.C.
178
+ p.l.
179
+ Pty.
180
+ PUP.
181
+ Pvt.
182
+ r.t.
183
+ S.A.
184
+ S.D.
185
+ S.E.
186
+ s.f.
187
+ S.L.
188
+ S.P.
189
+ S.s.
190
+ T.K.
191
+ T.Ü.
192
+ U.Ü.
193
+ Y.K.
194
+ А.Д.
195
+ І.П.
196
+ К.Д.
197
+ ПУП.
198
+ С.Д.
199
+ בע"מ
200
+ 任意組合
201
+ 匿名組合
202
+ 合同会社
203
+ 合名会社
204
+ 合資会社
205
+ 有限会社
206
+ 有限公司
207
+ 株式会社
208
+ A/S
209
+ G/S
210
+ I/S
211
+ K/S
212
+ P/S
213
+ S/A
@@ -0,0 +1,131 @@
1
+ A.A.M.S.
2
+ A.C.A.
3
+ A.C.C.
4
+ A.C.C.A.
5
+ A.C.M.A.
6
+ A.E.P.
7
+ A.I.F.
8
+ A.I.F.A.
9
+ A.S.A.
10
+ A.W.M.A.
11
+ B.A.
12
+ B.Ed.
13
+ B.Eng.
14
+ B.Sc.
15
+ B.Tech.
16
+ C.A.
17
+ C.A.I.A.
18
+ C.A.P.M.
19
+ C.B.V.
20
+ C.C.I.M.
21
+ C.D.F.A.
22
+ C.E.M.
23
+ C.E.P.P.
24
+ C.Eng.
25
+ C.F.A.
26
+ C.F.B.S.
27
+ C.F.F.
28
+ C.F.P.
29
+ C.F.S.
30
+ C.G.A.
31
+ C.G.B.
32
+ C.G.M.A.
33
+ C.G.P.
34
+ C.I.M.
35
+ C.I.S.S.P.
36
+ C.I.T.P.
37
+ C.L.P.
38
+ C.L.T.C.
39
+ C.L.U.
40
+ C.M.A.
41
+ C.M.T.
42
+ C.P.A.
43
+ C.P.C.C.
44
+ C.R.P.C.
45
+ C.R.P.S.
46
+ C.S.O.X.
47
+ C.S.S.D.
48
+ C.T.A.
49
+ C.W.S.
50
+ Cantab.
51
+ Ch.F.C.
52
+ Chartered F.C.S.I.
53
+ Chartered M.C.S.I.
54
+ D.B.E.
55
+ D.D.S.
56
+ D.Phil.
57
+ D.V.M.
58
+ Dip. D.M.
59
+ E.A.
60
+ E.R.P.
61
+ Ed.D.
62
+ Ed.M.
63
+ Eng.D.
64
+ Esq.
65
+ F.B.C.S.
66
+ F.C.A.
67
+ F.C.C.A.
68
+ F.C.I.P.S.
69
+ F.C.M.I.
70
+ F.C.S.I.
71
+ F.I.E.T.
72
+ F.I.R.P.
73
+ F.Inst.L.M.
74
+ F.P.C.
75
+ F.R.M.
76
+ F.R.M.
77
+ G.S.P.
78
+ Hons.
79
+ I.F.R.S. Certified
80
+ I.T.I.L. v3
81
+ II
82
+ III
83
+ IV
84
+ J.D.
85
+ Jr.
86
+ K.C.
87
+ L.P.S.
88
+ LL.B.
89
+ LL.D.
90
+ LL.M.
91
+ M.A.
92
+ M.B.A.
93
+ M.B.E.
94
+ M.D.
95
+ M.E.P.
96
+ M.Ed.
97
+ M.Eng.
98
+ M.I.E.T.
99
+ M.Io.D.
100
+ M.Jur.
101
+ M.P.
102
+ M.P.A.
103
+ M.R.I.C.S.
104
+ M.S.
105
+ M.S.F.
106
+ M.S.F.S.
107
+ M.S.P.
108
+ M.Sc. D.
109
+ M.Sc.
110
+ O.B.E.
111
+ O.K.
112
+ O.R.S.C.
113
+ Oxon.
114
+ P.A.
115
+ P.C.C.
116
+ P.F.S.
117
+ P.H.R.
118
+ P.M.C.
119
+ P.M.P.
120
+ P.M.P.
121
+ P.S.P.
122
+ Ph.D.
123
+ Q.C.
124
+ R.D.
125
+ R.F.C.
126
+ R.I.C.P.
127
+ S.C.M.P
128
+ Sr.
129
+ T.M.I.E.T.
130
+ V
131
+ V.M.D.