ruby-macrodroid 0.8.0 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3e810bea9dc68b5b0bb2623b46a08544ed42db8112f0b2be703bbac6dce6178
4
- data.tar.gz: d41bbc4bae9e9c5e7f65684db06c54bb0d058aee56b69f8c58a7dff99724725d
3
+ metadata.gz: a58f2837ede78c4bdb29b2673c38cf07b850dd8431aa47bf59b9ba08512d1970
4
+ data.tar.gz: 5300eb53b78a33b8d52682ac21fc901a8fab86f273c581a4fdf5e4fbb033c404
5
5
  SHA512:
6
- metadata.gz: 5de76ced91b66dae5ce7fba414c4ea09dff2ffbf9c3cd04009c6a270570825605035413fc5b6d3cc115f79816b98d1484bfcb85688f5853e44af5d69fc872539
7
- data.tar.gz: 9fe273f88915114ec327913317000548e2fe12a3cac2548a237e13dc7fb8115eb135d329bf1375278414e4b21522faf2de066a5b924ed6152fe63b6a7c7a1103
6
+ metadata.gz: af593ce8663d6a1842fc3f49dedee195119c82dab6f2f2bba8f9f96cce1ef6e8065efa281777598502261e168ee452cccb09583460b15f7e425ea39a65e8f6b8
7
+ data.tar.gz: d0f84f3016d838e0fc326695dec1631fbfa27f07951045a3518cc7ad36b3f899e03a060459f72864568ea50e74c68009d9baf6411e31de36b8cea56f3be7bc93
@@ -1,2 +1,2 @@
1
- t_�
2
- K��/�%f8���Ɛ03R�y�}=n�K��+`�#J�Rs'��<���#S�]k� �W$Rگ�WI�q{*�=w�#>�$�0��eل�tYe`����6��O�։/.�X��-0(Y��Yç�\\��6�&�0�����@�B������6�$k�)����}���@h���2���INV#3��ۋٶ��,f\K�4#Q`��7X���g|s;�D���2$����ɭ[K;��1f�X��DB߇jPP��J�GA���#K�3�Ӻօ&��JSzL�IZ��� kK&��sh+��(��9��Hdi"��(�"��M�6g�r��MC�1r_[&J�K�����FN�|�L�hطG>_��߉9�cJ�� �
1
+ ����M�#�6��G�B|�K�Ovn^?ZM+����E�'�[�.T�A�A0@:tZߣ�(���<�=�<t-y��)L M�/Ф��ųļzJ���_F��c��U���� O��-�O�x���jdK=��\�d�̽W�)7�%h�e�B������+,TD��(,�|�poY�O��*F�:kH\�>�re2�}��B*��m��asRbH!�烆ZYlT�J��؈#u�H��"
2
+ d1��x�ƪ�e�^���?���5)�
data.tar.gz.sig CHANGED
Binary file
@@ -40,10 +40,7 @@ require 'geocoder'
40
40
  require 'subunit'
41
41
  require 'rxfhelper'
42
42
  require 'chronic_cron'
43
- require 'ruby-macrodroid/base'
44
- require 'ruby-macrodroid/triggers'
45
- require 'ruby-macrodroid/actions'
46
- require 'ruby-macrodroid/constraints'
43
+
47
44
 
48
45
  MODEL =<<EOF
49
46
  device
@@ -157,6 +154,16 @@ class ActionsNlp
157
154
  [ToastAction, {msg: msg}]
158
155
  end
159
156
 
157
+ # e.g. Popup Message\n hello world!
158
+ get /^Popup Message\n\s+(.*)/im do |msg|
159
+ [ToastAction, {msg: msg}]
160
+ end
161
+
162
+ # e.g. Popup Message
163
+ get /^Popup Message$/i do
164
+ [ToastAction, {}]
165
+ end
166
+
160
167
  # e.g. say current time
161
168
  get /^say current[ _]time/i do
162
169
  [SayTimeAction, {}]
@@ -246,16 +253,17 @@ class ActionsNlp
246
253
  [KeepAwakeAction, {enabled: false, screen_option: 0}]
247
254
  end
248
255
 
256
+ #a: Disable Keep Awake
257
+ #
258
+ get /if (.*)/i do
259
+ [IfConditionAction, {}]
260
+ end
249
261
 
250
262
  end
251
263
 
252
264
  alias find_action run_route
253
265
 
254
- def to_s(colour: false)
255
- 'ActionsNlp ' + @h.inspect
256
- end
257
266
 
258
- alias to_summary to_s
259
267
  end
260
268
 
261
269
  class ConstraintsNlp
@@ -282,6 +290,60 @@ class ConstraintsNlp
282
290
  end
283
291
 
284
292
 
293
+ module Params
294
+
295
+ refine Hash do
296
+
297
+ # turns keys from camelCase into snake_case
298
+
299
+ def to_snake_case(h=self)
300
+
301
+ h.inject({}) do |r, x|
302
+
303
+ key, value = x
304
+ #puts 'value: ' + value.inspect
305
+
306
+ val = if value.is_a?(Hash) then
307
+ to_snake_case(value)
308
+ elsif value.is_a?(Array) and value.first.is_a? Hash
309
+ value.map {|row| to_snake_case(row)}
310
+ else
311
+ value
312
+ end
313
+
314
+ r.merge key.to_s.sub(/^m_/,'').gsub(/[A-Z][a-z]/){|x| '_' +
315
+ x.downcase}.gsub(/[a-z][A-Z]/){|x| x[0] + '_' + x[1].downcase}\
316
+ .downcase.to_sym => val
317
+
318
+ end
319
+ end
320
+
321
+ # turns keys from snake_case to CamelCase
322
+ def to_camel_case(h=self)
323
+
324
+ h.inject({}) do |r,x|
325
+
326
+ key, value = x
327
+
328
+ val = if value.is_a?(Hash) then
329
+ to_camel_case(value)
330
+ elsif value.is_a?(Array) and value.first.is_a? Hash
331
+ value.map {|row| to_camel_case(row)}
332
+ else
333
+ value
334
+ end
335
+
336
+ r.merge({key.to_s.gsub(/(?<!^m)_[a-z]/){|x| x[-1].upcase} => val})
337
+ end
338
+
339
+ end
340
+
341
+
342
+ end
343
+
344
+ end
345
+
346
+
285
347
 
286
348
  class Macro
287
349
  using ColouredText
@@ -356,7 +418,25 @@ class Macro
356
418
  @description = h[:description]
357
419
 
358
420
  # fetch the local variables
359
- @local_variables = h['local_variables']
421
+ if h[:local_variables].any? and h[:local_variables].first.any? then
422
+
423
+ @local_variables = h[:local_variables].map do |var|
424
+
425
+ val = case var[:type]
426
+ when 0 # boolean
427
+ var[:boolean_value]
428
+ when 1 # integer
429
+ var[:int_value]
430
+ when 2 # string
431
+ var[:string_value]
432
+ when 3 # decimal
433
+ var[:decimal_Value]
434
+ end
435
+
436
+ [var[:name], val]
437
+
438
+ end.to_h
439
+ end
360
440
 
361
441
  # fetch the triggers
362
442
  @triggers = h[:trigger_list].map do |trigger|
@@ -463,20 +543,42 @@ class Macro
463
543
  @actions = node.xpath('action').map do |e|
464
544
 
465
545
  puts 'action e: ' + e.xml.inspect if @debug
466
- r = ap.find_action e.text
546
+ puts 'e.text ' + e.text if @debug
547
+
548
+ inner_lines = e.xpath('item/description/text()')
549
+
550
+ action = if e.text.to_s.strip.empty? then
551
+ inner_lines.shift
552
+ else
553
+ e.text.strip
554
+ end
555
+
556
+ r = ap.find_action action
467
557
  puts 'found action ' + r.inspect if @debug
468
558
 
469
559
  if r then
470
560
 
471
- a = e.xpath('item/*')
561
+ loose = inner_lines.shift
472
562
 
473
- h = if a.any? then
474
- a.map {|node| [node.name.to_sym, node.text.to_s]}.to_h
563
+ raw_attributes = if loose then
564
+
565
+ puts 'do something ' + loose.to_s if @debug
566
+ loose.to_s
567
+
475
568
  else
476
- {}
569
+
570
+ a = e.xpath('item/*')
571
+
572
+ h = if a.any? then
573
+ a.map {|node| [node.name.to_sym, node.text.to_s]}.to_h
574
+ else
575
+ {}
576
+ end
577
+
578
+ r[1].merge(h)
579
+
477
580
  end
478
-
479
- r[0].new(r[1].merge(h))
581
+ r[0].new(raw_attributes)
480
582
  end
481
583
 
482
584
  end
@@ -584,7 +686,7 @@ EOF
584
686
 
585
687
  end
586
688
 
587
- if s =~ /^If/i then
689
+ if s =~ /^(?:If|WHILE \/ DO)/i then
588
690
 
589
691
  if indent < 1 then
590
692
 
@@ -607,22 +709,39 @@ EOF
607
709
  end.join("\n")
608
710
 
609
711
  a = [
610
- (colour ? "m".bg_cyan.gray.bold : 'm') + ': ' + @title,
611
- @triggers.map {|x| (colour ? "t".bg_red.gray.bold : 't') \
612
- + ": %s" % x}.join("\n"),
613
- actions
712
+ (colour ? "m".bg_cyan.gray.bold : 'm') + ': ' + @title
614
713
  ]
615
714
 
715
+ if @description and @description.length >= 1 then
716
+ a << (colour ? "d".bg_gray.gray.bold : 'd') + ': ' \
717
+ + @description.gsub(/\n/,"\n ")
718
+ end
719
+
720
+ if @local_variables.length >= 1 then
721
+
722
+ vars = @local_variables.map do |k,v|
723
+ label = colour ? 'v'.bg_magenta : 'v'
724
+ label += ': '
725
+ label + "%s: %s" % [k,v]
726
+ end
727
+
728
+ a << vars.join("\n")
729
+ end
730
+
731
+ a << @triggers.map {|x| (colour ? "t".bg_red.gray.bold : 't') \
732
+ + ": %s" % x}.join("\n")
733
+ a << actions
734
+
735
+
616
736
  if @constraints.any? then
617
737
  a << @constraints.map do |x|
618
738
  (colour ? "c".bg_green.gray.bold : 'c') + ": %s" % x
619
739
  end.join("\n")
620
740
  end
621
741
 
622
- if @description and @description.length >= 1 then
623
- a.insert(1, (colour ? "d".bg_gray.gray.bold : 'd') + ': ' \
624
- + @description.gsub(/\n/,"\n "))
625
- end
742
+
743
+
744
+
626
745
 
627
746
  a.join("\n") + "\n"
628
747
 
@@ -1160,3 +1279,8 @@ class DroidSim
1160
1279
 
1161
1280
 
1162
1281
  end
1282
+
1283
+ require 'ruby-macrodroid/base'
1284
+ require 'ruby-macrodroid/triggers'
1285
+ require 'ruby-macrodroid/actions'
1286
+ require 'ruby-macrodroid/constraints'
@@ -272,7 +272,10 @@ class TakePictureAction < CameraAction
272
272
 
273
273
  end
274
274
 
275
- class IfConditionAction < Action
275
+
276
+ # Conditions/Loops
277
+ #
278
+ class IfConfirmedThenAction < Action
276
279
 
277
280
  def initialize(h={})
278
281
 
@@ -286,6 +289,92 @@ class IfConditionAction < Action
286
289
 
287
290
  super(h2)
288
291
 
292
+ @label = 'If Confirmed Then '
293
+
294
+ end
295
+
296
+ def to_s(colour: false)
297
+
298
+ @s = "If Confirmed Then " #+ @constraints.map(&:to_s).join(" %s " % operator)
299
+ super(colour: colour)
300
+
301
+ end
302
+ end
303
+
304
+ # Conditions/Loops
305
+ #
306
+ class LoopAction < Action
307
+
308
+ def initialize(h={})
309
+
310
+ options = {
311
+
312
+ }
313
+
314
+ h2 = options.merge(h)
315
+
316
+ super(h2)
317
+
318
+ @label = 'WHILE / DO '
319
+
320
+ end
321
+
322
+ def to_s(colour: false)
323
+
324
+ @s = 'WHILE / DO '
325
+ super()
326
+
327
+ end
328
+ end
329
+
330
+ # Conditions/Loops
331
+ #
332
+ class EndLoopAction < Action
333
+
334
+ def initialize(h={})
335
+
336
+ options = {
337
+
338
+ }
339
+
340
+ h2 = options.merge(h)
341
+
342
+ super(h2)
343
+
344
+ @label = 'End Loop '
345
+
346
+ end
347
+
348
+ def to_s(colour: false)
349
+
350
+ 'End Loop '
351
+
352
+ end
353
+ end
354
+
355
+ # Conditions/Loops
356
+ #
357
+ class IfConditionAction < Action
358
+
359
+ def initialize(obj=nil)
360
+
361
+ h = if obj.is_a? Hash then
362
+ obj
363
+ else
364
+ # get the constraints
365
+
366
+ end
367
+
368
+ options = {
369
+ a: true,
370
+ constraint_list: ''
371
+ }
372
+
373
+ macro = h[:macro]
374
+ h2 = options.merge(filter(options,h).merge(macro: macro))
375
+
376
+ super(h2)
377
+
289
378
  @label = 'If '
290
379
 
291
380
  end
@@ -317,7 +406,7 @@ class ElseAction < Action
317
406
 
318
407
  end
319
408
 
320
- class ElseIfConditionAction < IfConditionAction
409
+ class ElseIfConditionAction < Action
321
410
 
322
411
  def initialize(h={})
323
412
 
@@ -326,9 +415,14 @@ class ElseIfConditionAction < IfConditionAction
326
415
  }
327
416
 
328
417
  super(options.merge h)
329
- @label = 'ElseIf '
418
+ @label = 'Else If '
330
419
 
331
420
  end
421
+
422
+ def to_s(colour: false)
423
+ @s = 'Else If '
424
+ super()
425
+ end
332
426
 
333
427
 
334
428
  end
@@ -643,7 +737,7 @@ class ClipboardAction < DeviceAction
643
737
  end
644
738
 
645
739
  def to_s(colour: false)
646
- 'ClipboardAction ' + @h.inspect
740
+ 'Fill Clipboard' + "\n " + @h[:clipboard_text] #+ @h.inspect
647
741
  end
648
742
 
649
743
  alias to_summary to_s
@@ -793,6 +887,11 @@ end
793
887
  #
794
888
  class CameraFlashLightAction < DeviceSettingsAction
795
889
 
890
+ # options
891
+ # 0 Toch On
892
+ # 1 Torch Off
893
+ # 2 Torch Toggle
894
+ #
796
895
  def initialize(h={})
797
896
 
798
897
  options = {
@@ -1001,6 +1100,40 @@ class FileAction < Action
1001
1100
 
1002
1101
  end
1003
1102
 
1103
+
1104
+
1105
+ # Category: Files
1106
+ #
1107
+ class FileOperationV21Action < FileAction
1108
+
1109
+ def initialize(h={})
1110
+
1111
+ options = {
1112
+ :app_name=>"", :class_name=>"", :package_name=>"", :file_path=>"",
1113
+ :file_extensions=>["jpg", "jpeg", "png", "raw", "bmp", "tif", "tiff",
1114
+ "gif"], :file_option=>2, :from_name=>"Sent",
1115
+ :from_uri_string=>"", :option=>2
1116
+ }
1117
+
1118
+ super(options.merge h)
1119
+
1120
+ end
1121
+
1122
+ def to_s(colour: false)
1123
+
1124
+ operation = ['Copy', 'Move', 'Delete', 'Create Folder']
1125
+ file = ['All Files', 'All Media Files', 'Images', 'Audio', 'Videos', 'Specify File Pattern', 'Folder']
1126
+
1127
+ detail = @h[:from_name]
1128
+ detail += ' to: ' + @h[:to_name] if @h[:option] == 1
1129
+ @s = "%s %s" % [operation[@h[:option]], file[@h[:file_option]]] \
1130
+ + "\n " + detail #+ @h.inspect
1131
+ super()
1132
+ end
1133
+
1134
+ alias to_summary to_s
1135
+ end
1136
+
1004
1137
  # Category: Files
1005
1138
  #
1006
1139
  class OpenFileAction < FileAction
@@ -1026,6 +1159,30 @@ class OpenFileAction < FileAction
1026
1159
  end
1027
1160
 
1028
1161
 
1162
+ # Category: Files
1163
+ #
1164
+ class WriteToFileAction < FileAction
1165
+
1166
+ def initialize(h={})
1167
+
1168
+ options = {
1169
+ app_name: '',
1170
+ class_name: '',
1171
+ package_name: '',
1172
+ file_path: ''
1173
+ }
1174
+
1175
+ super(options.merge h)
1176
+
1177
+ end
1178
+
1179
+ def to_s(colour: false)
1180
+ 'Write To File' + "\n " + @h[:filename] #+ @h.inspect
1181
+ end
1182
+
1183
+ alias to_summary to_s
1184
+ end
1185
+
1029
1186
  class LocationAction < Action
1030
1187
 
1031
1188
  def initialize(h={})
@@ -1188,6 +1345,32 @@ class ClearLogAction < LoggingAction
1188
1345
  alias to_summary to_s
1189
1346
  end
1190
1347
 
1348
+ # MacroDroid Specific
1349
+ #
1350
+ class ConfirmNextAction < Action
1351
+
1352
+ def initialize(h={})
1353
+
1354
+ options = {
1355
+ :message=>"Do you want to fill the clipboard? ", :title=>"Fill clipboard? ", :negative_text=>"NO", :positive_text=>"YES", :class_type=>"ConfirmNextAction"
1356
+
1357
+ }
1358
+
1359
+ super(h)
1360
+
1361
+ end
1362
+
1363
+ def to_s(colour: false)
1364
+
1365
+ @s = 'Confirm Next' + "\n %s: %s" % [@h[:title], @h[:message]]
1366
+ super()
1367
+
1368
+ end
1369
+
1370
+ alias to_summary to_s
1371
+
1372
+ end
1373
+
1191
1374
  # MacroDroid Specific
1192
1375
  #
1193
1376
  class ExportMacrosAction < Action
@@ -1211,6 +1394,101 @@ class ExportMacrosAction < Action
1211
1394
 
1212
1395
  end
1213
1396
 
1397
+
1398
+ # MacroDroid Specific
1399
+ #
1400
+ class SetVariableAction < Action
1401
+
1402
+ def initialize(h={})
1403
+
1404
+ options = {
1405
+ :user_prompt=>true,
1406
+ :user_prompt_message=>"Please enter a word to see it reversed",
1407
+ :user_prompt_show_cancel=>true,
1408
+ :user_prompt_stop_after_cancel=>true,
1409
+ :user_prompt_title=>"Word reverse",
1410
+ :name => 'word'
1411
+ }
1412
+ super(h)
1413
+
1414
+ end
1415
+
1416
+ def to_s(colour: false)
1417
+
1418
+ input = if @h[:user_prompt] then
1419
+ '[User Prompt]'
1420
+ elsif @h[:expression]
1421
+ @h[:expression]
1422
+ elsif @h[:int_value_increment]
1423
+ '(+1)'
1424
+ elsif @h[:int_value_decrement]
1425
+ '(-1)'
1426
+ elsif @h[:int_random]
1427
+ "Random %d -> %d" % [@h[:int_random_min], @h[:int_random_max]]
1428
+ else
1429
+
1430
+ =begin
1431
+ sym = case @h[:variable][:type]
1432
+ when 0 # boolean
1433
+ :new_boolean_value
1434
+ when 1 # integer
1435
+ :new_int_value
1436
+ when 2 # string
1437
+ :new_string_value
1438
+ when 3 # decimal
1439
+ :new_double_value
1440
+ end
1441
+
1442
+ @h[sym].to_s
1443
+ =end
1444
+ a = %i(new_boolean_value new_int_value new_string_value new_double_value)
1445
+ @h[a[@h[:variable][:type]]].to_s
1446
+
1447
+ end
1448
+
1449
+ @s = 'Set Variable' + ("\n %s: " % @h[:variable][:name]) + input #+ @h.inspect
1450
+ super()
1451
+
1452
+ end
1453
+
1454
+ alias to_summary to_s
1455
+
1456
+ end
1457
+
1458
+
1459
+
1460
+ # MacroDroid Specific
1461
+ #
1462
+ class TextManipulationAction < Action
1463
+
1464
+ def initialize(h={})
1465
+
1466
+ options = {
1467
+
1468
+ }
1469
+ super(h)
1470
+
1471
+ end
1472
+
1473
+ def to_s(colour: false)
1474
+
1475
+ tm = @h[:text_manipulation]
1476
+
1477
+ s = case tm[:type].to_sym
1478
+ when :SubstringManipulation
1479
+ "Substring(%s, %s)" % [@h[:text], tm[:params].join(', ')]
1480
+ end
1481
+
1482
+
1483
+ 'Text Manipulation' + "\n " + s #+ ' ' + @h.inspect
1484
+
1485
+
1486
+ end
1487
+
1488
+ alias to_summary to_s
1489
+
1490
+ end
1491
+
1214
1492
  class PauseAction < Action
1215
1493
 
1216
1494
  def initialize(h={})
@@ -1572,7 +1850,13 @@ end
1572
1850
  #
1573
1851
  class ToastAction < NotificationsAction
1574
1852
 
1575
- def initialize(h={})
1853
+ def initialize(obj)
1854
+
1855
+ h = if obj.is_a? Hash then
1856
+ obj
1857
+ else
1858
+ {msg: obj}
1859
+ end
1576
1860
 
1577
1861
  if h[:msg] then
1578
1862
  h[:message_text] = h[:msg]
@@ -1603,7 +1887,7 @@ class ToastAction < NotificationsAction
1603
1887
  end
1604
1888
 
1605
1889
  def to_s(colour: false)
1606
- "Popup Message\n %s" % @h[:message_text]
1890
+ @s = "Popup Message\n %s" % @h[:message_text]
1607
1891
  end
1608
1892
 
1609
1893
  end
@@ -8,58 +8,6 @@
8
8
  #
9
9
 
10
10
 
11
- module Params
12
-
13
- refine Hash do
14
-
15
- # turns keys from camelCase into snake_case
16
-
17
- def to_snake_case(h=self)
18
-
19
- h.inject({}) do |r, x|
20
-
21
- key, value = x
22
- #puts 'value: ' + value.inspect
23
-
24
- val = if value.is_a?(Hash) then
25
- to_snake_case(value)
26
- elsif value.is_a?(Array) and value.first.is_a? Hash
27
- value.map {|row| to_snake_case(row)}
28
- else
29
- value
30
- end
31
-
32
- r.merge key.to_s.sub(/^m_/,'').gsub(/[A-Z][a-z]/){|x| '_' +
33
- x.downcase}.gsub(/[a-z][A-Z]/){|x| x[0] + '_' + x[1].downcase}\
34
- .downcase.to_sym => val
35
-
36
- end
37
- end
38
-
39
- # turns keys from snake_case to CamelCase
40
- def to_camel_case(h=self)
41
-
42
- h.inject({}) do |r,x|
43
-
44
- key, value = x
45
-
46
- val = if value.is_a?(Hash) then
47
- to_camel_case(value)
48
- elsif value.is_a?(Array) and value.first.is_a? Hash
49
- value.map {|row| to_camel_case(row)}
50
- else
51
- value
52
- end
53
-
54
- r.merge({key.to_s.gsub(/(?<!^m)_[a-z]/){|x| x[-1].upcase} => val})
55
- end
56
-
57
- end
58
-
59
-
60
- end
61
-
62
- end
63
11
 
64
12
  class MacroObject
65
13
  using ColouredText
@@ -1,4 +1,4 @@
1
- # file: ruby-macrodroid/constraints.rb
1
+ # file: ruby-macrodroid/triggers.rb
2
2
 
3
3
  # This file contains the following classes:
4
4
  #
@@ -26,6 +26,8 @@
26
26
  #
27
27
 
28
28
 
29
+
30
+
29
31
  class Trigger < MacroObject
30
32
  using Params
31
33
 
@@ -132,7 +134,9 @@ class ApplicationLaunchedTrigger < Trigger
132
134
  end
133
135
 
134
136
  def to_s(colour: false)
135
- 'ApplicationLaunchedTrigger ' + @h.inspect
137
+ a = @h[:application_name_list]
138
+ apps = a.length > 1 ? "[%s]" % a.join(', ') : a.first
139
+ 'Application Launched' + "\n " + apps
136
140
  end
137
141
 
138
142
  alias to_summary to_s
@@ -971,6 +975,28 @@ class MusicPlayingTrigger < DeviceEventsTrigger
971
975
  end
972
976
 
973
977
 
978
+ # Category: Device Events
979
+ #
980
+ class NFCTrigger < DeviceEventsTrigger
981
+
982
+ def initialize(h={})
983
+
984
+ options = {
985
+ }
986
+
987
+ super(options.merge h)
988
+
989
+ end
990
+
991
+ def to_s(colour: false)
992
+ 'NFC Tag' + "\n " + @h[:tag_name]
993
+ end
994
+
995
+ alias to_summary to_s
996
+
997
+ end
998
+
999
+
974
1000
  # Category: Device Events
975
1001
  #
976
1002
  class DeviceUnlockedTrigger < DeviceEventsTrigger
@@ -1254,6 +1280,28 @@ class SunriseSunsetTrigger < Trigger
1254
1280
  end
1255
1281
 
1256
1282
 
1283
+ # Category: MacroDroid Specific
1284
+ #
1285
+ class EmptyTrigger < Trigger
1286
+
1287
+ def initialize(h={})
1288
+
1289
+ options = {
1290
+
1291
+ }
1292
+
1293
+ super(options.merge h)
1294
+
1295
+ end
1296
+
1297
+ def to_s(colour: false)
1298
+ 'EmptyTrigger'
1299
+ end
1300
+
1301
+ alias to_summary to_s
1302
+ end
1303
+
1304
+
1257
1305
  class SensorsTrigger < Trigger
1258
1306
 
1259
1307
  def initialize(h={})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-macrodroid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  NZ2kdBIUDnAM24e0/wXdVxg4HnsZbdymxyzMQ4P5pKYcpI6oisBxI37p/Xy+wAg3
36
36
  SBHno3GEuuD8ZWj24IMJpfbp
37
37
  -----END CERTIFICATE-----
38
- date: 2020-09-15 00:00:00.000000000 Z
38
+ date: 2020-09-19 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: glw
metadata.gz.sig CHANGED
Binary file