In Files

Parent

Class Index [+]

Quicksearch

When::Parts::Enumerator

本ライブラリ用の Enumerator の雛形

Public Class Methods

new(*args) click to toggle source

オブジェクトの生成

  引数パターン1
    range : Range(サブクラスである When::Parts::GeometricComplexでもよい)
      始点 - range.first
      終点 - range.last
    count_limit : Integer
      繰り返し回数(デフォルトは指定なし)

  引数パターン2
    first : When::TM::(Temporal)Position
      始点
    direction : :forward or :reverse
      :forward - 昇順
      :reverse - 降順
    count_limit : Integer
      繰り返し回数(デフォルトは指定なし)
      # File when/parts.rb, line 1155
1155:     def initialize(*args)
1156:       @options = self.class._options(args)
1157:       @exdate  = @options.delete(:exdate)
1158:       @exevent = @options.delete(:exevent)
1159:       _range(args)
1160:       _rewind
1161:     end

Public Instance Methods

_rewind() click to toggle source

巻き戻す

  returns : rewind された self
      # File when/parts.rb, line 1064
1064:     def _rewind
1065:       @processed = @exdate.dup
1066:       @count     = 0
1067:       @current   = :first
1068:       succ
1069:       self
1070:     end
Also aliased as: rewind
each() click to toggle source

ブロックを評価する

  returns : rewind された self
      # File when/parts.rb, line 998
 998:     def each
 999:       return self unless block_given?
1000:       while (has_next?) do
1001:         if @index
1002:           yield(succ, @index)
1003:           @index += 1
1004:         elsif @object
1005:           yield(succ, @object)
1006:         else
1007:           yield(succ)
1008:         end
1009:       end
1010:       @index = @object = nil
1011:       rewind
1012:     end
has_next?() click to toggle source

次の要素があるか?

  returns : Boolean
    true  - ある
    false - ない
      # File when/parts.rb, line 1080
1080:     def has_next?
1081:       return (@current != nil)
1082:     end
next() click to toggle source

次の要素を取り出す

  returns : Object
    次の要素

  次の要素がない場合 rewind して、StopIteration例外を発生
      # File when/parts.rb, line 1092
1092:     def next
1093:       return succ if has_next?
1094:       rewind
1095:       raise StopIteration, "Iteration Stopped"
1096:     end
rewind() click to toggle source
Alias for: _rewind
succ() click to toggle source

次の要素を取り出す

  returns : Object
    次の要素あり - 次の要素
    次の要素なし - nil

  次の要素がない場合 rewind や、StopIteration例外発生は行わない
      # File when/parts.rb, line 1107
1107:     def succ
1108:       value = @current
1109:       if (@count_limit.kind_of?(Numeric) && @count >= @count_limit)
1110:         @current = nil
1111:       else
1112:         loop do
1113:           @current = _succ
1114:           break unless (@current)
1115:           next if (@current == :next)
1116:           @current = GeometricComplex.new(@current, @duration) if @duration
1117:           next if _exclude(@current)
1118:           case @direction
1119:           when :reverse
1120:             next if (@current > @first)
1121:             @current = nil if (@last && @current < @last)
1122:             break
1123:           else
1124:             next if (@current < @first)
1125:             @current = nil if (@last && @current > @last)
1126:             break
1127:           end
1128:         end
1129:         @count += 1
1130:         _exclude(@current) if (@current)
1131:       end
1132:       return value
1133:     end
with_index(offset=0, &block) click to toggle source

index をブロックに渡して評価する

  offset  : Integer
    index の初期値(デフォルト : 0)

  returns : When::Parts:Enumerator
    ブロックあり - rewind された self
    ブロックなし - copy
      # File when/parts.rb, line 1024
1024:     def with_index(offset=0, &block)
1025:       if block_given?
1026:         @index = offset||@count
1027:         return each(block)
1028:       else
1029:         copy = _copy
1030:         copy.object = nil
1031:         copy.index  = offset||@count
1032:         return copy
1033:       end
1034:     end
with_object(object, &block) click to toggle source

index をブロックに渡して評価する

  object  : Object
    ブロックに渡す Object

  returns : When::Parts:Enumerator
    ブロックあり - rewind された self
    ブロックなし - copy
      # File when/parts.rb, line 1046
1046:     def with_object(object, &block)
1047:       if block_given?
1048:         @object = object
1049:         each(block)
1050:         return object
1051:       else
1052:         copy = _copy
1053:         copy.object = object
1054:         copy.index  = nil
1055:         return copy
1056:       end
1057:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.