Class: TimerTrigger

Inherits:
Trigger show all
Defined in:
lib/ruby-macrodroid.rb

Overview

Category: Date/Time

Instance Attribute Summary

Attributes inherited from Trigger

#constraints

Attributes inherited from MacroObject

#options, #siguid, #type

Instance Method Summary collapse

Methods inherited from MacroObject

#to_h

Constructor Details

#initialize(h = {}) ⇒ TimerTrigger

Returns a new instance of TimerTrigger.



1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
# File 'lib/ruby-macrodroid.rb', line 1829

def initialize(h={})

  puts 'TimerTrigger h: ' + h.inspect if $debug
  
  if h[:days] then
    
    days = [false] * 7
    
    h[:days].split(/, */).each do |x|

      r = Date::DAYNAMES.grep /#{x}/i
      i = Date::DAYNAMES.index(r.first)
      days[i-1] = true

    end      
    
    h[:days_of_week] = days
    
  end
  
  if h[:time] then
    
    t = Time.parse(h[:time])
    h[:hour], h[:minute] = t.hour, t.min
    
  end
  
  #puts ('h: ' + h.inspect).debug

  @options = {
    alarm_id: uuid(),
    days_of_week: [false, false, false, false, false, false, false],
    minute: 10,
    hour: 7,
    use_alarm: false
  }
          
  #super(options.merge filter(options, h))
  super(@options.merge h)

end

Instance Method Details

#match?(detail = {time: $env[:time]}, model = nil) ⇒ Boolean

Returns:

  • (Boolean)


1871
1872
1873
1874
1875
# File 'lib/ruby-macrodroid.rb', line 1871

def match?(detail={time: $env[:time]}, model=nil)
  
 time() == detail[:time]

end

#set_envObject

sets the environmental conditions for this trigger to fire



1879
1880
1881
# File 'lib/ruby-macrodroid.rb', line 1879

def set_env()
  $env[:time] = time()
end

#to_pcObject



1883
1884
1885
# File 'lib/ruby-macrodroid.rb', line 1883

def to_pc()    
  "time.is? '%s'" % self.to_s.gsub(',', ' or')
end

#to_s(colour: false) ⇒ Object Also known as: to_summary



1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
# File 'lib/ruby-macrodroid.rb', line 1887

def to_s(colour: false)
  
  dow = @h[:days_of_week]        

  wd = Date::ABBR_DAYNAMES    
  a = (wd[1..-1] << wd.first)
  
  a2 = dow.map.with_index.to_a
  start = a2.find {|x,i| x}.last
  r = a2[start..-1].take_while {|x,i| x == true}
  r2 = a2[start..-1].select {|x,i| x}
  
  days = if r == r2 then
  
    x1, x2 = a2[start].last, a2[r.length-1].last
    
    if (x2 - x1) >= 2 then
      "%s-%s" % [a[x1],a[x2]]
    else
      a.zip(dow).select {|_,b| b}.map(&:first).join(', ')
    end
  else  
    a.zip(dow).select {|_,b| b}.map(&:first).join(', ')
  end
  
  time = Time.parse("%s:%s" % [@h[:hour], @h[:minute]]).strftime("%H:%M")    
  
  "%s %s" % [time, days]
end