geosparql_to_geojson 0.1.3 → 0.2.0

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
  SHA1:
3
- metadata.gz: 8745dbc21bfac65f5e4ff1e9a195d561d9f15d5c
4
- data.tar.gz: 3f52ce971cf31c957258a911506ff2c76f714ef8
3
+ metadata.gz: ade4cd28437367ccc541abe72a5e55b689768a47
4
+ data.tar.gz: 15ea869f499f0e99191d615c5187716705fc3861
5
5
  SHA512:
6
- metadata.gz: 4614f07cac499f359243bc66a76c952914995a51ca834ffd0fc5f02f5f2ea2c23c298bd18e1a52b12b2dc192572fbeec4563e763f74bf177e122d08915e8909a
7
- data.tar.gz: 5c64b4b1db9f453052e9ed53b80bcb034df71d7097cdcf7950e9c405c113a424caff02a71bfe0b0bce66af27110fc2c2fa8e0683541ada4f6cdeb5f1e04aeb9c
6
+ metadata.gz: b2dc79686b00b5e1868be0fe1a0972459901675a1cf66d248f18672eaad5e548c782a3f945f28054e516a91410836d59a59f6971ca8ac6e73cade017dd7e3376
7
+ data.tar.gz: 791611cb8d76ad9b7971dfc6947735e70283537c80c48be7857fdbd2bf81a953a14b1390356fcec98da6f134f27525e4bb3538404d3d32077742a17f448ba127
@@ -0,0 +1,30 @@
1
+ pipelines:
2
+ GEM-geosparql-to-geojson:
3
+ group: Dependencies
4
+ label_template: "${COUNT}"
5
+ materials:
6
+ GEM-geosparql-to-geojson-git:
7
+ git: https://github.com/ukparliament/geosparql_to_geojson.git
8
+ branch: master
9
+ auto_update: true
10
+ stages:
11
+ - deploy:
12
+ approval: manual
13
+ jobs:
14
+ deploy:
15
+ tasks:
16
+ - exec:
17
+ run_if: passed
18
+ command: make
19
+ arguments:
20
+ - checkout_to_release
21
+ - exec:
22
+ run_if: passed
23
+ command: make
24
+ arguments:
25
+ - deploy_to_release
26
+
27
+ environments:
28
+ Web.LIVE:
29
+ pipelines:
30
+ - GEM-geosparql-to-geojson
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'geosparql_to_geojson/version'
2
4
  require 'geosparql_to_geojson/converter'
3
5
  require 'geosparql_to_geojson/geojson'
@@ -14,6 +16,6 @@ module GeosparqlToGeojson
14
16
  #
15
17
  # @return [GeosparqlToGeojson::GeoJson]
16
18
  def self.convert_to_geojson(geosparql_values: '', geosparql_properties: {}, reverse: false)
17
- GeosparqlToGeojson::Converter.new(geosparql_values, geosparql_properties, reverse).convert
19
+ GeosparqlToGeojson::Converter::BaseConverter.new(geosparql_values, geosparql_properties, reverse).convert
18
20
  end
19
21
  end
@@ -1,148 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
 
5
+ # Namespace for classes and modules that deal with converting GeoSparql to GeoJSON
6
+ #
7
+ # @since 0.1.0
3
8
  module GeosparqlToGeojson
4
- # Class to convert GeoSparql to GeoJSON data.
9
+ # Namespace for classes that convert GeoSparql to GeoJSON data.
5
10
  #
6
- # @since 0.1.0
7
- class Converter
8
- # Constant containing hash of GeoSparql types and the correctly formatted version.
9
- GEOSPARQL_TYPES = {
10
- polygon: :Polygon,
11
- point: :Point,
12
- multipoint: :MultiPoint,
13
- linestring: :LineString,
14
- multipolygon: :MultiPolygon,
15
- geometrycollection: :GeometryCollection,
16
- multiline: :Multiline
17
- }.freeze
18
-
19
- # Constant regex containing every GeoSparql data type that finds the type and the type's values.
20
- GEOMETRY_REGEX = /(#{GEOSPARQL_TYPES.values.join('|')})\(+(.*?)\)+/i
21
-
22
- # Creates a new instance of GeosparqlToGeojson::Converter
23
- #
24
- # @param [String] geosparql_data the GeoSparql data to be converted into GeoJSON.
25
- def initialize(geosparql_values, geosparql_properties, reverse)
26
- @geosparql_values = geosparql_values
27
- @geosparql_properties = geosparql_properties
28
- @reverse = reverse
29
- end
30
-
31
- # Method calls GeosparqlToGeojson::Converter#collect_geosparql_data to start converting data.
32
- #
33
- # @example Converting GeoSparql string into GeoJSON
34
- # GeosparqlToGeojson::Converter.new('Point(1.23 9.87)').convert
35
- # #=> '{
36
- # "type": "FeatureCollection",
37
- # "features": [
38
- # {
39
- # "type": "Feature",
40
- # "geometry": {
41
- # "type": "Point",
42
- # "coordinates": [
43
- # 1.23,
44
- # 9.87
45
- # ]
46
- # },
47
- # "properties": {}
48
- # }'
49
- def convert
50
- GeosparqlToGeojson::GeoJson.new(collect_geosparql_data)
51
- end
52
-
53
- private
54
-
55
- # Creates a hash of each GeoSparql type present and it's values.
56
- def collect_geosparql_data
57
- @data_store = {}
58
-
59
- if @geosparql_values.is_a?(Array)
60
- @geosparql_values.each do |value|
61
- scanned_data = value.scan(GEOMETRY_REGEX)
62
- populate_data_hash(scanned_data)
63
- end
64
- else
65
- scanned_data = @geosparql_values.scan(GEOMETRY_REGEX)
66
- populate_data_hash(scanned_data)
67
- end
68
-
69
- format_geosparql_data
70
- end
71
-
72
- # Sets the hash key to the GeoSparql type if it isn't already set and adds the GeoSparql values
73
- def populate_data_hash(scanned_geosparql_data)
74
- scanned_geosparql_data.each do |data|
75
- key = convert_key_to_correct_format(data[0])
76
- @data_store[key] = [] unless @data_store[key]
77
- @data_store[key] << data[1]
78
- end
79
- end
80
-
81
- # Converts the key that's captured by the regex into the correct format
82
- def convert_key_to_correct_format(key)
83
- key = key.downcase
84
- GEOSPARQL_TYPES[key.to_sym]
85
- end
86
-
87
- # Splits values into arrays and converts them into floats.
88
- def format_geosparql_data
89
- @data_store.keys.each do |key|
90
- @data_store[key.to_sym].map! do |values|
91
- format_data(values, key)
92
- end
93
- end
94
-
95
- generate_hash_from_values
96
- end
97
-
98
- # Formats GeoSparql data.
99
- # Will reverse the values if @reverse is set to true.
100
- #
101
- # @param [String] values the GeoSparql data to be converted into GeoJSON.
102
- # @param [Symbol] key the type of GeoSparql data
103
- #
104
- # @return [Array]
105
- def format_data(values, key)
106
- values = values.first if values.is_a?(Array)
107
- values = values.split(/[\s]|[,]/).map!(&:to_f)
108
- values.reverse! if @reverse
109
-
110
- values = values.each_slice(2).to_a if key != :Point
111
- values = [values] if key != :Point && key != :LineString
112
- values
113
- end
114
-
115
- # Created a hash from the GeoSparql values in the GeoJSON 'Feature' format.
116
- def generate_hash_from_values
117
- @data_hash_array = []
118
- @data_store.keys.each do |key|
119
- @data_store[key.to_sym].each do |data|
120
- @data_hash_array << generate_feature_hash(type: key.to_s, coordinates: data)
121
- end
122
- end
123
-
124
- generate_feature_collection
125
- end
126
-
127
- # Adds converted GeoSparql data to a GeoJSON 'feature' type.
128
- #
129
- # @return [Hash] a hash containing GeoSparql data
130
- def generate_feature_hash(data_hash)
131
- {
132
- type: 'Feature',
133
- geometry: data_hash,
134
- properties: @geosparql_properties
135
- }
136
- end
137
-
138
- # Adds GeoJSON 'feature' hash to a GeoJSON 'FeatureCollections' type.
139
- #
140
- # @return [String] a string of GeoJSON
141
- def generate_feature_collection
142
- {
143
- type: 'FeatureCollection',
144
- features: @data_hash_array
145
- }.to_json
146
- end
11
+ # @since 0.2.0
12
+ module Converter
13
+ require 'geosparql_to_geojson/converter/base_converter'
14
+ require 'geosparql_to_geojson/converter/polygon_converter'
147
15
  end
148
16
  end
@@ -0,0 +1,187 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Namespace for classes and modules that deal with converting GeoSparql to GeoJSON
4
+ #
5
+ # @since 0.1.0
6
+ module GeosparqlToGeojson
7
+ # Namespace for classes that convert GeoSparql to GeoJSON data.
8
+ #
9
+ # @since 0.2.0
10
+ module Converter
11
+ # Class to convert GeoSparql to GeoJSON data.
12
+ #
13
+ # @since 0.1.0
14
+ # @attr_reader [String] geosparql_values the GeoSPARQL values to be converted.
15
+ # @attr_reader [Hash] geosparql_properties the GeoJSON properties to be added to the converted GeoSPARQL.
16
+ # @attr_reader [Boolean] reverse whether the polygon data needs to be reversed.
17
+ class BaseConverter
18
+ attr_reader :geosparql_values, :geosparql_properties, :reverse
19
+
20
+ # Constant containing hash of GeoSparql types and the correctly formatted version.
21
+ GEOSPARQL_TYPES = {
22
+ polygon: :Polygon,
23
+ point: :Point,
24
+ multipoint: :MultiPoint,
25
+ linestring: :LineString,
26
+ multipolygon: :MultiPolygon,
27
+ geometrycollection: :GeometryCollection,
28
+ multiline: :Multiline
29
+ }.freeze
30
+
31
+ # Constant regex containing every GeoSparql data type that finds the type and the type's values.
32
+ GEOMETRY_REGEX = /(#{GEOSPARQL_TYPES.values.join('|')})?\(+(.*?)\)+/i
33
+
34
+ # Creates a new instance of GeosparqlToGeojson::Converter::BaseConverter
35
+ #
36
+ # @param [String] geosparql_values the GeoSparql data to be converted into GeoJSON.
37
+ # @param [Hash] geosparql_properties the properties to be added to the formatted GeoJSON.
38
+ # @param [Boolean] reverse the geosparql_values data.
39
+ def initialize(geosparql_values, geosparql_properties, reverse)
40
+ @geosparql_values = geosparql_values
41
+ @geosparql_properties = geosparql_properties
42
+ @reverse = reverse
43
+ end
44
+
45
+ # Method calls GeosparqlToGeojson::Converter#collect_geosparql_data to start converting data.
46
+ #
47
+ # @example Converting GeoSparql string into GeoJSON
48
+ # GeosparqlToGeojson::Converter.new('Point(1.23 9.87)').convert
49
+ # #=> '{
50
+ # "type": "FeatureCollection",
51
+ # "features": [
52
+ # {
53
+ # "type": "Feature",
54
+ # "geometry": {
55
+ # "type": "Point",
56
+ # "coordinates": [
57
+ # 1.23,
58
+ # 9.87
59
+ # ]
60
+ # },
61
+ # "properties": {}
62
+ # }'
63
+ def convert
64
+ GeosparqlToGeojson::GeoJson.new(collect_geosparql_data)
65
+ end
66
+
67
+ private
68
+
69
+ # Creates a hash of each GeoSparql type present and it's values.
70
+ #
71
+ # @return [void]
72
+ def collect_geosparql_data
73
+ @geosparql_values_by_type = {}
74
+ if geosparql_values.is_a?(Array)
75
+ geosparql_values.each do |value|
76
+ scanned_data = value.scan(GEOMETRY_REGEX)
77
+ populate_data_hash(scanned_data)
78
+ end
79
+ else
80
+ scanned_data = geosparql_values.scan(GEOMETRY_REGEX)
81
+ populate_data_hash(scanned_data)
82
+ end
83
+
84
+ format_geosparql_data
85
+ end
86
+
87
+ # Sets the hash key to the GeoSparql type if it isn't already set and add the GeoSparql values
88
+ #
89
+ # @param [Array<String>] scanned_geosparql_data the GeoSPARQL data to convert.
90
+ # @return [void]
91
+ def populate_data_hash(scanned_geosparql_data)
92
+ scanned_geosparql_data.each_with_index do |data, index|
93
+ # If the data is missing a key we use the previous data points key or fallback to using 'polygon'
94
+ data[0].nil? ? data[0] = scanned_geosparql_data[index - 1][0] : 'polygon'
95
+
96
+ key = convert_key_to_correct_format(data[0])
97
+ @geosparql_values_by_type[key] = [] unless @geosparql_values_by_type[key]
98
+ @geosparql_values_by_type[key] << data[1]
99
+ end
100
+ end
101
+
102
+ # Converts the key that's captured by the regex into the correct format.
103
+ #
104
+ # @param [String] key the GeoJSON type.
105
+ # @return [String] the formatted GeoJSON version of the key.
106
+ def convert_key_to_correct_format(key)
107
+ key = key.downcase
108
+ GEOSPARQL_TYPES[key.to_sym]
109
+ end
110
+
111
+ # Splits values into arrays and converts them into floats.
112
+ # Also calls PolygonConverter to convert any polygon data that might be present.
113
+ #
114
+ # @return [void]
115
+ def format_geosparql_data
116
+ polygons = []
117
+ @geosparql_values_by_type.each_key do |key|
118
+ if key == :Polygon
119
+ polygons << @geosparql_values_by_type[key]
120
+ else
121
+ @geosparql_values_by_type[key].map! do |values|
122
+ format_data(values, key)
123
+ end
124
+ end
125
+ end
126
+
127
+ # Updates @geosparql_values_by_type with formatted polygon data (including holes).
128
+ GeosparqlToGeojson::Converter::PolygonConverter.new(@geosparql_values_by_type, polygons).convert if polygons.any?
129
+
130
+ generate_hash_from_values
131
+ end
132
+
133
+ # Formats GeoSparql data.
134
+ # Will reverse the values if @reverse is set to true.
135
+ #
136
+ # @param [String] values the GeoSparql data to be converted into GeoJSON.
137
+ # @param [Symbol] key the type of GeoSparql data.
138
+ #
139
+ # @return [Array]
140
+ def format_data(values, key)
141
+ values = values.first if values.is_a?(Array)
142
+ values = values.split(/[\s,]+/).map!(&:to_f)
143
+ values.reverse! if reverse
144
+
145
+ values = values.each_slice(2).to_a if key != :Point
146
+ values = [values] if key != :Point && key != :LineString
147
+ values
148
+ end
149
+
150
+ # Created a hash from the GeoSparql values in the GeoJSON 'Feature' format.
151
+ #
152
+ # @return [void]
153
+ def generate_hash_from_values
154
+ @data_hash_array = []
155
+ @geosparql_values_by_type.each_key do |key|
156
+ @geosparql_values_by_type[key].each do |data|
157
+ @data_hash_array << generate_feature_hash(type: key.to_s, coordinates: data)
158
+ end
159
+ end
160
+
161
+ generate_feature_collection
162
+ end
163
+
164
+ # Adds converted GeoSparql data to a GeoJSON 'Feature' type.
165
+ #
166
+ # @param [Hash] data_hash the formatted GeoJSON data.
167
+ # @return [Hash] a hash containing GeoJSON data.
168
+ def generate_feature_hash(data_hash)
169
+ {
170
+ type: 'Feature',
171
+ geometry: data_hash,
172
+ properties: geosparql_properties
173
+ }
174
+ end
175
+
176
+ # Adds GeoJSON 'feature' hash to a GeoJSON 'FeatureCollections' type.
177
+ #
178
+ # @return [String] a string of formatted GeoJSON
179
+ def generate_feature_collection
180
+ {
181
+ type: 'FeatureCollection',
182
+ features: @data_hash_array
183
+ }.to_json
184
+ end
185
+ end
186
+ end
187
+ end
@@ -0,0 +1,204 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Namespace for classes and modules that deal with converting GeoSparql to GeoJSON
4
+ #
5
+ # @since 0.1.0
6
+ module GeosparqlToGeojson
7
+ # Namespace for classes that convert GeoSparql to GeoJSON data.
8
+ #
9
+ # @since 0.2.0
10
+ module Converter
11
+ # Class to convert polygon data and process polygon holes.
12
+ #
13
+ # @since 0.2.0
14
+ class PolygonConverter
15
+ # Creates a new instance of GeosparqlToGeojson::Converter::PolygonConverter
16
+ #
17
+ # @param [Hash] geosparql_values_by_type that contains the formatted GeoSPARQL data.
18
+ # @param [Array<String>] values the raw polygon data.
19
+ def initialize(geosparql_values_by_type, values)
20
+ @geosparql_values_by_type = geosparql_values_by_type
21
+ @values = values.flatten
22
+ @polygons = []
23
+ @holes = []
24
+ @formatted_polygon_array = []
25
+ end
26
+
27
+ # Converts polygon data into the correct format and adds it to @geosparql_values_by_type.
28
+ #
29
+ # @return [Hash] the converted andf formatted polygon data.
30
+ def convert
31
+ format_data
32
+
33
+ if @holes.any?
34
+ match_holes_to_polygons
35
+ format_polygons_with_holes
36
+ end
37
+
38
+ format_polygons_without_holes
39
+ add_formatted_polygons_to_data_hash
40
+ end
41
+
42
+ private
43
+
44
+ # Splits polygon value strings by GeoSparql syntax, strips whitespace and converts values to floats.
45
+ #
46
+ # @return [void]
47
+ def format_data
48
+ @values.map! do |values_string|
49
+ values_string.split(/\),?\s*\(/).map! do |values|
50
+ values = values.split(',').map(&:strip)
51
+ values.map! { |value| value.split(/\s/).map(&:to_f) }
52
+ end
53
+ end
54
+
55
+ split_into_polygons_and_holes
56
+ end
57
+
58
+ # Adds polygons and holes from @values to @polygons and @holes.
59
+ #
60
+ # @return [Array] @holes
61
+ # @return [Array] @polygons
62
+ def split_into_polygons_and_holes
63
+ @values.each do |value_array|
64
+ value_array.each do |values|
65
+ if hole?(values)
66
+ @holes << values
67
+ else
68
+ @polygons << values
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ # Checks whether a polygon is a hole.
75
+ # Uses the shoelace formula.
76
+ #
77
+ # @param [Array] values the polygon values.
78
+ # @return [Boolean]
79
+ def hole?(values)
80
+ results = []
81
+ count = values.size
82
+ values.each_with_index do |_value, index|
83
+ current = values[index]
84
+ next_value = values[index + 1]
85
+
86
+ if index < count - 1
87
+ results << (next_value[0] - current[0]) * (next_value[1] + current[1])
88
+ end
89
+ end
90
+ results.compact!
91
+ return true if results.sum.negative?
92
+ false
93
+ end
94
+
95
+ # Generates a hash containing the indexes of polygons and the holes within them.
96
+ #
97
+ # @return [void]
98
+ def match_holes_to_polygons
99
+ @matches = {}
100
+ @polygons.each_with_index do |polygon, polygon_index|
101
+ set_min_and_max_axis(polygon)
102
+
103
+ @holes.each_with_index do |hole, hole_index|
104
+ set_min_and_max_axis(hole)
105
+
106
+ # @note This method of building a border box around the polygon and checking
107
+ # to see whether the min and max values of the hole fit within it
108
+ # will work since we already know it is a hole. Otherwise we would need a more accurate solution.
109
+ if @x_min[1] > @x_min[0] && @x_max[1] < @x_max[0] && @y_min[1] > @y_min[0] && @y_max[1] < @y_max[0]
110
+ @matches[polygon_index] ||= []
111
+ @matches[polygon_index].push(hole_index)
112
+ end
113
+
114
+ set_min_and_max_to_first_value
115
+ end
116
+
117
+ reset_min_and_max_instance_variables
118
+ end
119
+ end
120
+
121
+ # Sets the minumum and maximum values of a polygon's X and Y axis.
122
+ #
123
+ # @param [Array<Float>] values the x and y values for each point on the polygon.
124
+ # @return [void]
125
+ def set_min_and_max_axis(values)
126
+ x_axis = []
127
+ y_axis = []
128
+ @x_min ||= []
129
+ @x_max ||= []
130
+ @y_min ||= []
131
+ @y_max ||= []
132
+
133
+ values.each do |value|
134
+ x_axis << value[0]
135
+ y_axis << value[1]
136
+ end
137
+
138
+ @x_min << x_axis.min
139
+ @x_max << x_axis.max
140
+ @y_min << y_axis.min
141
+ @y_max << y_axis.max
142
+ end
143
+
144
+ # Sets minimum and maximum X and Y axis variables to an array containing their first value.
145
+ #
146
+ # @return [void]
147
+ def set_min_and_max_to_first_value
148
+ @x_min = [@x_min.first]
149
+ @x_max = [@x_max.first]
150
+ @y_min = [@y_min.first]
151
+ @y_max = [@y_max.first]
152
+ end
153
+
154
+ # Sets minimum and maximum X and Y axis variables to nil.
155
+ #
156
+ # @return [void]
157
+ def reset_min_and_max_instance_variables
158
+ @x_min = nil
159
+ @y_min = nil
160
+ @x_max = nil
161
+ @y_max = nil
162
+ end
163
+
164
+ # Adds an array of a polygon and the holes that match the polygon to @formatted_polygon_array.
165
+ #
166
+ # @return [void]
167
+ def format_polygons_with_holes
168
+ @matches.each do |key, values|
169
+ polygon_with_holes = [@polygons[key]]
170
+
171
+ values.each do |value|
172
+ polygon_with_holes << @holes[value]
173
+ end
174
+
175
+ @formatted_polygon_array << polygon_with_holes
176
+ end
177
+ end
178
+
179
+ # Adds polygons that don't have holes to @formatted_polygon_array.
180
+ #
181
+ # @return [void]
182
+ def format_polygons_without_holes
183
+ remove_polygons_with_holes if @matches
184
+
185
+ @polygons.each { |polygon| @formatted_polygon_array << [polygon] }
186
+ end
187
+
188
+ # Deletes polygons that contain holes from @polygons.
189
+ #
190
+ # @return [void]
191
+ def remove_polygons_with_holes
192
+ # Need to reverse the keys so that the @polygon index doesn't change before we call #delete_at.
193
+ @matches.keys.reverse.each { |key| @polygons.delete_at(key) }
194
+ end
195
+
196
+ # Adds the populated @formatted_polygon_array to @geosparql_values_by_type
197
+ #
198
+ # @return [Hash] @geosparql_values_by_type the 'Polygon' type with it's values.
199
+ def add_formatted_polygons_to_data_hash
200
+ @geosparql_values_by_type[:Polygon] = @formatted_polygon_array
201
+ end
202
+ end
203
+ end
204
+ end
@@ -1,3 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Namespace for classes and modules that deal with converting GeoSparql to GeoJSON
4
+ # @since 0.1.0
1
5
  module GeosparqlToGeojson
2
6
  # GeoJSON object
3
7
  #
@@ -1,10 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json-schema'
2
4
 
5
+ # Namespace for classes and modules that deal with converting GeoSparql to GeoJSON
6
+ #
7
+ # @since 0.1.0
3
8
  module GeosparqlToGeojson
4
9
  # Class used to validate GeoJSON
5
10
  # @since 0.1.0
6
11
  class GeojsonValidator
7
- # Creates a new instance of GeosparqlToGeojson::GeojsonValidator
12
+ # Creates a new instance of GeosparqlToGeojson::GeojsonValidator.
8
13
  #
9
14
  # @param [String] geojson the GeoJSON data to be validated
10
15
  def initialize(geojson)
@@ -12,14 +17,14 @@ module GeosparqlToGeojson
12
17
  @schema = JSON.parse(File.read(File.expand_path('../schema/geojson.json', __FILE__)))
13
18
  end
14
19
 
15
- # Validates GeoJSON data based on JSON and GroJSON schemas
20
+ # Validates GeoJSON data based on JSON and GroJSON schemas.
16
21
  #
17
22
  # @return [Array] any errors with the JSON
18
23
  def errors
19
24
  JSON::Validator.fully_validate(@schema, @geojson)
20
25
  end
21
26
 
22
- # Checks whether there are any errors returned by the validator
27
+ # Checks whether there are any errors returned by the validator.
23
28
  #
24
29
  # @return [true, false]
25
30
  def valid?
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Namespace for classes and modules that deal with converting GeoSparql to GeoJSON
4
+ #
5
+ # @since 0.1.0
1
6
  module GeosparqlToGeojson
2
- VERSION = '0.1.3'
7
+ VERSION = '0.2.0'
3
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geosparql_to_geojson
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Callum Neve-Jones
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-17 00:00:00.000000000 Z
11
+ date: 2017-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-schema
@@ -100,8 +100,11 @@ files:
100
100
  - bin/console
101
101
  - bin/setup
102
102
  - geosparql_to_geojson.gemspec
103
+ - gocd/web1live.yaml
103
104
  - lib/geosparql_to_geojson.rb
104
105
  - lib/geosparql_to_geojson/converter.rb
106
+ - lib/geosparql_to_geojson/converter/base_converter.rb
107
+ - lib/geosparql_to_geojson/converter/polygon_converter.rb
105
108
  - lib/geosparql_to_geojson/geojson.rb
106
109
  - lib/geosparql_to_geojson/geojson_validator.rb
107
110
  - lib/geosparql_to_geojson/schema/geojson.json