Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
1 / 1
NameValues
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
5 / 5
5
100.00% covered (success)
100.00%
1 / 1
 getSalutations
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getSuffixes
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getCredentials
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getLastnamePrefixes
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getNicknameDelimiters
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2declare(strict_types=1);
3/**
4 * Pop PHP Framework (https://www.popphp.org/)
5 *
6 * @link       https://github.com/popphp/popphp-framework
7 * @author     Nick Sagona, III <nick@popphp.org>
8 * @copyright  Copyright (c) 2009-2026 Nick Sagona, III
9 * @license    https://www.popphp.org/license     New BSD License
10 */
11
12/**
13 * @namespace
14 */
15namespace Pop\Parser\Name;
16
17/**
18 * Name values class
19 *
20 * @category   Pop
21 * @package    Pop\Parser
22 * @author     Nick Sagona, III <nick@popphp.org>
23 * @copyright  Copyright (c) 2009-2026 Nick Sagona, III
24 * @license    https://www.popphp.org/license     New BSD License
25 * @version    1.0.0
26 */
27class NameValues
28{
29
30    /**
31     * A list of salutations
32     * @var array $salutations
33     * */
34    protected static array $salutations = [
35        'mr'         => 'Mr.',
36        'mrs'        => 'Mrs.',
37        'ms'         => 'Ms.',
38        'mx'         => 'Mx.',
39        'miss'       => 'Miss',
40        'master'     => 'Mr.',
41        'mister'     => 'Mr.',
42        'dr'         => 'Dr.',
43        'prof'       => 'Prof.',
44        'rev'        => 'Rev.',
45        'fr'         => 'Fr.',
46        'sir'        => 'Sir',
47        'madam'      => 'Madam',
48        'his honour' => 'His Honour',
49        'her honour' => 'Her Honour',
50    ];
51
52    /**
53     * A list of generational name suffixes
54     * @var array $suffixes
55     * */
56    protected static array $suffixes = [
57        'jr'     => 'Jr',
58        'junior' => 'Junior',
59        'sr'     => 'Sr',
60        'senior' => 'Senior',
61        'i'      => 'I',
62        'ii'     => 'II',
63        'iii'    => 'III',
64        'iv'     => 'IV',
65        'v'      => 'V',
66        '1st'    => '1st',
67        '2nd'    => '2nd',
68        '3rd'    => '3rd',
69    ];
70
71    /**
72     * A list of professional credentials/degrees, kept separate from generational suffixes
73     * so e.g. "Anthony Von Fange III, PhD" can expose "III" and "PhD" independently
74     * @var array $credentials
75     * */
76    protected static array $credentials = [
77        'phd'  => 'PhD',
78        'md'   => 'MD',
79        'do'   => 'DO',
80        'esq'  => 'Esq',
81        'jd'   => 'JD',
82        'mba'  => 'MBA',
83        'rn'   => 'RN',
84        'dds'  => 'DDS',
85        'dvm'  => 'DVM',
86        'cpa'  => 'CPA',
87        'cfa'  => 'CFA',
88        'pe'   => 'PE',
89        'rph'  => 'RPh',
90        'dnp'  => 'DNP',
91        'psyd' => 'PsyD',
92        'edd'  => 'EdD',
93    ];
94
95    /**
96     * A list of lastname prefixes
97     * @var array $lastnamePrefixes
98     * */
99    protected static array $lastnamePrefixes = [
100        'van'    => 'van',
101        'von'    => 'von',
102        'de'     => 'de',
103        'del'    => 'del',
104        'della'  => 'della',
105        'der'    => 'der',
106        'di'     => 'di',
107        'da'     => 'da',
108        'du'     => 'du',
109        'la'     => 'la',
110        'le'     => 'le',
111        'st'     => 'St.',
112        'ter'    => 'ter',
113        'vanden' => 'vanden',
114        'vere'   => 'vere',
115    ];
116
117    /**
118     * A list of nickname-wrapping delimiter pairs (opening => closing)
119     * @var array $nicknameDelimiters
120     * */
121    protected static array $nicknameDelimiters = [
122        '(' => ')',
123        '[' => ']',
124        '{' => '}',
125        '<' => '>',
126        '"' => '"',
127        "'" => "'",
128    ];
129
130    /**
131     * Getter method for accessing the salutations list
132     *
133     * @return array
134     */
135    public function getSalutations(): array
136    {
137        return self::$salutations;
138    }
139
140    /**
141     * Getter method for accessing the suffixes list
142     *
143     * @return array
144     */
145    public function getSuffixes(): array
146    {
147        return self::$suffixes;
148    }
149
150    /**
151     * Getter method for accessing the credentials list
152     *
153     * @return array
154     */
155    public function getCredentials(): array
156    {
157        return self::$credentials;
158    }
159
160    /**
161     * Getter method for accessing the lastname prefixes list
162     *
163     * @return array
164     */
165    public function getLastnamePrefixes(): array
166    {
167        return self::$lastnamePrefixes;
168    }
169
170    /**
171     * Getter method for accessing the nickname delimiters list
172     *
173     * @return array
174     */
175    public function getNicknameDelimiters(): array
176    {
177        return self::$nicknameDelimiters;
178    }
179
180}