ruby-macrodroid 0.9.3 → 0.9.4

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: 73bd85e05b55cb8139d501f96e7f0692a052d4544dcd518b73e4e1168ffcb0dd
4
- data.tar.gz: 92d7670d08882e34f16085ca22da3a5affc8aa84c3eb89b3f6ec2800c4172501
3
+ metadata.gz: 341332647c11b1d70151aab4625ffefced825585c4814eed7d7aefaf7c96703e
4
+ data.tar.gz: ac8f26a27b1f9d394174f1d887e8af27a6c551dc55d4cffa89b8fb04f6b1927d
5
5
  SHA512:
6
- metadata.gz: 7361a05b044e4d759728a91d86952f6273a8bfbfc72ff1ac9965f97cd858dd8ad3902cb4cb72f4e0557a291627a631a75d7f4ef0a04481969b8ac91bcd3eb48e
7
- data.tar.gz: b7ef1815fe2b3e4ff42de13e34c8a663e58a55681aba9e38533c5175ab9a9b197755205175abfe2a013331150bb2f19d4949e41de4f9e3874ea6a4a3981172e2
6
+ metadata.gz: debe33514bbcd6cbc508c6d6a3d647cd37861bc61168743ed15cb1f1d7cf142cd883fb6059b2b7ad901659314f1dadee8f7610dbc03074f79fc3b95c8abc2f27
7
+ data.tar.gz: 50e36ff27c737d50b0686610398feae034f21a4cfab3a15b0c6367e278305a5bdc4ed6f699c0a220f0794dcf89cd3a2ec5ae0bdaf25f0d18aa49309206c03659
Binary file
data.tar.gz.sig CHANGED
@@ -1 +1 @@
1
- ����ժ�+j��h�������m.����wL�w;4�C�.g|���9�)���h�!��J�K�|]�������/���X��_pk�:�h��I�H-�F���$��;B���C';���ʛe��>�%9�ヘ���"tҨ�(��uaOk\��"�hf�b�+���d೉�\�[+��1K95s�^�q�*e5��Y���]�O.eT���,9ɩ&I� g��9�G�p)�m��7?Z^&�?�ڜ+��[J$����Se�`>jnz���!��g�-7� �ϝ�u��P`#��_ɕy���BD���}6+��[�0��ۨЮ�U�b�.�NX���M�69]S���ٗY'L�3������4zL�JH`|S��+���"��Q���rA@��`BG
1
+ ��ocA���Q��.�'s_�����ߑ(u��:�l���� ���&���,�_�Y
@@ -34,6 +34,7 @@
34
34
 
35
35
  class Action < MacroObject
36
36
  using Params
37
+ include ObjectX
37
38
 
38
39
  attr_reader :constraints
39
40
 
@@ -393,6 +394,7 @@ class IfConditionAction < Action
393
394
  a: true,
394
395
  constraint_list: []
395
396
  }
397
+ puts 'obj: ' + obj.inspect #if $debug
396
398
 
397
399
  if obj.is_a? Hash then
398
400
 
@@ -402,13 +404,18 @@ class IfConditionAction < Action
402
404
  super(h2)
403
405
 
404
406
  elsif obj.is_a? Array
407
+
405
408
  e, macro = obj
406
- super()
407
- raw_txt = e.text('item/description') || e.text.to_s
408
- puts 'raw_txt: ' + raw_txt.inspect if $debug
409
+ super()
410
+ puts 'e.xml: ' + e.xml
411
+ puts 'e.text: ' + e.text.to_s.strip
412
+ raw_txt = e.text.to_s.strip[/^if [^$]+/i] || e.text('item/description')
413
+ puts 'raw_txt: ' + raw_txt.inspect #if $debug
409
414
 
410
- clause = raw_txt[/^if (.*)/i,1]
415
+ clause = raw_txt[/^If (.*)/i,1]
416
+ puts 'clause: ' + clause.inspect
411
417
  conditions = clause.split(/\s+\b(?:AND|OR)\b\s+/i)
418
+ puts 'conditions: ' + conditions.inspect
412
419
 
413
420
  cp = ConstraintsNlp.new
414
421
 
@@ -421,6 +428,19 @@ class IfConditionAction < Action
421
428
 
422
429
  end
423
430
  puts '@constraints: ' + @constraints.inspect if $debug
431
+
432
+ # find any nested actions
433
+ item = e.element('item')
434
+
435
+ if item then
436
+
437
+ ap = ActionsNlp.new
438
+ obj2 = action_to_object(ap, item, item, macro)
439
+ puts 'obj2: ' + obj2.inspect
440
+ #macro.add obj2
441
+
442
+ end
443
+
424
444
  {}
425
445
  else
426
446
  # get the constraints
@@ -450,7 +470,8 @@ class IfConditionAction < Action
450
470
  out << s + constraints
451
471
  out.join("\n")
452
472
 
453
- end
473
+ end
474
+
454
475
  end
455
476
 
456
477
  class ElseAction < Action
@@ -7,7 +7,95 @@
7
7
  # MacroObject
8
8
  #
9
9
 
10
+ module ObjectX
11
+
12
+ def action_to_object(ap, e, item, macro)
13
+
14
+ debug = true
15
+
16
+ puts 'inside action_to_object: item.xml: ' + item.xml if debug
17
+
18
+ if item.element('description') then
19
+
20
+ item.xpath('description').map do |description|
21
+
22
+ inner_lines = description.text.to_s.strip.lines
23
+ puts 'inner_lines: ' + inner_lines.inspect if debug
24
+
25
+ action = if e.text.to_s.strip.empty? then
26
+ inner_lines.shift.strip
27
+ else
28
+ e.text.strip
29
+ end
30
+
31
+ puts 'action: ' + action.inspect if debug
32
+
33
+ r = ap.find_action action
34
+ puts 'r: ' + r.inspect if debug
35
+ puts 'description: ' + description.xml.inspect if debug
36
+ #o = r[0].new([description, self]) if r
37
+ index = macro.actions.length
38
+ macro.add Action.new
39
+ o = object_create(r[0],[description, macro]) if r
40
+ macro.actions[index] = o
41
+ puts 'after o' if debug
42
+ o
43
+
44
+ end
45
+
46
+ else
47
+
48
+ action = e.text.strip
49
+ puts 'action: ' + action.inspect if @debug
50
+ r = ap.find_action action
51
+
52
+ a = e.xpath('item/*')
53
+
54
+ h = if a.any? then
55
+ a.map {|node| [node.name.to_sym, node.text.to_s]}.to_h
56
+ else
57
+ {}
58
+ end
59
+ puts 'h: ' + h.inspect if @debug
60
+
61
+ #r = ap.find_action action
62
+ #r[0].new(h.merge(macro: self)) if r
63
+ o = object_create(r[0], h.merge(macro: macro)) if r
64
+ macro.add o
65
+ o
66
+
67
+ end
68
+
69
+
70
+ end
10
71
 
72
+ def object_create(klass, *args)
73
+
74
+ begin
75
+ klass.new(*args)
76
+ rescue
77
+ raise MacroError, klass.to_s + ': ' + ($!).to_s
78
+ end
79
+ end
80
+
81
+ def varify(label, value='')
82
+
83
+ type = VAR_TYPES[value.class.to_s.to_sym]
84
+
85
+ h = {
86
+ boolean_value: false,
87
+ decimal_value: 0.0,
88
+ int_value: 0,
89
+ name: label,
90
+ string_value: '',
91
+ type: type[0]
92
+ }
93
+ h[type[1]] = value
94
+ h
95
+
96
+ end
97
+
98
+ end
11
99
 
12
100
  class MacroObject
13
101
  using ColouredText
@@ -794,6 +794,13 @@ class MacroDroidVariableConstraint < Constraint
794
794
 
795
795
  def initialize(h={})
796
796
 
797
+ if h[:loperand] then
798
+ h[:variable] = {}
799
+ h[:variable][:name] = h[:loperand]
800
+ h[:variable][:type] = 2
801
+ h[:string_value] = h[:roperand]
802
+ end
803
+
797
804
  options = {
798
805
 
799
806
  :enable_regex=>false,
@@ -825,11 +832,24 @@ class MacroDroidVariableConstraint < Constraint
825
832
 
826
833
  def to_s(colour: false, indent: 0)
827
834
 
828
- a = [:int_greater_than, :int_less_than, :int_not_equal,
829
- :string_equal].zip(['>','<','!=', '='])
830
- operator = a.find {|label,_| @h[label]}.last
835
+ a = [:int_greater_than, :int_less_than, :int_not_equal,
836
+ :string_equal].zip(['>','<','!=', '='])
837
+ operator = a.find {|label,_| @h[label]}.last
838
+
839
+ var = @h[:variable]
840
+
841
+ type = case var[:type]
842
+ when 0 # boolean
843
+ :boolean_value
844
+ when 1 # integer
845
+ :int_value
846
+ when 2 # string
847
+ :string_value
848
+ when 3 # decimal
849
+ :decimal_Value
850
+ end
831
851
 
832
- @s = "%s %s %s" % [@h[:variable][:name], operator, @h[:int_value]]
852
+ @s = "%s %s %s" % [@h[:variable][:name], operator, @h[type]]
833
853
  super()
834
854
  end
835
855
 
@@ -21,6 +21,8 @@ VAR_TYPES = {
21
21
  Float: [3, :decimal_value]
22
22
  }
23
23
 
24
+
25
+
24
26
  class TriggersNlp
25
27
  include AppRoutes
26
28
 
@@ -347,6 +349,20 @@ class ConstraintsNlp
347
349
 
348
350
  #
349
351
 
352
+ # -- MacroDroid specific -----------------------------------------------------------------------
353
+
354
+ get /^(\w+) (=) (\[?\w+\]?)/i do |loperand, operator, roperand|
355
+
356
+ h = {
357
+ loperand: loperand,
358
+ operator: operator,
359
+ roperand: roperand
360
+ }
361
+
362
+ [MacroDroidVariableConstraint, h]
363
+
364
+ end
365
+
350
366
  # -- Sensors -----------------------------------
351
367
  #
352
368
  get /^Light Sensor (Less|Greater) than (50.0)lx/i do |operator, val|
@@ -386,6 +402,7 @@ end
386
402
  class Macro
387
403
  using ColouredText
388
404
  using Params
405
+ include ObjectX
389
406
 
390
407
  attr_reader :local_variables, :triggers, :actions, :constraints,
391
408
  :guid, :deviceid
@@ -405,6 +422,8 @@ class Macro
405
422
  end
406
423
 
407
424
  def add(obj)
425
+ puts 'inside add; ' + obj.inspect
426
+ puts '@actions: ' + @actions.inspect
408
427
 
409
428
  if obj.kind_of? Trigger then
410
429
 
@@ -663,68 +682,25 @@ class Macro
663
682
 
664
683
  ap = ActionsNlp.new self
665
684
 
666
- @actions = node.xpath('action').flat_map do |e|
685
+ node.xpath('action').each do |e|
667
686
 
668
687
  puts 'action e: ' + e.xml.inspect if @debug
669
688
  puts 'e.text ' + e.text if @debug
670
689
 
671
690
  item = e.element('item')
691
+
672
692
  if item then
673
693
 
674
- if item.element('description') then
675
-
676
- item.xpath('description').map do |description|
677
-
678
- inner_lines = description.text.to_s.strip.lines
679
- puts 'inner_lines: ' + inner_lines.inspect if @debug
680
-
681
- action = if e.text.to_s.strip.empty? then
682
- inner_lines.shift.strip
683
- else
684
- e.text.strip
685
- end
686
-
687
- puts 'action: ' + action.inspect if @debug
688
-
689
- r = ap.find_action action
690
- puts 'r: ' + r.inspect if @debug
691
- puts 'description: ' + description.xml.inspect if @debug
692
- #o = r[0].new([description, self]) if r
693
- o = object_create(r[0],[description, self]) if r
694
- puts 'after o' if @debug
695
- o
696
-
697
- end
698
-
699
- else
700
-
701
- action = e.text.strip
702
- puts 'action: ' + action.inspect if @debug
703
- r = ap.find_action action
704
-
705
- a = e.xpath('item/*')
706
-
707
- h = if a.any? then
708
- a.map {|node| [node.name.to_sym, node.text.to_s]}.to_h
709
- else
710
- {}
711
- end
712
- puts 'h: ' + h.inspect if @debug
713
-
714
- #r = ap.find_action action
715
- #r[0].new(h.merge(macro: self)) if r
716
- object_create(r[0], h.merge(macro: self)) if r
717
-
718
- end
694
+ action_to_object(ap, e, item, self)
719
695
 
720
696
  else
721
697
 
722
698
  action = e.text.strip
723
699
  r = ap.find_action action
724
700
  #r[0].new(r[1]) if r
725
- object_create(r[0],r[1]) if r
701
+ self.add object_create(r[0],r[1]) if r
726
702
 
727
- end
703
+ end
728
704
 
729
705
  end
730
706
 
@@ -1012,31 +988,7 @@ EOF
1012
988
 
1013
989
  end
1014
990
 
1015
- def object_create(klass, *args)
1016
991
 
1017
- begin
1018
- klass.new(*args)
1019
- rescue
1020
- raise MacroError, klass.to_s + ': ' + ($!).to_s
1021
- end
1022
- end
1023
-
1024
- def varify(label, value='')
1025
-
1026
-
1027
- type = VAR_TYPES[value.class.to_s.to_sym]
1028
992
 
1029
- h = {
1030
- boolean_value: false,
1031
- decimal_value: 0.0,
1032
- int_value: 0,
1033
- name: label,
1034
- string_value: '',
1035
- type: type[0]
1036
- }
1037
- h[type[1]] = value
1038
- h
1039
-
1040
- end
1041
993
 
1042
994
  end
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.9.3
4
+ version: 0.9.4
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-10-08 00:00:00.000000000 Z
38
+ date: 2020-10-11 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: glw
metadata.gz.sig CHANGED
Binary file