Passed
Push — main ( 4118eb...a5c812 )
by Greg
07:41
created

PaternalSurnameTradition::newSpouseNames()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 8
nc 2
nop 2
dl 0
loc 14
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * webtrees: online genealogy
5
 * Copyright (C) 2022 webtrees development team
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16
 */
17
18
declare(strict_types=1);
19
20
namespace Fisharebest\Webtrees\SurnameTradition;
21
22
use Fisharebest\Webtrees\Elements\NameType;
23
use Fisharebest\Webtrees\I18N;
24
use Fisharebest\Webtrees\Individual;
25
26
use function var_dump;
27
28
/**
29
 * Children take their father’s surname. Wives take their husband’s surname.
30
 */
31
class PaternalSurnameTradition extends PatrilinealSurnameTradition
32
{
33
    /**
34
     * The name of this surname tradition
35
     *
36
     * @return string
37
     */
38
    public function name(): string
39
    {
40
        return I18N::translateContext('Surname tradition', 'paternal');
41
    }
42
43
    /**
44
     * A short description of this surname tradition
45
     *
46
     * @return string
47
     */
48
    public function description(): string
49
    {
50
        /* I18N: In the paternal surname tradition, ... */
51
        return
52
            I18N::translate('Children take their father’s surname.') . ' ' .
53
            I18N::translate('Wives take their husband’s surname.');
54
    }
55
56
    /**
57
     * What name is given to a new parent
58
     *
59
     * @param Individual $child
60
     * @param string                           $sex
61
     *
62
     * @return array<int,string>
63
     */
64
    public function newParentNames(Individual $child, string $sex): array
65
    {
66
        if ($sex === 'F' && preg_match(self::REGEX_SPFX_SURN, $this->extractName($child), $match)) {
67
            $name = $match['NAME'];
68
            $spfx = $match['SPFX'];
69
            $surn = $match['SURN'];
70
71
            return [
72
                $this->buildName('//', ['TYPE' => NameType::VALUE_BIRTH]),
73
                $this->buildName($name, ['TYPE' => NameType::VALUE_MARRIED, 'SPFX' => $spfx, 'SURN' => $surn]),
74
            ];
75
        }
76
77
        return parent::newParentNames($child, $sex);
78
    }
79
80
    /**
81
     * What names are given to a new spouse
82
     *
83
     * @param Individual $spouse
84
     * @param string                           $sex
85
     *
86
     * @return array<int,string>
87
     */
88
    public function newSpouseNames(Individual $spouse, string $sex): array
89
    {
90
        if ($sex === 'F' && preg_match(self::REGEX_SPFX_SURN, $this->extractName($spouse), $match)) {
91
            $name = $match['NAME'];
92
            $spfx = $match['SPFX'];
93
            $surn = $match['SURN'];
94
95
            return [
96
                $this->buildName('//', ['TYPE' => NameType::VALUE_BIRTH]),
97
                $this->buildName($name, ['TYPE' => NameType::VALUE_MARRIED, 'SPFX' => $spfx, 'SURN' => $surn]),
98
            ];
99
        }
100
101
        return parent::newSpouseNames($spouse, $sex);
102
    }
103
}
104