Module: ByStar::Between
- Included in:
- Base
- Defined in:
- lib/by_star/between.rb
Instance Method Summary collapse
- #at_time(*args) ⇒ Object
- #between_dates(*args) ⇒ Object
- #between_times(*args) ⇒ Object
- #by_calendar_month(*args) ⇒ Object
- #by_cweek(*args) ⇒ Object
- #by_day(*args) ⇒ Object
- #by_fortnight(*args) ⇒ Object
- #by_month(*args) ⇒ Object
- #by_quarter(*args) ⇒ Object
- #by_week(*args) ⇒ Object
- #by_weekend(*args) ⇒ Object
- #by_year(*args) ⇒ Object
- #next_day(options = {}) ⇒ Object
- #next_fortnight(options = {}) ⇒ Object
- #next_month(options = {}) ⇒ Object
- #next_week(options = {}) ⇒ Object
- #next_year(options = {}) ⇒ Object
- #past_day(options = {}) ⇒ Object
- #past_fortnight(options = {}) ⇒ Object
- #past_month(options = {}) ⇒ Object
- #past_week(options = {}) ⇒ Object
- #past_year(options = {}) ⇒ Object
- #today(options = {}) ⇒ Object
- #tomorrow(options = {}) ⇒ Object
- #yesterday(options = {}) ⇒ Object
Instance Method Details
#at_time(*args) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/by_star/between.rb', line 53 def at_time(*args) (*args) do |time, | start_field = by_star_start_field() end_field = by_star_end_field() scope = self scope = if start_field == end_field by_star_point_overlap_query(scope, start_field, time) else by_star_span_overlap_query(scope, start_field, end_field, time, ) end scope = by_star_order(scope, [:order]) if [:order] scope end end |
#between_dates(*args) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/by_star/between.rb', line 45 def between_dates(*args) = args. start_date, end_date = ByStar::Normalization.extract_range(args) start_date = ByStar::Normalization.date(start_date) end_date = ByStar::Normalization.date(end_date) between_times(start_date, end_date, ) end |
#between_times(*args) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/by_star/between.rb', line 5 def between_times(*args) = args..symbolize_keys! start_time, end_time = ByStar::Normalization.extract_range(args) offset = [:offset] || 0 if start_time.is_a?(Date) start_time = ByStar::Normalization.apply_offset_start(start_time.in_time_zone, offset) elsif start_time start_time += offset.seconds end if end_time.is_a?(Date) end_time = ByStar::Normalization.apply_offset_end(end_time.in_time_zone, offset) elsif end_time end_time += offset.seconds end start_field = by_star_start_field() end_field = by_star_end_field() scope = self scope = if !start_time && !end_time scope # do nothing elsif !end_time by_star_after_query(scope, start_field, start_time) elsif !start_time by_star_before_query(scope, start_field, end_time) elsif start_field == end_field by_star_point_query(scope, start_field, start_time, end_time) elsif [:strict] by_star_span_strict_query(scope, start_field, end_field, start_time, end_time) else by_star_span_loose_query(scope, start_field, end_field, start_time, end_time, ) end scope = by_star_order(scope, [:order]) if [:order] scope end |
#by_calendar_month(*args) ⇒ Object
111 112 113 114 115 116 117 |
# File 'lib/by_star/between.rb', line 111 def by_calendar_month(*args) (*args) do |time, | date = ByStar::Normalization.month(time, ) start_day = Array([:start_day]) between_dates(date.beginning_of_calendar_month(*start_day), date.end_of_calendar_month(*start_day), ) end end |
#by_cweek(*args) ⇒ Object
84 85 86 87 88 |
# File 'lib/by_star/between.rb', line 84 def by_cweek(*args) (*args) do |time, | by_week(ByStar::Normalization.cweek(time, ), ) end end |
#by_day(*args) ⇒ Object
69 70 71 72 73 74 |
# File 'lib/by_star/between.rb', line 69 def by_day(*args) (*args) do |time, | date = ByStar::Normalization.date(time) between_dates(date, date, ) end end |
#by_fortnight(*args) ⇒ Object
97 98 99 100 101 102 |
# File 'lib/by_star/between.rb', line 97 def by_fortnight(*args) (*args) do |time, | date = ByStar::Normalization.fortnight(time, ) between_dates(date.beginning_of_fortnight, date.end_of_fortnight, ) end end |
#by_month(*args) ⇒ Object
104 105 106 107 108 109 |
# File 'lib/by_star/between.rb', line 104 def by_month(*args) (*args) do |time, | date = ByStar::Normalization.month(time, ) between_dates(date.beginning_of_month, date.end_of_month, ) end end |
#by_quarter(*args) ⇒ Object
119 120 121 122 123 124 |
# File 'lib/by_star/between.rb', line 119 def by_quarter(*args) (*args) do |time, | date = ByStar::Normalization.quarter(time, ) between_dates(date.beginning_of_quarter, date.end_of_quarter, ) end end |
#by_week(*args) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/by_star/between.rb', line 76 def by_week(*args) (*args) do |time, | date = ByStar::Normalization.week(time, ) start_day = Array([:start_day]) between_dates(date.beginning_of_week(*start_day), date.end_of_week(*start_day), ) end end |
#by_weekend(*args) ⇒ Object
90 91 92 93 94 95 |
# File 'lib/by_star/between.rb', line 90 def by_weekend(*args) (*args) do |time, | date = ByStar::Normalization.week(time, ) between_dates(date.beginning_of_weekend, date.end_of_weekend, ) end end |
#by_year(*args) ⇒ Object
126 127 128 129 130 131 |
# File 'lib/by_star/between.rb', line 126 def by_year(*args) (*args) do |time, | date = ByStar::Normalization.year(time, ) between_dates(date.beginning_of_year, date.to_date.end_of_year, ) end end |
#next_day(options = {}) ⇒ Object
165 166 167 |
# File 'lib/by_star/between.rb', line 165 def next_day( = {}) between_times(Time.current, Time.current + 1.day, ) end |
#next_fortnight(options = {}) ⇒ Object
173 174 175 |
# File 'lib/by_star/between.rb', line 173 def next_fortnight( = {}) between_times(Time.current, Time.current + 2.weeks, ) end |
#next_month(options = {}) ⇒ Object
177 178 179 |
# File 'lib/by_star/between.rb', line 177 def next_month( = {}) between_times(Time.current, Time.current + 1.month, ) end |
#next_week(options = {}) ⇒ Object
169 170 171 |
# File 'lib/by_star/between.rb', line 169 def next_week( = {}) between_times(Time.current, Time.current + 1.week, ) end |
#next_year(options = {}) ⇒ Object
181 182 183 |
# File 'lib/by_star/between.rb', line 181 def next_year( = {}) between_times(Time.current, Time.current + 1.year, ) end |
#past_day(options = {}) ⇒ Object
145 146 147 |
# File 'lib/by_star/between.rb', line 145 def past_day( = {}) between_times(Time.current - 1.day, Time.current, ) end |
#past_fortnight(options = {}) ⇒ Object
153 154 155 |
# File 'lib/by_star/between.rb', line 153 def past_fortnight( = {}) between_times(Time.current - 2.weeks, Time.current, ) end |
#past_month(options = {}) ⇒ Object
157 158 159 |
# File 'lib/by_star/between.rb', line 157 def past_month( = {}) between_times(Time.current - 1.month, Time.current, ) end |
#past_week(options = {}) ⇒ Object
149 150 151 |
# File 'lib/by_star/between.rb', line 149 def past_week( = {}) between_times(Time.current - 1.week, Time.current, ) end |
#past_year(options = {}) ⇒ Object
161 162 163 |
# File 'lib/by_star/between.rb', line 161 def past_year( = {}) between_times(Time.current - 1.year, Time.current, ) end |
#today(options = {}) ⇒ Object
133 134 135 |
# File 'lib/by_star/between.rb', line 133 def today( = {}) by_day(Date.current, ) end |
#tomorrow(options = {}) ⇒ Object
141 142 143 |
# File 'lib/by_star/between.rb', line 141 def tomorrow( = {}) by_day(Date.tomorrow, ) end |
#yesterday(options = {}) ⇒ Object
137 138 139 |
# File 'lib/by_star/between.rb', line 137 def yesterday( = {}) by_day(Date.yesterday, ) end |