lib/by_star/between.rb in by_star-4.0.0 vs lib/by_star/between.rb in by_star-4.0.1
- old
+ new
@@ -1,185 +1,185 @@
-module ByStar
-
- module Between
-
- def between_times(*args)
- options = args.extract_options!.symbolize_keys!
-
- start_time, end_time = ByStar::Normalization.extract_range(args)
- offset = options[: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(options)
- end_field = by_star_end_field(options)
-
- 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 options[: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, options)
- end
-
- scope = by_star_order(scope, options[:order]) if options[:order]
- scope
- end
-
- def between_dates(*args)
- options = args.extract_options!
- 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, options)
- end
-
- def at_time(*args)
- with_by_star_options(*args) do |time, options|
- start_field = by_star_start_field(options)
- end_field = by_star_end_field(options)
-
- 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, options)
- end
- scope = by_star_order(scope, options[:order]) if options[:order]
- scope
- end
- end
-
- def by_day(*args)
- with_by_star_options(*args) do |time, options|
- date = ByStar::Normalization.date(time)
- between_dates(date, date, options)
- end
- end
-
- def by_week(*args)
- with_by_star_options(*args) do |time, options|
- date = ByStar::Normalization.week(time, options)
- start_day = Array(options[:start_day])
- between_dates(date.beginning_of_week(*start_day), date.end_of_week(*start_day), options)
- end
- end
-
- def by_cweek(*args)
- with_by_star_options(*args) do |time, options|
- by_week(ByStar::Normalization.cweek(time, options), options)
- end
- end
-
- def by_weekend(*args)
- with_by_star_options(*args) do |time, options|
- date = ByStar::Normalization.week(time, options)
- between_dates(date.beginning_of_weekend, date.end_of_weekend, options)
- end
- end
-
- def by_fortnight(*args)
- with_by_star_options(*args) do |time, options|
- date = ByStar::Normalization.fortnight(time, options)
- between_dates(date.beginning_of_fortnight, date.end_of_fortnight, options)
- end
- end
-
- def by_month(*args)
- with_by_star_options(*args) do |time, options|
- date = ByStar::Normalization.month(time, options)
- between_dates(date.beginning_of_month, date.end_of_month, options)
- end
- end
-
- def by_calendar_month(*args)
- with_by_star_options(*args) do |time, options|
- date = ByStar::Normalization.month(time, options)
- start_day = Array(options[:start_day])
- between_dates(date.beginning_of_calendar_month(*start_day), date.end_of_calendar_month(*start_day), options)
- end
- end
-
- def by_quarter(*args)
- with_by_star_options(*args) do |time, options|
- date = ByStar::Normalization.quarter(time, options)
- between_dates(date.beginning_of_quarter, date.end_of_quarter, options)
- end
- end
-
- def by_year(*args)
- with_by_star_options(*args) do |time, options|
- date = ByStar::Normalization.year(time, options)
- between_dates(date.beginning_of_year, date.to_date.end_of_year, options)
- end
- end
-
- def today(options = {})
- by_day(Date.current, options)
- end
-
- def yesterday(options = {})
- by_day(Date.yesterday, options)
- end
-
- def tomorrow(options = {})
- by_day(Date.tomorrow, options)
- end
-
- def past_day(options = {})
- between_times(Time.current - 1.day, Time.current, options)
- end
-
- def past_week(options = {})
- between_times(Time.current - 1.week, Time.current, options)
- end
-
- def past_fortnight(options = {})
- between_times(Time.current - 2.weeks, Time.current, options)
- end
-
- def past_month(options = {})
- between_times(Time.current - 1.month, Time.current, options)
- end
-
- def past_year(options = {})
- between_times(Time.current - 1.year, Time.current, options)
- end
-
- def next_day(options = {})
- between_times(Time.current, Time.current + 1.day, options)
- end
-
- def next_week(options = {})
- between_times(Time.current, Time.current + 1.week, options)
- end
-
- def next_fortnight(options = {})
- between_times(Time.current, Time.current + 2.weeks, options)
- end
-
- def next_month(options = {})
- between_times(Time.current, Time.current + 1.month, options)
- end
-
- def next_year(options = {})
- between_times(Time.current, Time.current + 1.year, options)
- end
- end
-end
+module ByStar
+
+ module Between
+
+ def between_times(*args)
+ options = args.extract_options!.symbolize_keys!
+
+ start_time, end_time = ByStar::Normalization.extract_range(args)
+ offset = options[: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(options)
+ end_field = by_star_end_field(options)
+
+ 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 options[: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, options)
+ end
+
+ scope = by_star_order(scope, options[:order]) if options[:order]
+ scope
+ end
+
+ def between_dates(*args)
+ options = args.extract_options!
+ 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, options)
+ end
+
+ def at_time(*args)
+ with_by_star_options(*args) do |time, options|
+ start_field = by_star_start_field(options)
+ end_field = by_star_end_field(options)
+
+ 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, options)
+ end
+ scope = by_star_order(scope, options[:order]) if options[:order]
+ scope
+ end
+ end
+
+ def by_day(*args)
+ with_by_star_options(*args) do |time, options|
+ date = ByStar::Normalization.date(time)
+ between_dates(date, date, options)
+ end
+ end
+
+ def by_week(*args)
+ with_by_star_options(*args) do |time, options|
+ date = ByStar::Normalization.week(time, options)
+ start_day = Array(options[:start_day])
+ between_dates(date.beginning_of_week(*start_day), date.end_of_week(*start_day), options)
+ end
+ end
+
+ def by_cweek(*args)
+ with_by_star_options(*args) do |time, options|
+ by_week(ByStar::Normalization.cweek(time, options), options)
+ end
+ end
+
+ def by_weekend(*args)
+ with_by_star_options(*args) do |time, options|
+ date = ByStar::Normalization.week(time, options)
+ between_dates(date.beginning_of_weekend, date.end_of_weekend, options)
+ end
+ end
+
+ def by_fortnight(*args)
+ with_by_star_options(*args) do |time, options|
+ date = ByStar::Normalization.fortnight(time, options)
+ between_dates(date.beginning_of_fortnight, date.end_of_fortnight, options)
+ end
+ end
+
+ def by_month(*args)
+ with_by_star_options(*args) do |time, options|
+ date = ByStar::Normalization.month(time, options)
+ between_dates(date.beginning_of_month, date.end_of_month, options)
+ end
+ end
+
+ def by_calendar_month(*args)
+ with_by_star_options(*args) do |time, options|
+ date = ByStar::Normalization.month(time, options)
+ start_day = Array(options[:start_day])
+ between_dates(date.beginning_of_calendar_month(*start_day), date.end_of_calendar_month(*start_day), options)
+ end
+ end
+
+ def by_quarter(*args)
+ with_by_star_options(*args) do |time, options|
+ date = ByStar::Normalization.quarter(time, options)
+ between_dates(date.beginning_of_quarter, date.end_of_quarter, options)
+ end
+ end
+
+ def by_year(*args)
+ with_by_star_options(*args) do |time, options|
+ date = ByStar::Normalization.year(time, options)
+ between_dates(date.beginning_of_year, date.to_date.end_of_year, options)
+ end
+ end
+
+ def today(options = {})
+ by_day(Date.current, options)
+ end
+
+ def yesterday(options = {})
+ by_day(Date.yesterday, options)
+ end
+
+ def tomorrow(options = {})
+ by_day(Date.tomorrow, options)
+ end
+
+ def past_day(options = {})
+ between_times(Time.current - 1.day, Time.current, options)
+ end
+
+ def past_week(options = {})
+ between_times(Time.current - 1.week, Time.current, options)
+ end
+
+ def past_fortnight(options = {})
+ between_times(Time.current - 2.weeks, Time.current, options)
+ end
+
+ def past_month(options = {})
+ between_times(Time.current - 1.month, Time.current, options)
+ end
+
+ def past_year(options = {})
+ between_times(Time.current - 1.year, Time.current, options)
+ end
+
+ def next_day(options = {})
+ between_times(Time.current, Time.current + 1.day, options)
+ end
+
+ def next_week(options = {})
+ between_times(Time.current, Time.current + 1.week, options)
+ end
+
+ def next_fortnight(options = {})
+ between_times(Time.current, Time.current + 2.weeks, options)
+ end
+
+ def next_month(options = {})
+ between_times(Time.current, Time.current + 1.month, options)
+ end
+
+ def next_year(options = {})
+ between_times(Time.current, Time.current + 1.year, options)
+ end
+ end
+end