class AsciiTracker::Controller

Attributes

model[R]

Public Class Methods

new() click to toggle source
# File lib/asciitracker/controller.rb, line 5
def initialize 
  @model = Model.new
end

Public Instance Methods

new_day(date) click to toggle source

match(:day, :slot) { |a,b| [[:day, *a], [:slot, *b]] } match(:day, :span) { |a,b| [[:day, *a], [:span, *b]] }

# File lib/asciitracker/controller.rb, line 11
def new_day date
  @day = date
  @rec = @slot = nil
end
new_project_re(project_id, re) click to toggle source

match(/@.+/, String) { |project_id, re| [project_id, Regexp.new(re)] }

# File lib/asciitracker/controller.rb, line 57
def new_project_re project_id, re
  puts "project expression: #{project_id}, #{re}"
  @model.projects[project_id].push(re)
end
new_slot(start, stop, desc = nil) click to toggle source

match(:slot) { |a| [[:slot, *a]] }

# File lib/asciitracker/controller.rb, line 17
    def new_slot start, stop, desc = nil
      #slot = Slot.new :date=>@day, :start=> start, :end=>stop, :desc=>desc
      @rec = @slot = Slot.new(
        start: start, end: stop, desc: desc, date: @day.dup
      )

      # updates parant records when this slot is an interruption
      overlaps = @model.find_overlaps(@slot, @day)
      #puts "new slot(#{@slot}), overlaps: #{overlaps}"
      unless overlaps.empty?
        # parents are covers which are a subset of overlaps
        if parent = @model.find_best_cover(@slot, @day)
          parent.add_interrupt(@slot)
        else
          raise Exception, <<-EOM
          #{@slot}
overlaps with:
          #{overlaps.first} ...
                    EOM
        end
      end

      # add record to model after interrupt calculation to save self
      # interruption checks
      @model.add_record(@slot, @day)
    end
new_span(span, desc = nil) click to toggle source

match(:span) { |a| [[:span, *a]] }

# File lib/asciitracker/controller.rb, line 45
def new_span span, desc = nil
  @rec = Record.new :span=>span, :desc=>desc, :date => @day.dup
  @slot.add_interrupt(@rec) if @slot
  @model.add_record(@rec, @day)
end
new_txt(txt = nil) click to toggle source

match(:desc) { |txt| [[:txt, txt]] } #@m.append_txt(txt) }

# File lib/asciitracker/controller.rb, line 52
def new_txt txt = nil
  @rec.desc << " #{txt}"
end