1 | <?php |
||
13 | class MapsDistanceParser { |
||
14 | |||
15 | private static $validatedDistanceUnit = false; |
||
16 | |||
17 | private static $unitRegex = false; |
||
18 | |||
19 | 1 | public static function parseAndFormat( string $distance, string $unit = null, int $decimals = 2 ): string { |
|
22 | |||
23 | /** |
||
24 | * Formats a given distance in meters to a distance in an optionally specified notation. |
||
25 | */ |
||
26 | 10 | public static function formatDistance( float $meters, string $unit = null, int $decimals = 2 ): string { |
|
31 | |||
32 | /** |
||
33 | * Returns the unit to meter ratio in a safe way, by first resolving the unit. |
||
34 | */ |
||
35 | 71 | public static function getUnitRatio( string $unit = null ): float { |
|
39 | |||
40 | /** |
||
41 | * Returns a valid unit. If the provided one is invalid, the default will be used. |
||
42 | */ |
||
43 | 72 | public static function getValidUnit( string $unit = null ): string { |
|
62 | |||
63 | /** |
||
64 | * Parses a distance optionally containing a unit to a float value in meters. |
||
65 | * |
||
66 | * @param string $distance |
||
67 | * |
||
68 | * @return float|false The distance in meters or false on failure |
||
69 | */ |
||
70 | 67 | public static function parseDistance( string $distance ) { |
|
87 | |||
88 | 68 | public static function isDistance( string $distance ): bool { |
|
95 | |||
96 | /** |
||
97 | * Normalizes a potential distance by removing spaces and turning comma's into dots. |
||
98 | */ |
||
99 | 68 | protected static function normalizeDistance( string $distance ): string { |
|
119 | |||
120 | 68 | private static function initUnitRegex() { |
|
121 | 68 | if ( self::$unitRegex === false ) { |
|
122 | global $egMapsDistanceUnits; |
||
123 | self::$unitRegex = implode( '|', array_keys( $egMapsDistanceUnits ) ) . '|'; |
||
124 | } |
||
125 | 68 | } |
|
126 | |||
127 | /** |
||
128 | * Returns a list of all supported units. |
||
129 | */ |
||
130 | 19 | public static function getUnits(): array { |
|
134 | |||
135 | } |
||
136 |