ruby-macrodroid 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4d111f7d953dba3eeb6940e3e1f31af4410765fbd4c739de9b53c0d84bac137
4
- data.tar.gz: 2d8a574b96647abb40194e3885f38153e1de3b50d3f8f86541698b766981f9d8
3
+ metadata.gz: a2f43b1d737df8ffc21bb31f9a7df56964963ba3b88a6e51e008c45ca0d4e5f6
4
+ data.tar.gz: 6e587a62b683867b37f28dfba70728971e19647cfa803a804ea123c1eb0955b3
5
5
  SHA512:
6
- metadata.gz: 5184ff198c42f2e75dbfd232a9b5e7ef18bd37e0484aa697983f9cf950e0811659cbdc6936d1b5f622f719de1b8bee9ba7c10c5ec22e06be5aac34530ed5d4a2
7
- data.tar.gz: 8f3020868a714825f8e06a04b461761039048e86ecbc22cd70413cbf860bfebb4b61d9c10315530037d1248dcfc3dc8d2d0ccb7be62fe25a625a5045c3a2bade
6
+ metadata.gz: b247e2d22eac6c837d9bcacf38697b63ab80a41c2affca2adb7389b39423813c9d1816f9c9dd697a013ad75b5417ca2143ca4e040be819a09a67a939765aae2f
7
+ data.tar.gz: 1a91db74afbbfbe1622d3e19241c9a99ddd05c0ef975e7ac037102104497d12a191c305a4ceb9ab0f5d7d7d476060398b4648ea927bc3135ab52b5633f562e0f
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -110,8 +110,8 @@
110
110
  require 'yaml'
111
111
  require 'rowx'
112
112
  require 'uuid'
113
- require 'glw'
114
- require 'geozone'
113
+ #require 'glw'
114
+ #require 'geozone'
115
115
  require 'rxfhelper'
116
116
  require 'chronic_cron'
117
117
 
@@ -361,9 +361,9 @@ class Macro
361
361
  attr_reader :local_variables, :triggers, :actions, :constraints, :guid
362
362
  attr_accessor :title, :description
363
363
 
364
- def initialize(name=nil, geofence: geofence, debug: false)
364
+ def initialize(name=nil, geofences: geofences, debug: false)
365
365
 
366
- @title, @geofence, @debug = name, geofence, debug
366
+ @title, @geofences, @debug = name, geofences, debug
367
367
 
368
368
  puts 'inside Macro#initialize' if @debug
369
369
 
@@ -518,7 +518,11 @@ class Macro
518
518
  puts 'found trigger ' + r.inspect if @debug
519
519
 
520
520
  if r then
521
- r[0].new(r[1])
521
+ if r[0] == GeofenceTrigger then
522
+ GeofenceTrigger.new(r[1], geofences: @geofences)
523
+ else
524
+ r[0].new(r[1])
525
+ end
522
526
  end
523
527
 
524
528
  end
@@ -662,7 +666,7 @@ EOF
662
666
 
663
667
  if klass == GeofenceTrigger then
664
668
  puts 'GeofenceTrigger found'.highlight if $debug
665
- klass.new(@geofence, h)
669
+ GeofenceTrigger.new(h, geofences: @geofences)
666
670
  else
667
671
  klass.new h
668
672
  end
@@ -679,12 +683,14 @@ class MacroDroid
679
683
  using ColouredText
680
684
  using Params
681
685
 
682
- attr_reader :macros, :geofence
686
+ attr_reader :macros, :geofences
683
687
 
684
688
  def initialize(obj=nil, debug: false)
685
689
 
686
690
  @debug = debug
687
691
 
692
+ @geofences = {}
693
+
688
694
  if obj then
689
695
 
690
696
  raw_s, _ = RXFHelper.read(obj)
@@ -708,10 +714,25 @@ class MacroDroid
708
714
 
709
715
  puts 'before RowX.new' if @debug
710
716
 
711
- s2 = s.gsub(/^m:/,'macro:').gsub(/^t:/,'trigger:')\
712
- .gsub(/^a:/,'action:').gsub(/^c:/,'constraint:')
713
- xml = RowX.new(s2.gsub(/^#.*/,'')).to_xml
717
+ s2 = s.gsub(/^g:/,'geofence:').gsub(/^m:/,'macro:')\
718
+ .gsub(/^t:/,'trigger:').gsub(/^a:/,'action:')\
719
+ .gsub(/^c:/,'constraint:').gsub(/^#.*/,'')
720
+
721
+ raw_macros, raw_geofences = s2.split(/(?=^macro:)/,2).reverse
722
+
723
+ if raw_geofences then
724
+
725
+ geoxml = RowX.new(raw_geofences).to_xml
726
+
727
+ geodoc = Rexle.new(geoxml)
728
+ geofences = geodoc.root.xpath('item/geofence')
729
+ @geofences = fetch_geofences(geofences) if geofences.any?
730
+
731
+ end
732
+
733
+ xml = RowX.new(raw_macros).to_xml
714
734
  import_rowxml(xml)
735
+
715
736
  elsif s =~ /^# /
716
737
  xml = pc_to_xml(s)
717
738
  import_xml(xml)
@@ -721,8 +742,6 @@ class MacroDroid
721
742
 
722
743
  @h = build_h
723
744
 
724
-
725
-
726
745
  end
727
746
 
728
747
  else
@@ -777,7 +796,13 @@ class MacroDroid
777
796
 
778
797
  def to_h()
779
798
 
780
- @h.merge(macro_list: @macros.map(&:to_h)).to_camel_case
799
+ h = {
800
+ geofence_data: {
801
+ geofence_map: @geofences.map {|key, value| [key, value.to_h] }.to_h
802
+ },
803
+ macro_list: @macros.map(&:to_h)
804
+ }
805
+ @h.merge(h).to_camel_case
781
806
 
782
807
  end
783
808
 
@@ -797,6 +822,32 @@ class MacroDroid
797
822
 
798
823
  private
799
824
 
825
+ def fetch_geofences(nodes)
826
+
827
+ nodes.map do |e|
828
+
829
+ name = e.text.to_s.strip
830
+ item = e.element('item')
831
+ coordinates = item.text('coordinates')
832
+ latitude, longitude = coordinates.split(/, */,2)
833
+ radius = item.text('radius')
834
+
835
+ id = UUID.new.generate
836
+
837
+ h = {
838
+ name: name,
839
+ longitude: longitude,
840
+ latitude: latitude,
841
+ radius: radius,
842
+ id: id
843
+ }
844
+
845
+ [id.to_sym, GeofenceMap.new(h)]
846
+
847
+ end.to_h
848
+
849
+ end
850
+
800
851
  def import_json(s)
801
852
 
802
853
  h = JSON.parse(s, symbolize_names: true)
@@ -809,7 +860,7 @@ class MacroDroid
809
860
  # fetch the geofence data
810
861
  if @h[:geofence_data] then
811
862
 
812
- @geofence = @h[:geofence_data][:geofence_map].map do |id, properties|
863
+ @geofences = @h[:geofence_data][:geofence_map].map do |id, properties|
813
864
  [id, GeofenceMap.new(properties)]
814
865
  end.to_h
815
866
 
@@ -818,9 +869,9 @@ class MacroDroid
818
869
  @macros = @h[:macro_list].map do |macro|
819
870
 
820
871
  puts ('macro: ' + macro.inspect).debug if @debug
821
- puts '@geofence: ' + @geofence.inspect if @debug
872
+ # puts '@geofences: ' + @geofences.inspect if @debug
822
873
 
823
- m = Macro.new(geofence: @geofence, debug: @debug )
874
+ m = Macro.new(geofences: @geofences.map(&:last), debug: @debug )
824
875
  m.import_h(macro)
825
876
  m
826
877
 
@@ -833,13 +884,15 @@ class MacroDroid
833
884
  def import_rowxml(raws)
834
885
 
835
886
  s = RXFHelper.read(raws).first
836
- puts 's: ' + s.inspect if $debug
887
+ puts 's: ' + s.inspect if @debug
837
888
  doc = Rexle.new(s)
838
- puts 'after doc' if $debug
889
+ puts 'after doc' if @debug
890
+ puts 'import_rowxml: @geofences: ' + @geofences.inspect if @debug
891
+ geofences = @geofences
839
892
 
840
893
  @macros = doc.root.xpath('item').map do |node|
841
-
842
- Macro.new.import_xml(node)
894
+ puts ('geofences: ' + geofences.inspect).highlight if @debug
895
+ Macro.new(geofences: geofences.map(&:last), debug: @debug).import_xml(node)
843
896
 
844
897
  end
845
898
 
@@ -862,7 +915,7 @@ class MacroDroid
862
915
 
863
916
  @macros = doc.root.xpath('macro').map do |node|
864
917
 
865
- Macro.new.import_xml(node)
918
+ Macro.new(geofences: @geofences.map(&:last), debug: @debug).import_xml(node)
866
919
 
867
920
  end
868
921
  end
@@ -895,8 +948,23 @@ class GeofenceMap
895
948
 
896
949
  attr_accessor :name, :longitude, :latitude, :radius, :id
897
950
 
898
- def initialize(h)
899
- @id, @latitude, @longitude, @name, @radius = h.values
951
+ def initialize(id: '', longitude: '', latitude: '', name: '', radius: '')
952
+
953
+ @id, @latitude, @longitude, @name, @radius = id, latitude, \
954
+ longitude, name, radius
955
+
956
+ end
957
+
958
+ def to_h()
959
+
960
+ {
961
+ id: @id,
962
+ longitude: @longitude,
963
+ latitude: @latitude,
964
+ name: @name,
965
+ radius: @radius
966
+ }
967
+
900
968
  end
901
969
 
902
970
  end
@@ -1881,12 +1949,12 @@ end
1881
1949
  #
1882
1950
  class GeofenceTrigger < Trigger
1883
1951
 
1884
- def initialize(geofence, h={})
1952
+ def initialize( h={}, geofences: {})
1885
1953
 
1886
1954
  if h[:name] then
1887
-
1888
- found = geofence.find {|x| x.name == h[:name]}
1889
- h[:geofence_id] = found.id
1955
+ puts ('geofences2: ' + geofences.inspect)
1956
+ found = geofences.find {|x| x.name.downcase == h[:name].downcase}
1957
+ h[:geofence_id] = found.id if found
1890
1958
 
1891
1959
  end
1892
1960
 
@@ -1899,15 +1967,25 @@ class GeofenceTrigger < Trigger
1899
1967
  }
1900
1968
 
1901
1969
  super(options.merge filter(options, h))
1902
- @geofence = geofence
1970
+ @geofences = geofences
1903
1971
 
1904
1972
  end
1905
1973
 
1906
1974
  def to_s()
1907
1975
 
1908
- puts ' @geofence: ' + @geofence.inspect if $debug
1976
+ if $debug then
1977
+ puts ' @geofences: ' + @geofences.inspect
1978
+ puts '@h: ' + @h.inspect
1979
+ puts '@h[:geofence_id]: ' + @h[:geofence_id].inspect
1980
+ end
1981
+
1909
1982
  direction = @h[:enter_area] ? 'Entry' : 'Exit'
1910
- "Geofence %s (%s)" % [direction, @geofence[@h[:geofence_id].to_sym].name]
1983
+
1984
+ found = @geofences.find {|x| x.id == @h[:geofence_id]}
1985
+ puts 'found: ' + found.inspect
1986
+ label = found ? found.name : 'error: name not found'
1987
+
1988
+ "Geofence %s (%s)" % [direction, label]
1911
1989
 
1912
1990
  end
1913
1991
 
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.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file