Skip to content

Commit 1c08e27

Browse files
committed
Switch back to Open Struct.
1 parent 89bfa1c commit 1c08e27

File tree

5 files changed

+14
-11
lines changed

5 files changed

+14
-11
lines changed

lib/spatial_features/importers/geo_json.rb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
require 'ostruct'
12
require 'digest/md5'
23

34
module SpatialFeatures
@@ -15,11 +16,11 @@ def each_record(&block)
1516

1617
metadata = record['properties'] || {}
1718
name = metadata.delete('name')
18-
yield Struct.new(:feature_type, :geog, :name, :metadata).new(
19-
record['geometry']['type'],
20-
SpatialFeatures::Utils.geom_from_json(record['geometry']),
21-
name,
22-
metadata
19+
yield OpenStruct.new(
20+
:feature_type => record['geometry']['type'],
21+
:geog => SpatialFeatures::Utils.geom_from_json(record['geometry']),
22+
:name => name,
23+
:metadata => metadata
2324
)
2425
end
2526
end

lib/spatial_features/importers/kml.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
require 'ostruct'
12

23
module SpatialFeatures
34
module Importers
@@ -35,7 +36,7 @@ def each_record(&block)
3536

3637
importable_image_paths = images_from_metadata(metadata)
3738

38-
yield Struct.new(:geog, :name, :metadata, :importable_image_paths).new(geog, name, metadata, importable_image_paths)
39+
yield OpenStruct.new(:geog => geog, :name => name, :metadata => metadata, :importable_image_paths => importable_image_paths)
3940
end
4041
end
4142
end

lib/spatial_features/importers/shapefile.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
require 'ostruct'
12
require 'digest/md5'
23

34
module SpatialFeatures
@@ -29,10 +30,7 @@ def self.create_all(data, **options)
2930
def each_record
3031
open_shapefile(archive) do |records, proj4|
3132
records.each do |record|
32-
if record.geometry.present?
33-
data = data_from_record(record, proj4)
34-
yield Struct.new(:geog, :metadata).new(data[:geog], data[:metadata])
35-
end
33+
yield OpenStruct.new(data_from_record(record, proj4)) if record.geometry.present?
3634
end
3735
end
3836
rescue Errno::ENOENT => e

lib/spatial_features/venn_polygons.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
require 'ostruct'
2+
13
module SpatialFeatures
24
# Splits overlapping features into separate polygons at their areas of overlap, and returns an array of objects
35
# with kml for the overlapping area and a list of the record ids whose kml overlapped within that area
@@ -57,7 +59,7 @@ def self.venn_polygons(*scopes)
5759
polygons.group_by{|row| row['kml']}.collect do |kml, rows|
5860
# Uniq on row id in case a single record had self intersecting multi geometry, which would cause it to appear duplicated on a single venn polygon
5961
records = rows.uniq {|row| row.values_at('id', 'type') }.collect{|row| eager_load_hash.fetch(row['type']).detect{|record| record.id == row['id'].to_i } }
60-
Struct.new(:kml, :records).new(kml, records)
62+
OpenStruct.new(:kml => kml, :records => records)
6163
end
6264
end
6365
end

spatial_features.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
2323
s.add_runtime_dependency "rgeo-geojson", '>= 2.1.1'
2424
s.add_runtime_dependency "rubyzip", "~> 3.0"
2525
s.add_runtime_dependency "nokogiri"
26+
s.add_runtime_dependency "ostruct"
2627

2728
s.add_development_dependency "rails", '>= 7', '< 9'
2829
s.add_development_dependency "pg", '~> 1'

0 commit comments

Comments
 (0)