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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/ruby-macrodroid.rb +108 -30
- metadata +1 -1
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a2f43b1d737df8ffc21bb31f9a7df56964963ba3b88a6e51e008c45ca0d4e5f6
         | 
| 4 | 
            +
              data.tar.gz: 6e587a62b683867b37f28dfba70728971e19647cfa803a804ea123c1eb0955b3
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b247e2d22eac6c837d9bcacf38697b63ab80a41c2affca2adb7389b39423813c9d1816f9c9dd697a013ad75b5417ca2143ca4e040be819a09a67a939765aae2f
         | 
| 7 | 
            +
              data.tar.gz: 1a91db74afbbfbe1622d3e19241c9a99ddd05c0ef975e7ac037102104497d12a191c305a4ceb9ab0f5d7d7d476060398b4648ea927bc3135ab52b5633f562e0f
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/lib/ruby-macrodroid.rb
    CHANGED
    
    | @@ -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,  | 
| 364 | 
            +
              def initialize(name=nil, geofences: geofences, debug: false)
         | 
| 365 365 |  | 
| 366 | 
            -
                @title, @ | 
| 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] | 
| 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 | 
            -
                   | 
| 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, : | 
| 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(/^ | 
| 712 | 
            -
                          .gsub(/^ | 
| 713 | 
            -
             | 
| 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 | 
            -
                 | 
| 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 | 
            -
                  @ | 
| 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 | 
            -
             | 
| 872 | 
            +
            #       puts '@geofences: ' + @geofences.inspect if @debug
         | 
| 822 873 |  | 
| 823 | 
            -
                  m = Macro.new( | 
| 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  | 
| 887 | 
            +
                puts 's: ' + s.inspect if @debug
         | 
| 837 888 | 
             
                doc = Rexle.new(s)
         | 
| 838 | 
            -
                puts 'after doc' if  | 
| 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( | 
| 899 | 
            -
                 | 
| 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( | 
| 1952 | 
            +
              def initialize( h={}, geofences: {})
         | 
| 1885 1953 |  | 
| 1886 1954 | 
             
                if h[:name] then
         | 
| 1887 | 
            -
                  
         | 
| 1888 | 
            -
                  found =  | 
| 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 | 
            -
                @ | 
| 1970 | 
            +
                @geofences = geofences
         | 
| 1903 1971 |  | 
| 1904 1972 | 
             
              end
         | 
| 1905 1973 |  | 
| 1906 1974 | 
             
              def to_s()
         | 
| 1907 1975 |  | 
| 1908 | 
            -
                 | 
| 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 | 
            -
                 | 
| 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
    
    
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |