Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
91.30% covered (success)
91.30%
21 / 23
92.00% covered (success)
92.00%
23 / 25
35.29% covered (danger)
35.29%
6 / 17
83.33% covered (warning)
83.33%
5 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
Location
91.30% covered (success)
91.30%
21 / 23
92.00% covered (success)
92.00%
23 / 25
35.29% covered (danger)
35.29%
6 / 17
83.33% covered (warning)
83.33%
5 / 6
75.96
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
 __destruct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 __toString
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 name
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 asHashtag
87.50% covered (warning)
87.50%
14 / 16
88.89% covered (warning)
88.89%
16 / 18
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
9.16
 equals
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Fdsn\Webservices\Event\Structs;
3
4/**
5 * Data structure to handle Location
6 *
7 * @param string $name        Name of location
8 */
9class Location {
10    private string $name;
11
12    function __construct(string $name) {
13
14        if( empty($name) )
15            throw new \InvalidArgumentException("Location name invalid");
16
17        $this->name = $name;
18    }
19
20    function __destruct(){ }
21
22    /**
23     * Returns location 
24     *
25     * @return string Location name
26     */
27    function __toString(){ return sprintf("%s", $this->name); }
28
29    /**
30     * fetch location name
31     * @return string location name
32     */
33    public function name():string{ return $this->name; }
34
35    /**
36     * Hashtag Location name
37     * @return string Location name with hashtag for Tweeter/X, Telegram, etc...
38     */
39    public function asHashtag():string{
40        $tokens = array();
41
42        $elems = preg_split('/ /', $this->name);
43        foreach($elems as $elem){
44            if(is_numeric($elem))
45                $tokens[] = $elem;
46            elseif(preg_match('/^(E|Se|S|Sw|W|Nw|N|Ne|Km|di)$/i', $elem))
47                $tokens[] = $elem;
48            elseif(preg_match('/\(\w+/i', $elem))
49                $tokens[] = preg_replace('/^\((\w+)/i', '(#$1', $elem);
50            elseif(preg_match('/\[.*/', $elem))
51                $tokens[] = preg_replace('/^\[(\w+)/i', '[#$1', $elem);
52            elseif(preg_match('/.*]/', $elem))
53                $tokens[] = "#" . $elem;
54            elseif(is_string($elem) && 2 < strlen($elem))
55                $tokens[] = '#' . $elem;
56
57        }
58        return implode(' ', $tokens);
59    }
60
61    /**
62     * Compare two objects
63     * @return bool        true are equals, false otherwise
64     */
65    public function equals(self $other):bool{ return $this->name  == $other->name; }
66
67
68}