Module: Runt::TExpr
- Included in:
- AfterTE, BeforeTE, Collection, DIMonth, DIWeek, DayIntervalTE, Diff, EveryTE, REDay, REMonth, REWeek, REYear, Spec, WIMonth, YearTE
- Defined in:
- lib/runt/temporalexpression.rb
Overview
‘TExpr’ is short for ‘TemporalExpression’ and are inspired by the recurring event pattern
[http://martinfowler.com/apsupp/recurring.pdf] described by Martin Fowler. Essentially, they provide a pattern language for specifying recurring events using set expressions.
See also [tutorial_te.rdoc]
Instance Method Summary collapse
- #&(expr) ⇒ Object
- #-(expr) ⇒ Object
- #and(arg) ⇒ Object
-
#dates(date_range, limit = 0) ⇒ Object
Contributed by Emmett Shear: Returns an Array of Date-like objects which occur within the supplied DateRange.
-
#include?(date_expr) ⇒ Boolean
Returns true or false depending on whether this TExpr includes the supplied date expression.
- #minus(arg) {|Diff.new(self,arg)| ... } ⇒ Object
- #or(arg) ⇒ Object
- #to_s ⇒ Object
- #|(expr) ⇒ Object
Instance Method Details
#&(expr) ⇒ Object
56 57 58 |
# File 'lib/runt/temporalexpression.rb', line 56 def & (expr) self.and(expr){|adjusted| adjusted } end |
#-(expr) ⇒ Object
60 61 62 |
# File 'lib/runt/temporalexpression.rb', line 60 def - (expr) self.minus(expr){|adjusted| adjusted } end |
#and(arg) ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'lib/runt/temporalexpression.rb', line 38 def and (arg) if self.kind_of?(Intersect) self.add(arg) else yield Intersect.new.add(self).add(arg) end end |
#dates(date_range, limit = 0) ⇒ Object
Contributed by Emmett Shear: Returns an Array of Date-like objects which occur within the supplied DateRange. Will stop calculating dates once a number of dates equal to the optional attribute limit are found. (A limit of zero will collect all matching dates in the date range.)
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/runt/temporalexpression.rb', line 69 def dates(date_range, limit=0) result = [] date_range.each do |date| result << date if self.include? date if limit > 0 and result.size == limit break end end result end |
#include?(date_expr) ⇒ Boolean
Returns true or false depending on whether this TExpr includes the supplied date expression.
24 |
# File 'lib/runt/temporalexpression.rb', line 24 def include?(date_expr); false end |
#minus(arg) {|Diff.new(self,arg)| ... } ⇒ Object
48 49 50 |
# File 'lib/runt/temporalexpression.rb', line 48 def minus (arg) yield Diff.new(self,arg) end |
#or(arg) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/runt/temporalexpression.rb', line 28 def or (arg) if self.kind_of?(Union) self.add(arg) else yield Union.new.add(self).add(arg) end end |
#to_s ⇒ Object
26 |
# File 'lib/runt/temporalexpression.rb', line 26 def to_s; "TExpr" end |
#|(expr) ⇒ Object
52 53 54 |
# File 'lib/runt/temporalexpression.rb', line 52 def | (expr) self.or(expr){|adjusted| adjusted } end |