class TWKB::Config

Attributes

stage_names[R]
stages[RW]

Public Class Methods

new() click to toggle source
# File lib/twkb/config.rb, line 8
def initialize
  read
  prepare
  build_stages
end

Public Instance Methods

[](val) click to toggle source
# File lib/twkb/config.rb, line 14
def [](val)
  @config[val]
end

Private Instance Methods

build_stages() click to toggle source
# File lib/twkb/config.rb, line 62
def build_stages
  @stage_names = self['stages'].split(',')
  @stages = {}
  @stage_names.each do |stage|
    @stages[stage] = {
      :tasks => [],
      :wip   => self["stages.#{stage}.wip"].to_i || nil,
      :label => {
        :value     => self["stages.#{stage}.label.value"] || stage,
        :alignment => (self["stages.#{stage}.label.alignment"] || self["view.stages.alignment"]).to_sym
      }
    }
  end
end
defaults() click to toggle source
# File lib/twkb/config.rb, line 20
def defaults
  {
    'twkb.view.cell_width' => '15',
    'twkb.view.stages.alignment' => 'center',
    'twkb.view.done_tasks' => '5',
    'twkb.stages' => 'backlog,next,inprogress,waiting,done',
    'twkb.stages.backlog.wip' => '10',
    'twkb.stages.backlog.label.value' => 'Backlog',
    'twkb.stages.next.wip' => '5',
    'twkb.stages.next.label.value' => 'Next',
    'twkb.stages.inprogress.wip' => '3',
    'twkb.stages.inprogress.label.value' => 'In progress',
    'twkb.stages.waiting.wip' => '6',
    'twkb.stages.waiting.label.value' => 'Waiting',
    'twkb.stages.done.label.value' => 'Done'
  }    
end
prepare() click to toggle source
# File lib/twkb/config.rb, line 51
def prepare
  @config.keys.each do |k|
    # Convert numbers to integers for convenience
    if @config[k] =~ /^\d+$/
      @config[k] = @config[k].to_i
    end
    # Remove the 'twkb' part for convenience
    @config[k.gsub(/^twkb\.(.*)/, '\1')] = @config.delete(k)
  end
end
read() click to toggle source
# File lib/twkb/config.rb, line 38
def read
  begin
    user_config = ParseConfig.new("#{Dir.home}/.taskrc")
    if user_config.params['twkb.stages'] and user_config.params['twkb.stages'].empty?
      user_config.params['twkb.stages'] = defaults['twkb.stages']
    end
    @config = defaults.merge(user_config.params)
  rescue Errno::EACCES
    puts "Failed to read the configuration. Using defaults."
    @config = defaults
  end
end