class TriggersNlp

file: triggersnlp.rb

Public Class Methods

new(macro=nil) click to toggle source
Calls superclass method
# File lib/ruby-macrodroid/triggersnlp.rb, line 10
def initialize(macro=nil)

  super()
  params = {macro: macro}
  triggers(params)

end

Public Instance Methods

to_s(colour: false) click to toggle source
# File lib/ruby-macrodroid/triggersnlp.rb, line 220
def to_s(colour: false)
  'TriggersNlp ' + @h.inspect
end
Also aliased as: to_summary
to_summary(colour: false)
Alias for: to_s
triggers(params) click to toggle source
# File lib/ruby-macrodroid/triggersnlp.rb, line 18
def triggers(params)
  
  # -- Battery/Power ---------------------------------------------
  
  get /^Power Button Toggle \((\d)\)/i do |num|
    [PowerButtonToggleTrigger, {num_toggles: num.to_i}]
  end    
  
  get /^Power Button (\d) times$/i do |num|
    [PowerButtonToggleTrigger, {num_toggles: num.to_i}]
  end
  
  get /^Power Connected: (Wired \([^\)]+\))/i do |s|
    
    h = {
      power_connected_options: [true, true, true],
      has_set_usb_option: true,
      power_connected: true
    }
      
    a = ['Wired (Fast Charge)', 'Wireless', 'Wired (Slow Charge)']

    puts ('s: ' + s.inspect).debug
    
    options = s.downcase.split(/ \+ /)
    puts ('options: ' + options.inspect).debug
    
    h[:power_connected_options] = a.map {|x| options.include? x.downcase }
    
    [ExternalPowerTrigger, h]
  end
  
  get /^Power Connected: Any/i do |s|
    
    h = {
      power_connected_options: [true, true, true],
      has_set_usb_option: true,
      power_connected: true
    }
    
    [ExternalPowerTrigger, h]
  end   
  
  # -- Connectivity ----------------------------------------------------
  #
  
  # Wifi State Change
  
  get /^Connected to network (.*)$/i do |network|            
    [WifiConnectionTrigger, {ssid_list: [network], wifi_state: 2 }]
  end         
  
  get /^Connected to network$/i do            
    [WifiConnectionTrigger, {}]
  end       
  

  
  # -- Device Events ----------------------------------------------------
  
  get /^NFC Tag$/i do |state|            
    [NFCTrigger, {}]
  end         

  get /^Screen[ _](On|Off)/i do |state|            
    [ScreenOnOffTrigger, {screen_on: state.downcase == 'on'}]
  end      
  
  # e.g. at 7:30pm daily
  get /^(?:at )?(\d+:\d+(?:[ap]m)?) daily/i do |time, days|
    [TimerTrigger, {time: time, 
                    days: %w(Mon Tue Wed Thu Fri Sat Sun).join(', ')}]
  end       

  get /^(?:at )?(\d+:\d+(?:[ap]m)?) (?:on )?(.*)/i do |time, days|
    [TimerTrigger, {time: time, days: days}]
  end

  # time.is? 'at 18:30pm on Mon or Tue'
  get /^time.is\? ['"](?:at )?(\d+:\d+(?:[ap]m)?) (?:on )?(.*)['"]/i do |time, days|      
    [TimerTrigger, {time: time, days: days.gsub(' or ',', ')}]
  end     
  
  get /^shake[ _]device\??$/i do 
    [ShakeDeviceTrigger, {}]
  end
  
  get /^Flip Device (.*)$/i do |motion|
     facedown = motion =~ /Face Up (?:->|to) Face Down/i
    [FlipDeviceTrigger, {face_down: facedown }]
  end
  
  get /^flip_device_down\?$/i do
    [FlipDeviceTrigger, {face_down: true }]
  end

  get /^flip_device_up\?$/i do
    [FlipDeviceTrigger, {face_down: false }]
  end        
  
  get /^Failed Login Attempt$/i do
    [FailedLoginTrigger, {}]
  end
  
  get /^failed_login?$/i do
    [FailedLoginTrigger, {}]
  end         

  get /^Geofence (Entry|Exit) \(([^\)]+)/i do |direction, name|
    enter_area = direction.downcase.to_sym == :entry
    [GeofenceTrigger, {name: name, enter_area: enter_area}]
  end     
  
  get /^location (entered|exited) \(([^\)]+)/i do |direction, name|
    enter_area = direction.downcase.to_sym == :entered
    [GeofenceTrigger, {name: name, enter_area: enter_area}]
  end
  
  # eg. Proximity Sensor (Near)
  #
  get /^Proximity Sensor \(([^\)]+)\)/i do |distance|
    
    [ProximityTrigger, {distance: distance}]
  end    
  
  # eg. Proximity near
  #
  get /^Proximity (near|far|slow wave|fast wave)/i do |distance|
    
    [ProximityTrigger, {distance: distance}]
  end       
  
  get /^WebHook \(Url\)/i do       
    [WebHookTrigger, params]
  end      

  get /^WebHook/i do       
    [WebHookTrigger, params]
  end
  
  get /^wh/i do       
    [WebHookTrigger, params]
  end          

  #-- MacroDroid specific ---------------------------------------------------------------

  get /^EmptyTrigger$/i do       
    [EmptyTrigger, params]
  end
  
  #-- Sensors ---------------------------------------------------------------

  get /^Activity - (.*)$/i do |s|
    
    a = ['In Vehicle', 'On Bicycle', 'Running', 'Walking', 'Still']
    r = a.find {|x| x.downcase == s.downcase}
    h = r ? {selected_index: a.index(r)} : {}
    [ActivityRecognitionTrigger , h]
  end    
  
  # -- User Input ---------------------------------------------------------------

  get /^Media Button Pressed$/i do       
    [MediaButtonPressedTrigger, {}]
  end              
  
  get /^Media Button V2$/i do       
    [MediaButtonV2Trigger, {}]
  end
  
  get /^Shortcut Launched$/i do       
    [ShortcutTrigger, {}]
  end                  
  
  get /^Swipe Screen$/i do       
    [SwipeTrigger, {}]
  end
  
  get /^Swipe (top left) (across|diagonal|down)$/i do |start, motion|
                
    swipe_motion = case motion.downcase.to_sym
    when :across
      0
    when :diagonal
      1
    when :down
      2
    end
    
    h = {
      swipe_start_area: (start.downcase == 'top left' ? 0 : 1),
      swipe_motion: swipe_motion
    }
    
    [SwipeTrigger, h]
    
  end
  
end