From dd95737391656cae97061701c58aefae928387e9 Mon Sep 17 00:00:00 2001 From: Chuck Hagenbuch Date: Tue, 3 Feb 2009 12:34:00 -0500 Subject: [PATCH] start moving repeaters to Horde_Date_Repeater --- framework/Date_Parser/lib/Horde/Date/Repeater.php | 44 ++++++++++++++++++++++ .../Date/{Parser/Locale/Base => }/Repeater/Day.php | 2 +- .../{Parser/Locale/Base => }/Repeater/DayName.php | 2 +- .../Locale/Base => }/Repeater/DayPortion.php | 6 +-- .../lib/Horde/Date/Repeater/Exception.php | 4 ++ .../{Parser/Locale/Base => }/Repeater/Hour.php | 2 +- .../{Parser/Locale/Base => }/Repeater/Minute.php | 2 +- .../{Parser/Locale/Base => }/Repeater/Month.php | 2 +- .../Locale/Base => }/Repeater/MonthName.php | 9 +---- .../{Parser/Locale/Base => }/Repeater/Season.php | 6 +-- .../Locale/Base => }/Repeater/SeasonName.php | 6 +-- .../{Parser/Locale/Base => }/Repeater/Second.php | 2 +- .../{Parser/Locale/Base => }/Repeater/Time.php | 6 +-- .../{Parser/Locale/Base => }/Repeater/Week.php | 24 ++++++------ .../{Parser/Locale/Base => }/Repeater/Weekend.php | 24 ++++++------ .../{Parser/Locale/Base => }/Repeater/Year.php | 2 +- 16 files changed, 93 insertions(+), 50 deletions(-) create mode 100644 framework/Date_Parser/lib/Horde/Date/Repeater.php rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Day.php (95%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/DayName.php (94%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/DayPortion.php (95%) create mode 100644 framework/Date_Parser/lib/Horde/Date/Repeater/Exception.php rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Hour.php (95%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Minute.php (95%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Month.php (95%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/MonthName.php (93%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Season.php (65%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/SeasonName.php (72%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Second.php (91%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Time.php (94%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Week.php (72%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Weekend.php (70%) rename framework/Date_Parser/lib/Horde/Date/{Parser/Locale/Base => }/Repeater/Year.php (95%) diff --git a/framework/Date_Parser/lib/Horde/Date/Repeater.php b/framework/Date_Parser/lib/Horde/Date/Repeater.php new file mode 100644 index 000000000..43ec167c8 --- /dev/null +++ b/framework/Date_Parser/lib/Horde/Date/Repeater.php @@ -0,0 +1,44 @@ +now)) { + throw new Horde_Date_Repeater_Exception('Start point must be set before calling next()'); + } + + if (!in_array($pointer, array('future', 'none', 'past'))) { + throw new Horde_Date_Repeater_Exception("First argument 'pointer' must be one of 'past', 'future', 'none'"); + } + } + + public function this($pointer) + { + if (is_null($this->now)) { + throw new Horde_Date_Repeater_Exception('Start point must be set before calling this()'); + } + + if (!in_array($pointer, array('future', 'none', 'past'))) { + throw new Horde_Date_Repeater_Exception("First argument 'pointer' must be one of 'past', 'future', 'none'"); + } + } + + public function __toString() + { + return 'repeater'; + } + +} diff --git a/framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Day.php b/framework/Date_Parser/lib/Horde/Date/Repeater/Day.php similarity index 95% rename from framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Day.php rename to framework/Date_Parser/lib/Horde/Date/Repeater/Day.php index 98a3bc5ac..6b6ef051f 100644 --- a/framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Day.php +++ b/framework/Date_Parser/lib/Horde/Date/Repeater/Day.php @@ -1,5 +1,5 @@ now = $span->begin; $portionSpan = $this->next($pointer); $direction = ($pointer == 'future') ? 1 : -1; - return $portionSpan + ($direction * ($amount - 1) * Horde_Date_Parser_Locale_Base_Repeater_Day::DAY_SECONDS); + return $portionSpan + ($direction * ($amount - 1) * Horde_Date_Repeater_Day::DAY_SECONDS); } public function width() { if (!$this->range) { - throw new Horde_Date_Parser_Exception('Range has not been set'); + throw new Horde_Date_Repeater_Exception('Range has not been set'); } if ($this->currentSpan) { diff --git a/framework/Date_Parser/lib/Horde/Date/Repeater/Exception.php b/framework/Date_Parser/lib/Horde/Date/Repeater/Exception.php new file mode 100644 index 000000000..0fb573e7a --- /dev/null +++ b/framework/Date_Parser/lib/Horde/Date/Repeater/Exception.php @@ -0,0 +1,4 @@ +currentTime) { - throw new Horde_Date_Parser_Exception('Current time cannot be null at this point'); + throw new Horde_Date_Repeater_Exception('Current time cannot be null at this point'); } } diff --git a/framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Week.php b/framework/Date_Parser/lib/Horde/Date/Repeater/Week.php similarity index 72% rename from framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Week.php rename to framework/Date_Parser/lib/Horde/Date/Repeater/Week.php index 92f2b6ccd..9b80b785b 100644 --- a/framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Week.php +++ b/framework/Date_Parser/lib/Horde/Date/Repeater/Week.php @@ -1,5 +1,5 @@ currentWeekStart) { switch ($pointer) { case 'future': - $sundayRepeater = new Horde_Date_Parser_Locale_Base_Repeater_DayName(Horde_Date::DATE_SUNDAY); - $sundayRepeater->start = $this->now; + $sundayRepeater = new Horde_Date_Repeater_DayName(Horde_Date::DATE_SUNDAY); + $sundayRepeater->now = $this->now; $nextSundaySpan = $sundayRepeater->next('future'); $this->currentWeekStart = $nextSundaySpan->begin; break; case 'past': - $sundayRepeater = new Horde_Date_Parser_Locale_Base_Repeater_DayName(Horde_Date::DATE_SUNDAY); - $sundayRepeater->start = clone($this->now); - $sundayRepeater->start->day++; + $sundayRepeater = new Horde_Date_Repeater_DayName(Horde_Date::DATE_SUNDAY); + $sundayRepeater->now = clone($this->now); + $sundayRepeater->now->day++; $sundayRepeater->next('past'); $lastSundaySpan = $sundayRepeater->next('past'); $currentWeekStart = $lastSundaySpan->begin; @@ -47,23 +47,23 @@ class Horde_Date_Parser_Locale_Base_Repeater_Week extends Horde_Date_Parser_Loca switch ($pointer) { case 'future': $thisWeekStart = new Horde_Date(array('year' => $now->year, 'month' => $now->month, 'day' => $now->day, 'hour' => $now->hour + 1)); - $sundayRepeater = new Horde_Date_Parser_Locale_Base_Repeater_DayName(Horde_Date::DATE_SUNDAY); - $sundayRepeater->start = $this->now; + $sundayRepeater = new Horde_Date_Repeater_DayName(Horde_Date::DATE_SUNDAY); + $sundayRepeater->now = $this->now; $thisSundaySpan = $sundayRepeater->this('future'); $thisWeekEnd = $thisSundaySpan->begin; return new Horde_Date_Span($thisWeekStart, $thisWeekEnd); case 'past': $thisWeekEnd = new Horde_Date(array('year' => $now->year, 'month' => $now->month, 'day' => $now->day, 'hour' => $now->hour)); - $sundayRepeater = new Horde_Date_Parser_Locale_Base_Repeater_DayName(Horde_Date::DATE_SUNDAY); - $sundayRepeater->start = $this->now; + $sundayRepeater = new Horde_Date_Repeater_DayName(Horde_Date::DATE_SUNDAY); + $sundayRepeater->now = $this->now; $lastSundaySpan = $sundayRepeater->next('past'); $thisWeekStart = $lastSundaySpan->begin; return new Horde_Date_Span($thisWeekStart, $thisWeekEnd); case 'none': - $sundayRepeater = new Horde_Date_Parser_Locale_Base_Repeater_DayName(Horde_Date::DATE_SUNDAY); - $sundayRepeater->start = $this->now; + $sundayRepeater = new Horde_Date_Repeater_DayName(Horde_Date::DATE_SUNDAY); + $sundayRepeater->now = $this->now; $lastSundaySpan = $sundayRepeater->next('past'); $thisWeekStart = $lastSundaySpan->begin; $thisWeekEnd = clone($thisWeekStart); diff --git a/framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Weekend.php b/framework/Date_Parser/lib/Horde/Date/Repeater/Weekend.php similarity index 70% rename from framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Weekend.php rename to framework/Date_Parser/lib/Horde/Date/Repeater/Weekend.php index 17b227e46..edc48fa95 100644 --- a/framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Weekend.php +++ b/framework/Date_Parser/lib/Horde/Date/Repeater/Weekend.php @@ -1,5 +1,5 @@ currentWeekStart) { switch ($pointer) { case 'future': - $saturdayRepeater = new Horde_Date_Locale_Base_Repeater_DayName(Horde_Date::DATE_SATURDAY); - $saturdayRepeater->start = $this->now; + $saturdayRepeater = new Horde_Date_Repeater_DayName(Horde_Date::DATE_SATURDAY); + $saturdayRepeater->now = $this->now; $nextSaturdaySpan = $saturdayRepeater->next('future'); $this->currentWeekStart = $nextSaturdaySpan->begin; break; case 'past': - $saturdayRepeater = new Horde_Date_Locale_Base_Repeater_DayName(Horde_Date::DATE_SATURDAY); - $saturdayRepeater->start = $this->now; - $saturdayRepeater->start->day++; + $saturdayRepeater = new Horde_Date_Repeater_DayName(Horde_Date::DATE_SATURDAY); + $saturdayRepeater->now = $this->now; + $saturdayRepeater->now->day++; $lastSaturdaySpan = $saturdayRepeater->next('past'); $this->currentWeekStart = $lastSaturdaySpan->begin; break; @@ -46,16 +46,16 @@ class Horde_Date_Parser_Locale_Base_Repeater_Weekend extends Horde_Date_Parser_L switch ($pointer) { case 'future': case 'none': - $saturdayRepeater = new Horde_Date_Locale_Base_Repeater_DayName(Horde_Date::DATE_SATURDAY); - $saturdayRepeater->start = $this->now; + $saturdayRepeater = new Horde_Date_Repeater_DayName(Horde_Date::DATE_SATURDAY); + $saturdayRepeater->now = $this->now; $thisSaturdaySpan = $saturdayRepeater->this('future'); $thisSaturdaySpanEnd = $thisSaturdaySpan->begin; $thisSaturdaySpanEnd->day += 2; return new Horde_Date_Span($thisSaturdaySpan->begin, $thisSaturdaySpanEnd); case 'past': - $saturdayRepeater = new Horde_Date_Locale_Base_Repeater_DayName(Horde_Date::DATE_SATURDAY); - $saturdayRepeater->start = $this->now; + $saturdayRepeater = new Horde_Date_Repeater_DayName(Horde_Date::DATE_SATURDAY); + $saturdayRepeater->now = $this->now; $lastSaturdaySpan = $saturdayRepeater->this('past'); $lastSaturdaySpanEnd = $lastSaturdaySpan->begin; $lastSaturdaySpanEnd->day += 2; @@ -66,8 +66,8 @@ class Horde_Date_Parser_Locale_Base_Repeater_Weekend extends Horde_Date_Parser_L public function offset($span, $amount, $pointer) { $direction = ($pointer == 'future') ? 1 : -1; - $weekend = new Horde_Date_Parser_Locale_Base_Repeater_Weekend('weekend'); - $weekend->start = $span->begin; + $weekend = new Horde_Date_Repeater_Weekend('weekend'); + $weekend->now = $span->begin; $start = $weekend->next($pointer)->begin; $start->day += ($amount - 1) * $direction * 7; // @FIXME diff --git a/framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Year.php b/framework/Date_Parser/lib/Horde/Date/Repeater/Year.php similarity index 95% rename from framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Year.php rename to framework/Date_Parser/lib/Horde/Date/Repeater/Year.php index 87151f89d..ace5cdc20 100644 --- a/framework/Date_Parser/lib/Horde/Date/Parser/Locale/Base/Repeater/Year.php +++ b/framework/Date_Parser/lib/Horde/Date/Repeater/Year.php @@ -1,5 +1,5 @@