Method: When::CalendarNote::Enumerator#initialize
- Defined in:
- lib/when_exe/calendarnote.rb
#initialize(parent, range, options) ⇒ Enumerator #initialize(parent, first, direction, options) ⇒ Enumerator
オブジェクトの生成
642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 |
# File 'lib/when_exe/calendarnote.rb', line 642 def initialize(*args) if args[1].kind_of?(Range) parent, range, = args first = range.first last = range.last direction = first < last ? :forward : :reverse else parent, first, direction, = args end direction = [:direction] if [:direction] @parent = parent event = .delete(:event) case event when String ; void, @event, @parameter = event.split(/\A([^\d]+)/) else ; @event, @parameter = [parent.event, event] end @delta = @parent.send((@event+'_delta').to_sym, @parameter) instance_eval %Q{ def event_eval(date) @parent.#{@event}(date, @parameter) end } date = event_eval(first) if direction == :reverse @delta = -@delta date = event_eval(first + @delta) if first.to_i < date.to_i else date = event_eval(first + @delta) if first.to_i > date.to_i end range ? super(@parent, range.exclude_end? ? date...last : date..last, ) : super(@parent, date, direction, ) end |