ruby-macrodroid 0.2.1 → 0.2.2

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: 7b99b0c3579e50a88577a63d143082eff0b705e5431b9b603ccfb94e5d88b91e
4
- data.tar.gz: 708e38f8855c2ae5c2b4bb48db2699483fc68266123d9fab0bf3cf15fe2f7c98
3
+ metadata.gz: 0d741e63df502364d934438221160e20d967303ec5c79923924e7c978175f44d
4
+ data.tar.gz: 9b0e372bb0cfc60ddcd553355bc30dbb90cdd303904c93556a8f16ef87fb2432
5
5
  SHA512:
6
- metadata.gz: 405cd2d5766b93e57ef1401569407f66b508504afbc383f1044c8a81d44a7bf291cff4072b6b49cfd88ecfbc046f3fe5dba2e1bdf659f82e84359cd28751a857
7
- data.tar.gz: '086f03ab70ac608e89bf5e1ed29464e2757de3abdae7f60fa67a65d8b0cc5160006f7dec7acdad83a5b9547469f12c92affe86f939020ccd1d997a5c785d83bd'
6
+ metadata.gz: 40c3507258eade1847ea92c63912f930db4c3843e36beec011e9b9fbaf5fbbc47ea9d8778aaaf7b43be9486ce63875116433065a007dd6956112128c1d96aa0f
7
+ data.tar.gz: dff690f4ce9ebb274cc22f99c95f18981ab05136597a2b0c0eabdf9fa6848c004d2003b653b280da147302aec651731952b8d3c5077222bfc625d4e3819b0008
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -5,6 +5,7 @@
5
5
  require 'pp'
6
6
  require 'json'
7
7
  require 'uuid'
8
+ require 'date'
8
9
  require 'rxfhelper'
9
10
 
10
11
 
@@ -66,10 +67,11 @@ class Macro
66
67
  using Params
67
68
 
68
69
  attr_reader :local_variables, :triggers, :actions, :guid
70
+ attr_accessor :name
69
71
 
70
- def initialize(debug: false)
72
+ def initialize(name=nil, debug: false)
71
73
 
72
- @debug = debug
74
+ @name, @debug = name, debug
73
75
  lv=[], triggers=[], actions=[]
74
76
  @local_variables, @triggers, @actions = lv, triggers, actions
75
77
 
@@ -105,7 +107,15 @@ class Macro
105
107
  local_variables: @local_variables,
106
108
  m_trigger_list: @triggers.map(&:to_h),
107
109
  m_action_list: @actions.map(&:to_h),
108
- m_constraint_list: []
110
+ m_constraint_list: [],
111
+ m_description: '',
112
+ m_name: @name,
113
+ m_excludeLog: false,
114
+ m_GUID: guid(),
115
+ m_isOrCondition: false,
116
+ m_enabled: false,
117
+ m_descriptionOpen: false,
118
+ m_headingColor: 0
109
119
  }
110
120
 
111
121
  puts 'h: ' + h.inspect if @debug
@@ -140,8 +150,43 @@ class Macro
140
150
  @h
141
151
 
142
152
  end
153
+
154
+ def import_xml(node)
155
+
156
+ @name = node.attributes[:name]
157
+
158
+ # get all the triggers
159
+ @triggers = node.xpath('triggers/*').map do |e|
160
+
161
+ puts 'e.name: ' + e.name.inspect if @debug
162
+ {timer: TimerTrigger}[e.name.to_sym].new(e.attributes.to_h)
163
+
164
+ end
165
+
166
+ # get all the actions
167
+ @actions = node.xpath('actions/*').map do |e|
168
+
169
+ if e.name == 'notification' then
170
+
171
+ case e.attributes[:type].to_sym
172
+ when :popup
173
+ e.attributes.delete :type
174
+ ToastAction.new e.attributes.to_h
175
+ end
176
+
177
+ end
178
+
179
+ end
180
+
181
+ self
182
+
183
+ end
143
184
 
144
185
  private
186
+
187
+ def guid()
188
+ '-' + rand(1..9).to_s + 18.times.map { rand 9 }.join
189
+ end
145
190
 
146
191
  def object(h={})
147
192
 
@@ -166,33 +211,18 @@ class MacroDroid
166
211
  if obj then
167
212
 
168
213
  s, _ = RXFHelper.read(obj)
169
- import_json(s) if s[0] == '{'
214
+
215
+ if s[0] == '{' then
216
+ import_json(s)
217
+ else
218
+ s[0] == '<'
219
+ import_xml(s)
220
+ @h = build_h
221
+ end
170
222
 
171
223
  else
172
224
 
173
- @h = {
174
- cell_tower_groups: [],
175
- cell_towers_ignore: [],
176
- drawer_configuration: {
177
- drawer_items: [],
178
- background_color: -1,
179
- header_color: 12692882,
180
- left_side: false,
181
- swipe_area_color: -7829368,
182
- swipe_area_height: 20,
183
- swipe_area_offset: 40,
184
- swipe_area_opacity: 80,
185
- swipe_area_width: 14,
186
- visible_swipe_area_width: 0
187
- },
188
- variables: [],
189
- user_icons: [],
190
- geofence_data: {
191
- geofence_map: {}
192
- },
193
- macro_list: []
194
-
195
- }
225
+ @h = build_h()
196
226
 
197
227
  @macros = []
198
228
 
@@ -203,6 +233,33 @@ class MacroDroid
203
233
  @macros << macro
204
234
  end
205
235
 
236
+ def build_h()
237
+
238
+ {
239
+ cell_tower_groups: [],
240
+ cell_towers_ignore: [],
241
+ drawer_configuration: {
242
+ drawer_items: [],
243
+ background_color: -1,
244
+ header_color: 12692882,
245
+ left_side: false,
246
+ swipe_area_color: -7829368,
247
+ swipe_area_height: 20,
248
+ swipe_area_offset: 40,
249
+ swipe_area_opacity: 80,
250
+ swipe_area_width: 14,
251
+ visible_swipe_area_width: 0
252
+ },
253
+ variables: [],
254
+ user_icons: [],
255
+ geofence_data: {
256
+ geofence_map: {}
257
+ },
258
+ macro_list: []
259
+
260
+ }
261
+ end
262
+
206
263
  def export_json()
207
264
 
208
265
  to_h.to_json
@@ -226,6 +283,23 @@ class MacroDroid
226
283
  end
227
284
 
228
285
  @h[:macro_list] = []
286
+
287
+ end
288
+
289
+ def import_xml(raws)
290
+
291
+ s = RXFHelper.read(raws).first
292
+ puts 's: ' + s.inspect if @debug
293
+ doc = Rexle.new(s)
294
+ puts 'after doc' if @debug
295
+
296
+ @macros = doc.root.xpath('macro').map do |node|
297
+
298
+ macro = Macro.new @name
299
+ macro.import_xml(node)
300
+ macro
301
+
302
+ end
229
303
  end
230
304
 
231
305
  def to_h()
@@ -647,6 +721,31 @@ end
647
721
  class TimerTrigger < Trigger
648
722
 
649
723
  def initialize(h={})
724
+
725
+ if h[:days] then
726
+
727
+ days = [false] * 7
728
+
729
+ h[:days].split(/, +/).each do |x|
730
+
731
+ r = Date::DAYNAMES.grep /#{x}/i
732
+ i = Date::DAYNAMES.index(r.first)
733
+ days[i-1] = true
734
+
735
+ end
736
+
737
+ h[:days_of_week] = days
738
+ h.delete :days
739
+
740
+ end
741
+
742
+ if h[:time] then
743
+
744
+ t = Time.parse(h[:time])
745
+ h[:hour], h[:minute] = t.hour, t.min
746
+ h.delete :time
747
+
748
+ end
650
749
 
651
750
  options = {
652
751
  alarm_id: uuid(),
@@ -2041,6 +2140,11 @@ class ToastAction < Action
2041
2140
 
2042
2141
  def initialize(h={})
2043
2142
 
2143
+ if h[:msg] then
2144
+ h[:message_text] = h[:msg]
2145
+ h.delete :msg
2146
+ end
2147
+
2044
2148
  options = {
2045
2149
  message_text: '',
2046
2150
  image_resource_name: 'launcher_no_border',
@@ -2299,7 +2403,6 @@ class SpeakerPhoneAction < Action
2299
2403
  end
2300
2404
 
2301
2405
 
2302
-
2303
2406
  class SetVolumeAction < Action
2304
2407
 
2305
2408
  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.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file