/**
  * Register Twig tags
  * @return array
  */
 public function registerMarkupTags()
 {
     return ['filters' => ['duration' => function ($datetime) {
         $interval = preg_split('/\\:|\\:0/', $datetime);
         $diff = new \DateInterval('PT' . $interval[0] . 'H' . $interval[1] . 'M');
         \Carbon\CarbonInterval::setLocale('ru');
         return \Carbon\CarbonInterval::instance($diff);
     }, 'dateLocale' => [$this, 'dateLocale']]];
 }
 /**
  * @expectedException InvalidArgumentException
  */
 public function testInstanceWithDaysThrowsException()
 {
     $ci = CarbonInterval::instance(Carbon::now()->diff(Carbon::now()->addWeeks(3)));
 }
Exemple #3
0
 /**
  * Register Twig tags
  * @return array
  */
 public function registerMarkupTags()
 {
     return ['filters' => ['duration' => function ($datetime) {
         $interval = preg_split('/\\:|\\:0/', $datetime);
         $diff = new \DateInterval('PT' . $interval[0] . 'H' . $interval[1] . 'M');
         \Carbon\CarbonInterval::setLocale('ru');
         return \Carbon\CarbonInterval::instance($diff);
     }, 'dateLocale' => [$this, 'dateLocale'], 'unique' => function ($array) {
         if (!$array) {
             return $array;
         }
         return $ret = array_unique($array, SORT_REGULAR);
     }, 'pluck' => function ($collection, ...$items) {
         if (!$collection) {
             return;
         }
         $ret = [];
         foreach ($collection as $key => $object) {
             $_ret = [];
             foreach ($items as $key) {
                 if (array_key_exists($key, $object)) {
                     $_ret[$key] = $object[$key];
                 } else {
                     return;
                 }
             }
             $ret[] = $_ret;
         }
         return $ret;
     }, 'emt' => function ($string) {
         return EMTypograph::fast_apply($string, ['Nobr.nowrap' => 'on', 'Nobr.hyphen_nowrap' => 'on', 'OptAlign.all' => 'off', 'Text.paragraphs' => 'off', 'Text.breakline' => 'off']);
     }, 'emts' => function ($string) {
         return EMTypograph::fast_apply($string, ['Nobr.nowrap' => 'on', 'Nobr.hyphen_nowrap' => 'on', 'OptAlign.all' => 'off', 'Text.paragraphs' => 'off', 'Text.breakline' => 'off']);
     }], 'functions' => ['dateLocaleIntervalOld' => function ($date_start, $date_end) {
         $s = \Carbon\Carbon::parse($date_start);
         $e = \Carbon\Carbon::parse($date_end);
         $c = $e->month > $s->month;
         // \Carbon\Carbon::setLocale('ru');
         if ($c) {
             return sprintf("c %s %s по %s %s", $s->day, $this->dateLocale($s, "%h"), $e->day, $this->dateLocale($e, "%h"));
         } else {
             return sprintf("c %s по %s %s", $s->day, $e->day, $this->dateLocale($e, "%h"));
         }
     }, 'dateLocaleInterval' => function ($date_start, $date_end) {
         $s = \Carbon\Carbon::parse($date_start);
         $sm = \Carbon\Carbon::parse($date_start)->startOfMonth()->day;
         $e = \Carbon\Carbon::parse($date_end);
         $em = \Carbon\Carbon::parse($date_end)->endOfMonth()->day;
         $isDifferentMonth = $e->month > $s->month;
         $isDifferentYear = $e->year > $s->year;
         $isFullMonth = $s->month == $e->month && $s->day == $sm && $e->day == $em;
         // \Carbon\Carbon::setLocale('ru');
         if ($isDifferentYear) {
             return sprintf("c %s %s %s по %s %s %s", $s->day, $this->dateLocale($s, "%h"), $s->year, $e->day, $this->dateLocale($e, "%h"), $s->year);
         }
         if ($isDifferentMonth) {
             return sprintf("c %s %s по %s %s", $s->day, $this->dateLocale($s, "%h"), $e->day, $this->dateLocale($e, "%h"));
         }
         if ($isFullMonth) {
             return sprintf("в %s %s", $this->dateLocale($s, "%X"), $s->year);
         }
         return sprintf("c %s по %s %s", $s->day, $e->day, $this->dateLocale($e, "%h"));
     }]];
 }