Module: TaskwarriorWeb::Config

Defined in:
lib/taskwarrior-web/model/config.rb

Constant Summary collapse

RUBY_DATEFORMATS =

A list of date formats, with Taskwarrior’s on the left and the Ruby equivalent on the right.

{
  'm' => '%-m',  # minimal-digit month, for example 1 or 12
  'd' => '%-d',  # minimal-digit day, for example 1 or 30
  'y' => '%y',   # two-digit year, for example 09
  'D' => '%d',   # two-digit day, for example 01 or 30
  'M' => '%m',   # two-digit month, for example 01 or 12
  'Y' => '%Y',   # four-digit year, for example 2009
  'a' => '%a',   # short name of weekday, for example Mon or Wed
  'A' => '%A',   # long name of weekday, for example Monday or Wednesday
  'b' => '%b',   # short name of month, for example Jan or Aug
  'B' => '%B',   # long name of month, for example January or August
  'V' => '%U',   # weeknumber, for example 03 or 37
  'H' => '%H',   # two-digit hour, for example 03 or 11
  'N' => '%M',   # two-digit minutes, for example 05 or 42
  'S' => '%S',   # two-digit seconds, for example 07 or 47
}
JS_DATEFORMATS =

A list of date formats, with Taskwarrior’s on the left and the JS equivalent on the right.

{
  'm' => 'm',     # minimal-digit month, for example 1 or 12
  'd' => 'd',     # minimal-digit day, for example 1 or 30
  'y' => 'yy',    # two-digit year, for example 09
  'D' => 'dd',    # two-digit day, for example 01 or 30
  'M' => 'mm',    # two-digit month, for example 01 or 12
  'Y' => 'yyyy',  # four-digit year, for example 2009
  'a' => '',      # short name of weekday, for example Mon or Wed
  'A' => '',      # long name of weekday, for example Monday or Wednesday
  'b' => '',      # short name of month, for example Jan or Aug
  'B' => '',      # long name of month, for example January or August
  'V' => '',      # weeknumber, for example 03 or 37
  'H' => '',      # two-digit hour, for example 03 or 11
  'N' => '',      # two-digit minutes, for example 05 or 42
  'S' => '',      # two-digit seconds, for example 07 or 47
}

Class Method Summary collapse

Class Method Details

.dateformat(format = :ruby) ⇒ Object



55
56
57
58
59
60
61
62
63
64
# File 'lib/taskwarrior-web/model/config.rb', line 55

def self.dateformat(format = :ruby)
  return nil unless self.store['dateformat'] && format.in?([:ruby, :js])

  formats = case format
  when :ruby then RUBY_DATEFORMATS
  when :js then JS_DATEFORMATS
  end

  self.store['dateformat'].gsub(/(\w)/, formats)
end

.method_missing(method) ⇒ Object



74
75
76
# File 'lib/taskwarrior-web/model/config.rb', line 74

def self.method_missing(method)
  self.store[method.to_s]
end

.property(prop) ⇒ Object



51
52
53
# File 'lib/taskwarrior-web/model/config.rb', line 51

def self.property(prop)
  self.store[prop]
end

.storeObject



47
48
49
# File 'lib/taskwarrior-web/model/config.rb', line 47

def self.store
  @store ||= self.parse_config
end

.supports?(feature) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
69
70
71
72
# File 'lib/taskwarrior-web/model/config.rb', line 66

def self.supports?(feature)
  case feature.to_sym
    when :editing then self.version.major > 1
    when :_show then self.version >= '2.2.0'
    else false
  end
end

.versionObject



43
44
45
# File 'lib/taskwarrior-web/model/config.rb', line 43

def self.version
  @version ||= Versionomy.parse(`#{TaskwarriorWeb::Runner::TASK_BIN} _version`.strip)
end