From 2400978ec959dad502d7cafdd29c9ae9f79e8132 Mon Sep 17 00:00:00 2001 From: AnuzPandey Date: Sun, 19 Nov 2023 01:35:23 +0545 Subject: [PATCH] :zap: features: add carbon extension feature with mixin. --- README.md | 41 +++++++++++++++++++++++++++++++++ src/Mixin/CarbonMixin.php | 24 ------------------- src/Mixin/NepaliDateMixin.php | 34 +++++++++++++++++++++++++++ src/Traits/EnglishDateTrait.php | 2 +- src/Traits/NepaliDateTrait.php | 2 +- 5 files changed, 77 insertions(+), 26 deletions(-) delete mode 100644 src/Mixin/CarbonMixin.php create mode 100644 src/Mixin/NepaliDateMixin.php diff --git a/README.md b/README.md index 8fd3cbc..11ac9b5 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,47 @@ The following format specifiers are supported for formatting dates: - `l` - Day in full name (Sunday-Saturday/आइतबार-शनिबार) - `S` - Day in two letters (st, nd, rd, th) +## Extending Carbon with NepaliDateMixin +In order to use the `toNepaliDate` and `toEnglishDate` mixin on Carbon instances, you need to register the `NepaliDateMixin` mixin in your Laravel service provider. + +You can do so by adding the following code to your `AppServiceProvider` +```php +toDateString(); - - return LaravelNepaliDate::from($date)->toNepaliDate($format, $locale); - }; - } - -} diff --git a/src/Mixin/NepaliDateMixin.php b/src/Mixin/NepaliDateMixin.php new file mode 100644 index 0000000..34691ff --- /dev/null +++ b/src/Mixin/NepaliDateMixin.php @@ -0,0 +1,34 @@ +toDateString(); + + return LaravelNepaliDate::from($date)->toNepaliDate($format, $locale); + }; + } + + + public function toEnglishDate(): Closure + { + return function (?string $format = 'Y-m-d', ?string $locale = 'en') { + $date = $this->toDateString(); + + return LaravelNepaliDate::from($date)->toEnglishDate($format, $locale); + }; + } + +} diff --git a/src/Traits/EnglishDateTrait.php b/src/Traits/EnglishDateTrait.php index 82c505f..24c8062 100644 --- a/src/Traits/EnglishDateTrait.php +++ b/src/Traits/EnglishDateTrait.php @@ -62,7 +62,7 @@ trait EnglishDateTrait ]; - public function toEnglishDate(?string $format = NULL, ?string $locale = 'en'): string + public function toEnglishDate(string $format = 'Y-m-d', string $locale = 'en'): string { if ($format) { return $this->toFormattedEnglishDate($format, $locale); diff --git a/src/Traits/NepaliDateTrait.php b/src/Traits/NepaliDateTrait.php index 54dfde3..071d5ea 100644 --- a/src/Traits/NepaliDateTrait.php +++ b/src/Traits/NepaliDateTrait.php @@ -63,7 +63,7 @@ trait NepaliDateTrait ]; - public function toNepaliDate(?string $format = NULL, ?string $locale = 'np'): string + public function toNepaliDate(string $format = 'Y-m-d', string $locale = 'np'): string { if ($format) { return $this->toFormattedNepaliDate($format, $locale);