Class: AsciiTracker::Controller
- Inherits:
-
Object
- Object
- AsciiTracker::Controller
- Defined in:
- lib/asciitracker/controller.rb
Instance Attribute Summary collapse
-
#model ⇒ Object
readonly
Returns the value of attribute model.
Instance Method Summary collapse
-
#initialize ⇒ Controller
constructor
A new instance of Controller.
-
#new_day(date) ⇒ Object
match(:day, :slot) { |a,b| [[:day, *a], [:slot, *b]] } match(:day, :span) { |a,b| [[:day, *a], [:span, *b]] }.
-
#new_project_re(project_id, re) ⇒ Object
match(/@.+/, String) { |project_id, re| [project_id, Regexp.new(re)] }.
-
#new_slot(start, stop, desc = nil) ⇒ Object
match(:slot) { |a| [[:slot, *a]] }.
-
#new_span(span, desc = nil) ⇒ Object
match(:span) { |a| [[:span, *a]] }.
-
#new_txt(txt = nil) ⇒ Object
match(:desc) { |txt| [[:txt, txt]] } #@m.append_txt(txt) }.
Constructor Details
#initialize ⇒ Controller
Returns a new instance of Controller.
5 6 7 |
# File 'lib/asciitracker/controller.rb', line 5 def initialize @model = Model.new end |
Instance Attribute Details
#model ⇒ Object (readonly)
Returns the value of attribute model.
3 4 5 |
# File 'lib/asciitracker/controller.rb', line 3 def model @model end |
Instance Method Details
#new_day(date) ⇒ Object
match(:day, :slot) { |a,b| [[:day, *a], [:slot, *b]] } match(:day, :span) { |a,b| [[:day, *a], [:span, *b]] }
11 12 13 14 |
# File 'lib/asciitracker/controller.rb', line 11 def new_day date @day = date @rec = @slot = nil end |
#new_project_re(project_id, re) ⇒ Object
match(/@.+/, String) { |project_id, re| [project_id, Regexp.new(re)] }
57 58 59 60 |
# 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) ⇒ Object
match(:slot) { |a| [[:slot, *a]] }
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# 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) ⇒ Object
match(:span) { |a| [[:span, *a]] }
45 46 47 48 49 |
# 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) ⇒ Object
match(:desc) { |txt| [[:txt, txt]] } #@m.append_txt(txt) }
52 53 54 |
# File 'lib/asciitracker/controller.rb', line 52 def new_txt txt = nil @rec.desc << " #{txt}" end |