Class: Underpass::QL::Builder
- Inherits:
-
Object
- Object
- Underpass::QL::Builder
- Defined in:
- lib/underpass/ql/builder.rb
Overview
DSL for building Overpass QL queries programmatically.
Instance Method Summary collapse
-
#around(radius, lat_or_point, lon = nil) ⇒ self
Sets a proximity filter for all statements.
-
#initialize ⇒ Builder
constructor
Creates a new empty builder.
-
#node(tags = {}) ⇒ self
Adds a node query statement.
-
#nwr(tags = {}) ⇒ self
Adds a node/way/relation (nwr) query statement.
-
#relation(tags = {}) ⇒ self
Adds a relation query statement.
-
#to_ql ⇒ String
Converts the builder into an Overpass QL query string.
-
#way(tags = {}) ⇒ self
Adds a way query statement.
Constructor Details
#initialize ⇒ Builder
Creates a new empty builder.
17 18 19 20 |
# File 'lib/underpass/ql/builder.rb', line 17 def initialize @statements = [] @around = nil end |
Instance Method Details
#around(radius, lat_or_point, lon = nil) ⇒ self
Sets a proximity filter for all statements.
64 65 66 67 68 69 70 71 |
# File 'lib/underpass/ql/builder.rb', line 64 def around(radius, lat_or_point, lon = nil) @around = if lat_or_point.respond_to?(:y) { radius: radius, lat: lat_or_point.y, lon: lat_or_point.x } else { radius: radius, lat: lat_or_point, lon: lon } end self end |
#node(tags = {}) ⇒ self
Adds a node query statement.
26 27 28 29 |
# File 'lib/underpass/ql/builder.rb', line 26 def node( = {}) @statements << build_statement('node', ) self end |
#nwr(tags = {}) ⇒ self
Adds a node/way/relation (nwr) query statement.
53 54 55 56 |
# File 'lib/underpass/ql/builder.rb', line 53 def nwr( = {}) @statements << build_statement('nwr', ) self end |
#relation(tags = {}) ⇒ self
Adds a relation query statement.
44 45 46 47 |
# File 'lib/underpass/ql/builder.rb', line 44 def relation( = {}) @statements << build_statement('relation', ) self end |
#to_ql ⇒ String
Converts the builder into an Overpass QL query string.
76 77 78 79 80 81 82 |
# File 'lib/underpass/ql/builder.rb', line 76 def to_ql if @around @statements.map { |s| append_around(s) }.join("\n") else @statements.join("\n") end end |
#way(tags = {}) ⇒ self
Adds a way query statement.
35 36 37 38 |
# File 'lib/underpass/ql/builder.rb', line 35 def way( = {}) @statements << build_statement('way', ) self end |