overpass-api-ruby 0.1.3 → 0.2
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
- data/.gitignore +1 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +21 -25
- data/README.md +36 -16
- data/lib/base.rb +40 -0
- data/lib/overpass_api_ruby.rb +2 -92
- data/lib/ql.rb +16 -0
- data/lib/xml.rb +12 -0
- data/overpass-api-ruby.gemspec +1 -3
- data/spec/overpass_api_ruby_spec.rb +25 -10
- metadata +9 -32
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8ef9346aa556dd932264aaa04f016c2d86553a93
         | 
| 4 | 
            +
              data.tar.gz: f6366d26fa31b74b910400e11f92376996dd0204
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 013cc225d04ad2f4fe501f2beb430ad837831ddc134e4630ac962d7f47518d34b9c9f796418d103862a2aca2a762f10be631a7db8a0b4abf252c9c16e5542f7a
         | 
| 7 | 
            +
              data.tar.gz: 05eb5f15ed2b487300124889ca2ce7ecf5fedaa86cd3ec1c281af66c226083ca80bde55831b76ea525ecf66cf553053f20d98e25645ebca149b796bca1d37e35
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,43 +1,39 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                overpass-api-ruby (0. | 
| 5 | 
            -
                  diskcached
         | 
| 4 | 
            +
                overpass-api-ruby (0.2)
         | 
| 6 5 | 
             
                  httpi (~> 2.4.0)
         | 
| 7 | 
            -
                  nokogiri
         | 
| 8 6 |  | 
| 9 7 | 
             
            GEM
         | 
| 10 8 | 
             
              remote: https://rubygems.org/
         | 
| 11 9 | 
             
              specs:
         | 
| 12 | 
            -
                coderay (1.1. | 
| 13 | 
            -
                diff-lcs (1. | 
| 14 | 
            -
                 | 
| 15 | 
            -
                httpi (2.4.1)
         | 
| 10 | 
            +
                coderay (1.1.1)
         | 
| 11 | 
            +
                diff-lcs (1.3)
         | 
| 12 | 
            +
                httpi (2.4.2)
         | 
| 16 13 | 
             
                  rack
         | 
| 14 | 
            +
                  socksify
         | 
| 17 15 | 
             
                method_source (0.8.2)
         | 
| 18 | 
            -
                 | 
| 19 | 
            -
                nokogiri (1.6.6.2)
         | 
| 20 | 
            -
                  mini_portile (~> 0.6.0)
         | 
| 21 | 
            -
                pry (0.10.1)
         | 
| 16 | 
            +
                pry (0.10.4)
         | 
| 22 17 | 
             
                  coderay (~> 1.1.0)
         | 
| 23 18 | 
             
                  method_source (~> 0.8.1)
         | 
| 24 19 | 
             
                  slop (~> 3.4)
         | 
| 25 | 
            -
                rack ( | 
| 26 | 
            -
                rake ( | 
| 27 | 
            -
                rspec (3. | 
| 28 | 
            -
                  rspec-core (~> 3. | 
| 29 | 
            -
                  rspec-expectations (~> 3. | 
| 30 | 
            -
                  rspec-mocks (~> 3. | 
| 31 | 
            -
                rspec-core (3. | 
| 32 | 
            -
                  rspec-support (~> 3. | 
| 33 | 
            -
                rspec-expectations (3. | 
| 20 | 
            +
                rack (2.0.3)
         | 
| 21 | 
            +
                rake (12.0.0)
         | 
| 22 | 
            +
                rspec (3.6.0)
         | 
| 23 | 
            +
                  rspec-core (~> 3.6.0)
         | 
| 24 | 
            +
                  rspec-expectations (~> 3.6.0)
         | 
| 25 | 
            +
                  rspec-mocks (~> 3.6.0)
         | 
| 26 | 
            +
                rspec-core (3.6.0)
         | 
| 27 | 
            +
                  rspec-support (~> 3.6.0)
         | 
| 28 | 
            +
                rspec-expectations (3.6.0)
         | 
| 34 29 | 
             
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 35 | 
            -
                  rspec-support (~> 3. | 
| 36 | 
            -
                rspec-mocks (3. | 
| 30 | 
            +
                  rspec-support (~> 3.6.0)
         | 
| 31 | 
            +
                rspec-mocks (3.6.0)
         | 
| 37 32 | 
             
                  diff-lcs (>= 1.2.0, < 2.0)
         | 
| 38 | 
            -
                  rspec-support (~> 3. | 
| 39 | 
            -
                rspec-support (3. | 
| 33 | 
            +
                  rspec-support (~> 3.6.0)
         | 
| 34 | 
            +
                rspec-support (3.6.0)
         | 
| 40 35 | 
             
                slop (3.6.0)
         | 
| 36 | 
            +
                socksify (1.7.1)
         | 
| 41 37 |  | 
| 42 38 | 
             
            PLATFORMS
         | 
| 43 39 | 
             
              ruby
         | 
| @@ -50,4 +46,4 @@ DEPENDENCIES | |
| 50 46 | 
             
              rspec (>= 3)
         | 
| 51 47 |  | 
| 52 48 | 
             
            BUNDLED WITH
         | 
| 53 | 
            -
               1. | 
| 49 | 
            +
               1.13.6
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,7 +1,9 @@ | |
| 1 1 | 
             
            Overpass API Ruby
         | 
| 2 2 | 
             
            =================
         | 
| 3 3 |  | 
| 4 | 
            -
            A Ruby wrapper for OpenStreetMap Overpass API.  | 
| 4 | 
            +
            A Ruby wrapper for OpenStreetMap Overpass API. Supports both QL and XML.
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Note: Version 0.2 introduces breaking changes. Check the file CHANGELOG.md.
         | 
| 5 7 |  | 
| 6 8 | 
             
            Install
         | 
| 7 9 | 
             
            -------
         | 
| @@ -13,47 +15,65 @@ or add `gem 'overpass-api-ruby'` to your Gemfile | |
| 13 15 | 
             
            Usage
         | 
| 14 16 | 
             
            -----
         | 
| 15 17 |  | 
| 18 | 
            +
            Using XML:
         | 
| 19 | 
            +
             | 
| 16 20 | 
             
            ```ruby
         | 
| 17 21 | 
             
            require 'overpass_api_ruby'
         | 
| 18 22 |  | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 23 | 
            +
            options={:bbox => {:s => -34.705448, :n => -34.526562,
         | 
| 24 | 
            +
                               :w => -58.531471, :e => -58.335159},
         | 
| 25 | 
            +
                     :timeout => 900,
         | 
| 26 | 
            +
                     :maxsize => 1073741824}
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            overpass = OverpassAPI::XML.new(options)
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            query = "<union><query type='relation'><has-kv k='route' v='subway'/></query>" <<
         | 
| 31 | 
            +
                    "</union><union><item/><recurse type='down'/></union>"
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            response = overpass.query(query)
         | 
| 34 | 
            +
            ```
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            Using QL:
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            ```ruby
         | 
| 39 | 
            +
            require 'overpass_api_ruby'
         | 
| 21 40 |  | 
| 22 41 | 
             
            options={:bbox => {:s => -34.705448, :n => -34.526562,
         | 
| 23 42 | 
             
                               :w => -58.531471, :e => -58.335159},
         | 
| 24 43 | 
             
                     :timeout => 900,
         | 
| 25 | 
            -
                     : | 
| 26 | 
            -
                     :json => true}
         | 
| 44 | 
            +
                     :maxsize => 1073741824}
         | 
| 27 45 |  | 
| 28 | 
            -
            overpass = OverpassAPI.new(options)
         | 
| 29 | 
            -
             | 
| 46 | 
            +
            overpass = OverpassAPI::QL.new(options)
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            query = "rel['route'='subway'];(._;>;);out body;"
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            response = overpass.query(query)
         | 
| 30 51 | 
             
            ```
         | 
| 31 52 |  | 
| 32 53 | 
             
            Options on instantiation
         | 
| 33 54 | 
             
            ------------------------
         | 
| 34 55 | 
             
            ```
         | 
| 35 56 | 
             
            bbox                    Hash. Global bounding box.
         | 
| 36 | 
            -
            endpoint                String. | 
| 57 | 
            +
            endpoint                String.
         | 
| 37 58 | 
             
                                    Defaults to http://overpass-api.de/api/interpreter
         | 
| 38 59 | 
             
            timeout                 Integer.
         | 
| 39 | 
            -
             | 
| 40 | 
            -
            json                    Boolean. API response is in JSON format, so parse to hash 
         | 
| 41 | 
            -
                                    doesn't use the private parse_nokogiri method. 
         | 
| 42 | 
            -
                                    Default: false.
         | 
| 43 | 
            -
            cache_expiration_time   Integer. Default: 7200.
         | 
| 44 | 
            -
            dont_use_cache          Boolean. Default: false.
         | 
| 60 | 
            +
            maxsize                 Integer.
         | 
| 45 61 | 
             
            ```
         | 
| 46 62 | 
             
            See [Overpass API](http://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide)
         | 
| 47 63 |  | 
| 48 64 | 
             
            Public methods
         | 
| 49 65 | 
             
            --------------
         | 
| 50 66 |  | 
| 67 | 
            +
            Both `QL` and `XML` classes have the same public methods:
         | 
| 68 | 
            +
             | 
| 51 69 | 
             
            ```ruby
         | 
| 52 | 
            -
            query (<String query>)       | 
| 70 | 
            +
            query (<String query>)      Performs the query passed using the global values set on instantiation.
         | 
| 53 71 |  | 
| 54 72 | 
             
            raw_query (<String query>)  The whole query must be passed.
         | 
| 55 73 |  | 
| 56 | 
            -
             | 
| 74 | 
            +
            buid_query (<String query>) Returns a String containing the whole query.
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            bounding_box (s,n,w,e)      Defines the global bounding box.
         | 
| 57 77 | 
             
            ```
         | 
| 58 78 |  | 
| 59 79 |  | 
    
        data/lib/base.rb
    ADDED
    
    | @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            require 'httpi'
         | 
| 2 | 
            +
            require 'open-uri'
         | 
| 3 | 
            +
            require 'json'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module OverpassAPI
         | 
| 6 | 
            +
              VERSION='0.2'
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              class Base
         | 
| 9 | 
            +
                DEFAULT_ENDPOINT='http://overpass-api.de/api/interpreter?data='
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def initialize(args={})
         | 
| 12 | 
            +
                  bbox = args[:bbox]
         | 
| 13 | 
            +
                  bounding_box(bbox[:s],bbox[:n],bbox[:w],bbox[:e]) if bbox
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  @endpoint = args[:endpoint] || DEFAULT_ENDPOINT
         | 
| 16 | 
            +
                  @timeout = args[:timeout]
         | 
| 17 | 
            +
                  @maxsize = args[:maxsize]
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def bounding_box(s,n,w,e)
         | 
| 21 | 
            +
                  @bbox = "#{s},#{w},#{n},#{e}"
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def query(q)
         | 
| 25 | 
            +
                  perform build_query(q)
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def raw_query(q)
         | 
| 29 | 
            +
                  perform q
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                private
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                def perform(q)
         | 
| 35 | 
            +
                  url = URI::encode("#{@endpoint}#{q}")
         | 
| 36 | 
            +
                  r = HTTPI::Request.new(url)
         | 
| 37 | 
            +
                  JSON.parse(HTTPI.get(r).body, symbolize_names: true)
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
            end
         | 
    
        data/lib/overpass_api_ruby.rb
    CHANGED
    
    | @@ -1,92 +1,2 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'open-uri'
         | 
| 4 | 
            -
            require 'json'
         | 
| 5 | 
            -
            require 'nokogiri'
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            class OverpassAPI
         | 
| 8 | 
            -
              VERSION='0.1.3'
         | 
| 9 | 
            -
              DEFAULT_ENDPOINT='http://overpass-api.de/api/interpreter?data='
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              def initialize(args={})
         | 
| 12 | 
            -
                bbox = args[:bbox]
         | 
| 13 | 
            -
                bbox(bbox[:s],bbox[:n],bbox[:w],bbox[:e]) if bbox
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                cache_expiration_time = args[:cache_expiration_time] || 7200
         | 
| 16 | 
            -
                @cache = Diskcached.new('/tmp/cache',cache_expiration_time,true)
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                @endpoint = args[:endpoint] || DEFAULT_ENDPOINT
         | 
| 19 | 
            -
                @json = args[:json] ? "output='json'" : ''
         | 
| 20 | 
            -
                @timeout = args[:timeout] ? "timeout='#{args[:timeout]}'" : ''
         | 
| 21 | 
            -
                @element_limit = args[:element_limit] ? "element-limit='#{args[:element_limit]}'" : ''
         | 
| 22 | 
            -
                @dont_use_cache = args[:dont_use_cache]
         | 
| 23 | 
            -
              end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
              def bbox(s,n,w,e)
         | 
| 26 | 
            -
                @bbox = "bbox='#{s},#{w},#{n},#{e}'"
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
              def query(query)
         | 
| 30 | 
            -
                return unless query
         | 
| 31 | 
            -
                perform "<osm-script #{@bbox} #{@timeout} #{@element_limit} #{@json}>" <<
         | 
| 32 | 
            -
                        "#{query}<print/></osm-script>"
         | 
| 33 | 
            -
              end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
              def raw_query(query)
         | 
| 36 | 
            -
                return unless query
         | 
| 37 | 
            -
                perform query
         | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
              private
         | 
| 41 | 
            -
              def request(url)
         | 
| 42 | 
            -
                r = HTTPI::Request.new(url)
         | 
| 43 | 
            -
                HTTPI.get(r).body
         | 
| 44 | 
            -
              end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
              def perform(query)
         | 
| 47 | 
            -
                url = URI::encode("#{@endpoint}#{query}")
         | 
| 48 | 
            -
                data = if @dont_use_cache
         | 
| 49 | 
            -
                            request url
         | 
| 50 | 
            -
                       else
         | 
| 51 | 
            -
                            @cache.cache("overpass_api_ruby_#{query}") do
         | 
| 52 | 
            -
                                request url
         | 
| 53 | 
            -
                            end
         | 
| 54 | 
            -
                       end          
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                return JSON.parse(data, :symbolize_names=> true)[:elements] unless @json.empty?
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                doc = Nokogiri::XML(data) do |config|
         | 
| 59 | 
            -
                  config.options = Nokogiri::XML::ParseOptions::NOBLANKS
         | 
| 60 | 
            -
                end
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                raw = doc.children.first.children.select{|e| e.name != 'note' and e.name != 'meta'}
         | 
| 63 | 
            -
                parse_nokogiri raw
         | 
| 64 | 
            -
              end
         | 
| 65 | 
            -
             | 
| 66 | 
            -
              def parse_nokogiri(xml)
         | 
| 67 | 
            -
                xml.map {|e|
         | 
| 68 | 
            -
                  element = {:type => e.name}
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                  e.attributes.each {|a|
         | 
| 71 | 
            -
                    element[a[1].name.to_sym] = a[1].value
         | 
| 72 | 
            -
                  }
         | 
| 73 | 
            -
             | 
| 74 | 
            -
                  members = e.children.select{|n| n.name != 'tag'}.map {|child|
         | 
| 75 | 
            -
                    key_values={:type => child.name }
         | 
| 76 | 
            -
                    child.attributes.each {|a|
         | 
| 77 | 
            -
                      key_values[a[1].name.to_sym] = a[1].value
         | 
| 78 | 
            -
                    }
         | 
| 79 | 
            -
                    key_values
         | 
| 80 | 
            -
                  }
         | 
| 81 | 
            -
                  element[:members] = members unless members.empty?
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                  tags={}
         | 
| 84 | 
            -
                  e.children.select{|n| n.name == 'tag'}.each {|child|
         | 
| 85 | 
            -
                    tags[child.values.first] = child.values[1]
         | 
| 86 | 
            -
                  }
         | 
| 87 | 
            -
                  element[:tags] = tags unless tags.empty?
         | 
| 88 | 
            -
             | 
| 89 | 
            -
                  element
         | 
| 90 | 
            -
                }
         | 
| 91 | 
            -
              end
         | 
| 92 | 
            -
            end
         | 
| 1 | 
            +
            require_relative "xml"
         | 
| 2 | 
            +
            require_relative "ql"
         | 
    
        data/lib/ql.rb
    ADDED
    
    | @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            require_relative "base"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module OverpassAPI
         | 
| 4 | 
            +
              class QL < Base
         | 
| 5 | 
            +
                def build_query(q)
         | 
| 6 | 
            +
                  header = ""
         | 
| 7 | 
            +
                  header << "[bbox:#{@bbox}]" if @bbox
         | 
| 8 | 
            +
                  header << "[timeout:#{@timeout}]" if @timeout
         | 
| 9 | 
            +
                  header << "[maxsize:#{@maxsize}]" if @maxsize
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  header << "[out:json]"
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  "#{header};#{q}"
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
    
        data/lib/xml.rb
    ADDED
    
    | @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            require_relative 'base'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module OverpassAPI
         | 
| 4 | 
            +
              class XML < Base
         | 
| 5 | 
            +
                def build_query(q)
         | 
| 6 | 
            +
                  bbox = @bbox ? "bbox='#{@bbox}'" : ''
         | 
| 7 | 
            +
                  timeout = @timeout ? "timeout='#{@timeout}'" : ''
         | 
| 8 | 
            +
                  maxsize = @maxsize ? "maxsize='#{@maxsize}'" : ''
         | 
| 9 | 
            +
                  "<osm-script #{bbox} #{timeout} #{maxsize} output='json'>#{q}<print/></osm-script>"
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
            end
         | 
    
        data/overpass-api-ruby.gemspec
    CHANGED
    
    | @@ -9,7 +9,7 @@ Gem::Specification.new do |spec| | |
| 9 9 | 
             
              spec.authors       = ["Bruno Salerno"]
         | 
| 10 10 | 
             
              spec.email         = ["br.salerno@gmail.com"]
         | 
| 11 11 | 
             
              spec.description   = %q{A Ruby wrapper for OpenStreetMap Overpass API}
         | 
| 12 | 
            -
              spec.summary       = %q{ | 
| 12 | 
            +
              spec.summary       = %q{This gem will allow you to perform queries to OSM Overpass API using QL or XML}
         | 
| 13 13 | 
             
              spec.homepage      = "https://github.com/BrunoSalerno/overpass-api-ruby"
         | 
| 14 14 | 
             
              spec.license       = "MIT"
         | 
| 15 15 |  | 
| @@ -19,8 +19,6 @@ Gem::Specification.new do |spec| | |
| 19 19 | 
             
              spec.require_paths = ["lib"]
         | 
| 20 20 |  | 
| 21 21 | 
             
              spec.add_runtime_dependency "httpi", "~> 2.4.0"
         | 
| 22 | 
            -
              spec.add_runtime_dependency "diskcached"
         | 
| 23 | 
            -
              spec.add_runtime_dependency "nokogiri"
         | 
| 24 22 |  | 
| 25 23 | 
             
              spec.add_development_dependency "bundler", "~> 1.3"
         | 
| 26 24 | 
             
              spec.add_development_dependency "rake"
         | 
| @@ -2,18 +2,33 @@ require 'spec_helper' | |
| 2 2 | 
             
            require 'overpass_api_ruby'
         | 
| 3 3 |  | 
| 4 4 | 
             
            describe OverpassAPI do
         | 
| 5 | 
            -
               | 
| 5 | 
            +
              describe OverpassAPI::XML do
         | 
| 6 | 
            +
                it "'s example works" do
         | 
| 7 | 
            +
                  options={:bbox => {:s => -34.705448, :n => -34.526562,
         | 
| 8 | 
            +
                                     :w => -58.531471, :e => -58.335159},
         | 
| 9 | 
            +
                           :timeout => 900}
         | 
| 6 10 |  | 
| 7 | 
            -
             | 
| 8 | 
            -
                  "</union><union><item/><recurse type='down'/></union>"
         | 
| 11 | 
            +
                  overpass = OverpassAPI::XML.new(options)
         | 
| 9 12 |  | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
                         :timeout => 900,
         | 
| 13 | 
            -
                         :element_limit => 1,
         | 
| 14 | 
            -
                         :json => true}
         | 
| 13 | 
            +
                  ba_query = "<union><query type='relation'><has-kv k='route' v='subway'/></query>" <<
         | 
| 14 | 
            +
                    "</union><union><item/><recurse type='down'/></union>"
         | 
| 15 15 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 16 | 
            +
             | 
| 17 | 
            +
                  expect(overpass.query(ba_query)[:elements]).to be_a(Array)
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              describe OverpassAPI::QL do
         | 
| 22 | 
            +
                it "'s example works" do
         | 
| 23 | 
            +
                  options={:bbox => {:s => -34.705448, :n => -34.526562,
         | 
| 24 | 
            +
                                     :w => -58.531471, :e => -58.335159},
         | 
| 25 | 
            +
                           :timeout => 900}
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  overpass = OverpassAPI::QL.new(options)
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  ba_query = "rel['route'='subway'];(._;>;);out body;"
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  expect(overpass.query(ba_query)[:elements]).to be_a(Array)
         | 
| 32 | 
            +
                end
         | 
| 18 33 | 
             
              end
         | 
| 19 34 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: overpass-api-ruby
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: '0.2'
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Bruno Salerno
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2017-05-20 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: httpi
         | 
| @@ -24,34 +24,6 @@ dependencies: | |
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: 2.4.0
         | 
| 27 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name: diskcached
         | 
| 29 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            -
                requirements:
         | 
| 31 | 
            -
                - - ">="
         | 
| 32 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '0'
         | 
| 34 | 
            -
              type: :runtime
         | 
| 35 | 
            -
              prerelease: false
         | 
| 36 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            -
                requirements:
         | 
| 38 | 
            -
                - - ">="
         | 
| 39 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '0'
         | 
| 41 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name: nokogiri
         | 
| 43 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            -
                requirements:
         | 
| 45 | 
            -
                - - ">="
         | 
| 46 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: '0'
         | 
| 48 | 
            -
              type: :runtime
         | 
| 49 | 
            -
              prerelease: false
         | 
| 50 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            -
                requirements:
         | 
| 52 | 
            -
                - - ">="
         | 
| 53 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: '0'
         | 
| 55 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 28 | 
             
              name: bundler
         | 
| 57 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -117,12 +89,16 @@ extra_rdoc_files: [] | |
| 117 89 | 
             
            files:
         | 
| 118 90 | 
             
            - ".gitignore"
         | 
| 119 91 | 
             
            - ".rspec"
         | 
| 92 | 
            +
            - CHANGELOG.md
         | 
| 120 93 | 
             
            - Gemfile
         | 
| 121 94 | 
             
            - Gemfile.lock
         | 
| 122 95 | 
             
            - LICENSE
         | 
| 123 96 | 
             
            - README.md
         | 
| 124 97 | 
             
            - Rakefile
         | 
| 98 | 
            +
            - lib/base.rb
         | 
| 125 99 | 
             
            - lib/overpass_api_ruby.rb
         | 
| 100 | 
            +
            - lib/ql.rb
         | 
| 101 | 
            +
            - lib/xml.rb
         | 
| 126 102 | 
             
            - overpass-api-ruby.gemspec
         | 
| 127 103 | 
             
            - spec/overpass_api_ruby_spec.rb
         | 
| 128 104 | 
             
            - spec/spec_helper.rb
         | 
| @@ -146,10 +122,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 146 122 | 
             
                  version: '0'
         | 
| 147 123 | 
             
            requirements: []
         | 
| 148 124 | 
             
            rubyforge_project: 
         | 
| 149 | 
            -
            rubygems_version: 2. | 
| 125 | 
            +
            rubygems_version: 2.5.1
         | 
| 150 126 | 
             
            signing_key: 
         | 
| 151 127 | 
             
            specification_version: 4
         | 
| 152 | 
            -
            summary:  | 
| 128 | 
            +
            summary: This gem will allow you to perform queries to OSM Overpass API using QL or
         | 
| 129 | 
            +
              XML
         | 
| 153 130 | 
             
            test_files:
         | 
| 154 131 | 
             
            - spec/overpass_api_ruby_spec.rb
         | 
| 155 132 | 
             
            - spec/spec_helper.rb
         |