Skip to content

Commit

Permalink
Merge pull request #1 from elbgoods/ft-new-units
Browse files Browse the repository at this point in the history
add more units
  • Loading branch information
Gummibeer authored Mar 12, 2020
2 parents 676e7ed + d6f747c commit 2b684f5
Show file tree
Hide file tree
Showing 48 changed files with 561 additions and 42 deletions.
30 changes: 21 additions & 9 deletions src/Enums/UnitTypeEnum.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\UnitForwarder;
use Illuminate\Support\Collection;
use Illuminate\Support\Str;
use PhpUnitConversion\Map\Unit as UnitMap;
use PhpUnitConversion\Unit as BaseUnit;
use PhpUnitConversion\UnitType;
use Spatie\Enum\Enum;

/**
Expand All @@ -18,17 +18,29 @@
* @method static self TIME()
* @method static self TEMPERATURE()
* @method static self AMOUNT()
* @method static self LUMINANCE()
* @method static self LUMINANCE_ANSI()
* @method static self LUMINOUS_FLUX()
* @method static self ANGLE()
* @method static self POWER()
* @method static self PERCENTAGE()
*/
class UnitTypeEnum extends Enum
{
protected const MAP_INDEX = [
'MASS' => UnitType::MASS,
'LENGTH' => UnitType::LENGTH,
'AREA' => UnitType::AREA,
'VOLUME' => UnitType::VOLUME,
'TIME' => UnitType::TIME,
'TEMPERATURE' => UnitType::TEMPERATURE,
'AMOUNT' => UnitType::AMOUNT,
'MASS' => 1,
'LENGTH' => 2,
'AREA' => 3,
'VOLUME' => 4,
'TIME' => 5,
'TEMPERATURE' => 6,
'AMOUNT' => 7,
'LUMINANCE' => 8,
'LUMINANCE_ANSI' => 9,
'LUMINOUS_FLUX' => 10,
'ANGLE' => 11,
'POWER' => 12,
'PERCENTAGE' => 13,
];

public function getValue(): string
Expand All @@ -38,7 +50,7 @@ public function getValue(): string

public function getUnitTypeClass(): string
{
return 'Elbgoods\\LaravelUnitConverter\\Units\\'.ucfirst($this->getValue());
return 'Elbgoods\\LaravelUnitConverter\\Units\\'.Str::studly($this->getValue());
}

public function getUnits(): array
Expand Down
9 changes: 1 addition & 8 deletions src/Unit.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
use PhpUnitConversion\System\USC;
use PhpUnitConversion\Traits\BaseUnit as IsBaseUnit;
use PhpUnitConversion\Unit as BaseUnit;
use RuntimeException;

/**
* @method Unit to(Unit|string $target)
Expand Down Expand Up @@ -42,13 +41,7 @@ public static function fromBase(?float $value = null): self

public function toBase(): self
{
$base = $this->to($this->getBaseUnit()->class());

if ($base instanceof self) {
return $base;
}

throw new RuntimeException(sprintf('The base unit has to extend [%s].', self::class));
return $this->to($this->getBaseUnit()->class());
}

public function getType(): UnitTypeEnum
Expand Down
2 changes: 1 addition & 1 deletion src/UnitConverterServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public function boot(): void
UnitMap::clear();

if (config('unit-converter.default_units')) {
UnitMap::add(__DIR__.'/Units', __NAMESPACE__.'\\Units', null);
UnitMap::add(__DIR__.'/Units', __NAMESPACE__.'\\Units');
}

foreach (config('unit-converter.units') as $unitType => $units) {
Expand Down
12 changes: 12 additions & 0 deletions src/Units/Angle.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units;

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\Angle\Radian;

abstract class Angle extends Unit
{
public const TYPE = 11;
public const BASE_UNIT = Radian::class;
}
14 changes: 14 additions & 0 deletions src/Units/Angle/Degree.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units\Angle;

use Elbgoods\LaravelUnitConverter\Units\Angle;
use PhpUnitConversion\System\Metric;

class Degree extends Angle implements Metric
{
public const FACTOR = M_PI / 180;

public const SYMBOL = '°';
public const LABEL = 'degree';
}
15 changes: 15 additions & 0 deletions src/Units/Angle/Radian.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units\Angle;

use Elbgoods\LaravelUnitConverter\Units\Angle;
use PhpUnitConversion\System\Metric;
use PhpUnitConversion\Traits\BaseUnit;

class Radian extends Angle implements Metric
{
use BaseUnit;

public const SYMBOL = 'rad';
public const LABEL = 'radian';
}
3 changes: 1 addition & 2 deletions src/Units/Area.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\Area\SquareMeter;
use PhpUnitConversion\UnitType;

abstract class Area extends Unit
{
public const TYPE = UnitType::AREA;
public const TYPE = 3;
public const BASE_UNIT = SquareMeter::class;
}
3 changes: 1 addition & 2 deletions src/Units/Length.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\Length\Meter;
use PhpUnitConversion\UnitType;

abstract class Length extends Unit
{
public const TYPE = UnitType::LENGTH;
public const TYPE = 2;
public const BASE_UNIT = Meter::class;
}
12 changes: 12 additions & 0 deletions src/Units/Luminance.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units;

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\Luminance\CandelaPerSquareMeter;

abstract class Luminance extends Unit
{
public const TYPE = 8;
public const BASE_UNIT = CandelaPerSquareMeter::class;
}
15 changes: 15 additions & 0 deletions src/Units/Luminance/CandelaPerSquareMeter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units\Luminance;

use Elbgoods\LaravelUnitConverter\Units\Luminance;
use PhpUnitConversion\System\Metric;
use PhpUnitConversion\Traits\BaseUnit;

class CandelaPerSquareMeter extends Luminance implements Metric
{
use BaseUnit;

public const SYMBOL = 'cd/m2';
public const LABEL = 'candela per square meter';
}
12 changes: 12 additions & 0 deletions src/Units/Luminance/Nit.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units\Luminance;

use Elbgoods\LaravelUnitConverter\Units\Luminance;
use PhpUnitConversion\System\Metric;

class Nit extends Luminance implements Metric
{
public const SYMBOL = 'nt';
public const LABEL = 'nit';
}
12 changes: 12 additions & 0 deletions src/Units/LuminanceAnsi.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units;

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\LuminanceAnsi\AnsiLumen;

abstract class LuminanceAnsi extends Unit
{
public const TYPE = 9;
public const BASE_UNIT = AnsiLumen::class;
}
14 changes: 14 additions & 0 deletions src/Units/LuminanceAnsi/AnsiLumen.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units\LuminanceAnsi;

use Elbgoods\LaravelUnitConverter\Units\LuminanceAnsi;
use PhpUnitConversion\Traits\BaseUnit;

class AnsiLumen extends LuminanceAnsi
{
use BaseUnit;

public const SYMBOL = 'lm';
public const LABEL = 'ansi lumen';
}
12 changes: 12 additions & 0 deletions src/Units/LuminousFlux.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units;

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\LuminousFlux\Lumen;

abstract class LuminousFlux extends Unit
{
public const TYPE = 10;
public const BASE_UNIT = Lumen::class;
}
14 changes: 14 additions & 0 deletions src/Units/LuminousFlux/Lumen.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units\LuminousFlux;

use Elbgoods\LaravelUnitConverter\Units\LuminousFlux;
use PhpUnitConversion\Traits\BaseUnit;

class Lumen extends LuminousFlux
{
use BaseUnit;

public const SYMBOL = 'lm';
public const LABEL = 'lumen';
}
3 changes: 1 addition & 2 deletions src/Units/Mass.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\Mass\KiloGram;
use PhpUnitConversion\UnitType;

abstract class Mass extends Unit
{
public const TYPE = UnitType::MASS;
public const TYPE = 1;
public const BASE_UNIT = KiloGram::class;
}
12 changes: 12 additions & 0 deletions src/Units/Percentage.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units;

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\Percentage\Percent;

abstract class Percentage extends Unit
{
public const TYPE = 13;
public const BASE_UNIT = Percent::class;
}
15 changes: 15 additions & 0 deletions src/Units/Percentage/Percent.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units\Percentage;

use Elbgoods\LaravelUnitConverter\Units\Percentage;
use PhpUnitConversion\System\Metric;
use PhpUnitConversion\Traits\BaseUnit;

class Percent extends Percentage implements Metric
{
use BaseUnit;

public const SYMBOL = '%';
public const LABEL = 'percent';
}
12 changes: 12 additions & 0 deletions src/Units/Power.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units;

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\Power\Watt;

abstract class Power extends Unit
{
public const TYPE = 12;
public const BASE_UNIT = Watt::class;
}
14 changes: 14 additions & 0 deletions src/Units/Power/KiloWatt.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units\Power;

use Elbgoods\LaravelUnitConverter\Units\Power;
use PhpUnitConversion\System\Metric;

class KiloWatt extends Power implements Metric
{
public const FACTOR = 1000;

public const SYMBOL = 'kW';
public const LABEL = 'kilowatt';
}
15 changes: 15 additions & 0 deletions src/Units/Power/Watt.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

namespace Elbgoods\LaravelUnitConverter\Units\Power;

use Elbgoods\LaravelUnitConverter\Units\Power;
use PhpUnitConversion\System\Metric;
use PhpUnitConversion\Traits\BaseUnit;

class Watt extends Power implements Metric
{
use BaseUnit;

public const SYMBOL = 'W';
public const LABEL = 'watt';
}
3 changes: 1 addition & 2 deletions src/Units/Temperature.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@

use Elbgoods\LaravelUnitConverter\Unit;
use Elbgoods\LaravelUnitConverter\Units\Temperature\Kelvin;
use PhpUnitConversion\UnitType;

abstract class Temperature extends Unit
{
public const TYPE = UnitType::TEMPERATURE;
public const TYPE = 6;
public const BASE_UNIT = Kelvin::class;
}
Loading

0 comments on commit 2b684f5

Please sign in to comment.