class CW::Stream
Attributes
active_region[RW]
stream[RW]
Public Class Methods
new()
click to toggle source
# File lib/cw/stream.rb, line 11 def initialize @active_region = 6 empty end
Public Instance Methods
add_char(char)
click to toggle source
# File lib/cw/stream.rb, line 26 def add_char char @stream[@last_element] = char @success[@last_element] = nil inc_last_element end
empty()
click to toggle source
# File lib/cw/stream.rb, line 16 def empty @stream, @success, @first_element, @last_element = {},{}, 0, 0 end
fail_unmarked_inactive_elements()
click to toggle source
# File lib/cw/stream.rb, line 52 def fail_unmarked_inactive_elements if(( ! stream_empty?) && (count > @active_region)) @first_element.upto(inactive_region) do |count| @success[count] = false unless @success[count] == true end end end
first()
click to toggle source
# File lib/cw/stream.rb, line 60 def first @stream[@first_element] end
inactive_region()
click to toggle source
# File lib/cw/stream.rb, line 48 def inactive_region stream_empty? ? nil : @last_element - @active_region - 1 end
mark(element, type)
click to toggle source
# File lib/cw/stream.rb, line 32 def mark(element, type) @success[element] = type end
mark_fail(element)
click to toggle source
# File lib/cw/stream.rb, line 40 def mark_fail element mark element, false end
mark_success(element)
click to toggle source
# File lib/cw/stream.rb, line 36 def mark_success element mark element, true end
pop()
click to toggle source
# File lib/cw/stream.rb, line 64 def pop unless stream_empty? ele = @first_element inc_first_element success = @success.delete(ele) success = success == nil ? false : success { :value => @stream.delete(ele), :success => success } else nil end end
pop_next_marked()
click to toggle source
def pop_marked
return_val = {} fail_unmarked_inactive_elements @first_element.upto(@last_element) do |ele| unless stream_empty? if(ele < inactive_region) val = pop return_val[ele] = {pop => @success[ele]} elsif(@success[ele] == true || @success[ele] == false) return_val[ele] = {pop => @success[ele]} else break end end end return_val == {} ? nil : return_val
end
# File lib/cw/stream.rb, line 97 def pop_next_marked fail_unmarked_inactive_elements unless stream_empty? if(@first_element < inactive_region) pop elsif(@success[@first_element] == true || @success[@first_element] == false) pop end end end
push(word)
click to toggle source
# File lib/cw/stream.rb, line 20 def push word @stream[@last_element] = word.strip @success[@last_element] = nil inc_last_element end
stream_empty?()
click to toggle source
# File lib/cw/stream.rb, line 44 def stream_empty? @first_element == @last_element end