class Timelime::Table

Public Class Methods

new() click to toggle source
# File lib/timelime/table.rb, line 5
def initialize
  @data = []
  @time = []
  @tags = [
    [], # include
    [], # exclude
  ]
end

Public Instance Methods

get() { |e| ... } click to toggle source
# File lib/timelime/table.rb, line 71
def get &block
  @data.each do |e|
    yield e
  end
end
push(event) click to toggle source
# File lib/timelime/table.rb, line 24
def push event

  # check range
  if @time.empty?
    ok = true
  else
    ok = false
  end

  @time.each do |time|
    if event.time.match? time
      ok = true
      break
    end
  end

  unless ok
    return false
  end

  # check tags
  if @tags[0].empty?
    ok = true
  else
    ok = false
  end

  @tags.each_with_index do |tmp, mode|
    tmp.each do |tags|
      if event.tags.has? tags
        case mode
        when 0; ok = true
        when 1; return false
        end
      end
    end
  end

  unless ok
    return false
  end

  @data += [event]
  return true

end
range() click to toggle source
# File lib/timelime/table.rb, line 85
def range
  min = nil
  max = nil
  @data.each do |e|
    if min.nil? or e.time.data[0] < min
      min = e.time.data[0]
    end
    if max.nil? or e.time.data[-1] > max
      max = e.time.data[-1]
    end
  end
  [min, max]
end
size() click to toggle source
# File lib/timelime/table.rb, line 77
def size
  tmp = 0
  @data.each do |e|
    tmp += e.time.size
  end
  tmp
end
tags(tags, mode) click to toggle source
# File lib/timelime/table.rb, line 19
def tags(tags, mode)
  tags = Timelime::Tags.new(tags)
  @tags[mode] += [tags]
end
time(t) click to toggle source
# File lib/timelime/table.rb, line 14
def time(t)
  t = Timelime::Time.new(t)
  @time += [t]
end