enrichment_db 0.0.2 → 0.1.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: c7ccbfb96d0dc4cdf6ceade53cccc685e42eaf1a
4
- data.tar.gz: 0a249c64cd2589fd4278d97b639114105de26679
3
+ metadata.gz: f741a0f881ad8ee9b09cd3a4efc4c92b98fcbeeb
4
+ data.tar.gz: 06ec8db95c457f3a0b763c4b672d7a16cc8d9f19
5
5
  SHA512:
6
- metadata.gz: b028c33bc5ca46541d56e87d87776872c7c018c1b038214f256af48a81c7b991dc91559f7db7aea58206f671f7490435edeccfc413b0115999ba0df911455c0d
7
- data.tar.gz: b1461d84cff0e235baf28ccb08eeb66e73d0b428354c0031c182631cc61f587d1a07bf32525d4b482eda6e754ad9a68aadbebe2756bcf6cd0c3b1a89802d974b
6
+ metadata.gz: ee73180341e7549eaa97191a8eaaf5250498cec035de6b258845c5c137f6f23814ddd954158b78fa50a360a0e3296c79328ba1e490ae8c2966cb069d1e28eaff
7
+ data.tar.gz: 796c37fdd9cae746ad9d662448c880a204ec3e4ed4f633a9f95a5f192097fbf717eede39d2fa2e033a4a21275fa0f1ef23a90d56d65dbd90cb44c9a9601db26c
Binary file
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ group :development, :test do
6
+ gem 'rake'
7
+ gem 'minitest'
8
+ gem 'minitest-reporters'
9
+ gem 'webmock'
10
+ gem 'faker'
11
+ gem 'factory_girl'
12
+ end
13
+
14
+ gemspec
@@ -0,0 +1,58 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ enrichment_db (0.0.1)
5
+ multi_json (~> 1.3)
6
+ pg
7
+ pr_geohash
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activesupport (4.2.3)
13
+ i18n (~> 0.7)
14
+ json (~> 1.7, >= 1.7.7)
15
+ minitest (~> 5.1)
16
+ thread_safe (~> 0.3, >= 0.3.4)
17
+ tzinfo (~> 1.1)
18
+ addressable (2.3.8)
19
+ ansi (1.5.0)
20
+ builder (3.2.2)
21
+ crack (0.4.2)
22
+ safe_yaml (~> 1.0.0)
23
+ factory_girl (4.5.0)
24
+ activesupport (>= 3.0.0)
25
+ faker (1.5.0)
26
+ i18n (~> 0.5)
27
+ i18n (0.7.0)
28
+ json (1.8.3)
29
+ minitest (5.7.0)
30
+ minitest-reporters (1.0.17)
31
+ ansi
32
+ builder
33
+ minitest (>= 5.0)
34
+ ruby-progressbar
35
+ multi_json (1.11.2)
36
+ pg (0.18.2)
37
+ pr_geohash (1.0.0)
38
+ rake (10.4.2)
39
+ ruby-progressbar (1.7.5)
40
+ safe_yaml (1.0.4)
41
+ thread_safe (0.3.5)
42
+ tzinfo (1.2.2)
43
+ thread_safe (~> 0.1)
44
+ webmock (1.21.0)
45
+ addressable (>= 2.3.6)
46
+ crack (>= 0.3.2)
47
+
48
+ PLATFORMS
49
+ ruby
50
+
51
+ DEPENDENCIES
52
+ enrichment_db!
53
+ factory_girl
54
+ faker
55
+ minitest
56
+ minitest-reporters
57
+ rake
58
+ webmock
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2015 Lexer
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+ require 'bundler'
3
+ require 'rake'
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ t.libs.push 'spec'
9
+ end
10
+
11
+ task default: [:test]
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'enrichment_db/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'enrichment_db'
7
+ s.version = EnrichmentDb::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.licenses = ['MIT']
10
+ s.authors = ['Aaron Wallis']
11
+ s.email = 'code@Lexer.io'
12
+ s.homepage = 'https://github.com/lexerdev/enrichment-db.gem'
13
+ s.summary = 'Lexer Enrichment Database Gem'
14
+ s.description = 'Consume static data from the Lexer Enrichment database.'
15
+
16
+ s.add_dependency 'multi_json', '~> 1.3'
17
+ s.add_dependency 'pg'
18
+ s.add_dependency 'pr_geohash'
19
+
20
+ s.files = `git ls-files`.split($RS).reject do |file|
21
+ file =~ %r{^(?:
22
+ spec/.*
23
+ |Gemfile
24
+ |Rakefile
25
+ |\.gitignore
26
+ |\.rubocop.yml
27
+ )$}x
28
+ end
29
+ s.test_files = `git ls-files`.split($RS)
30
+ s.require_paths = ['lib']
31
+ end
@@ -0,0 +1,38 @@
1
+ require 'enrichment_db/error'
2
+ require 'enrichment_db/version'
3
+
4
+ module EnrichmentDb
5
+ module_function
6
+
7
+ class DatumModel
8
+ attr_accessor :attrs
9
+ alias :to_hash :attrs
10
+
11
+ # Define methods that retrieve the value from an initialized instance variable Hash, using the attribute as a key
12
+ #
13
+ # @overload self.lazy_attr_reader(attr)
14
+ # @param attr [Symbol]
15
+ # @overload self.lazy_attr_reader(attrs)
16
+ # @param attrs [Array<Symbol>]
17
+ def self.lazy_attr_reader(*attrs)
18
+ attrs.each do |attribute|
19
+ class_eval do
20
+ define_method attribute do
21
+ @attrs[attribute.to_s] || @attrs[attribute.to_sym]
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ # Initializes a new Base object
28
+ #
29
+ # @param attrs [Hash]
30
+ # @return [DatumModel]
31
+ def initialize(attrs={})
32
+ @attrs = attrs.dup
33
+ end
34
+ end
35
+ end
36
+
37
+ require 'enrichment_db/geo'
38
+ require 'db'
@@ -0,0 +1,40 @@
1
+ require 'pg'
2
+
3
+ module EnrichmentDb
4
+ def self.db_connection
5
+ @__db_connection ||= PGconn.connect(
6
+ host:'geo-mappings.cfmmyp7uix0j.ap-southeast-2.rds.amazonaws.com',
7
+ dbname:'geo',
8
+ user: 'lexer',
9
+ password: 'campl3x3r'
10
+ )
11
+ end
12
+
13
+ def self.reset_connection
14
+ @__api_connection = nil
15
+ end
16
+
17
+ def self.request(query, values)
18
+ type = request_type(query)
19
+
20
+ case type
21
+ when :select, 'select'
22
+ result = if values
23
+ EnrichmentDb::db_connection.exec(query, values)
24
+ else
25
+ EnrichmentDb::db_connection.exec(query)
26
+ end
27
+ when :insert, :drop, :delete, 'insert', 'drop', 'delete'
28
+ fail EnrichmentDb::RequestError, "Postgres method '#{type}' is unsupported"
29
+ else
30
+ fail EnrichmentDb::RequestError, "Postgres query '#{query}' is unsupported"
31
+ end
32
+ end
33
+
34
+ def self.request_type(query)
35
+ result = query.downcase.match(/(^(?:drop|select|insert|delete))/)
36
+ return unless result
37
+
38
+ result[0]
39
+ end
40
+ end
@@ -0,0 +1,7 @@
1
+ module EnrichmentDb
2
+ Error = Class.new(StandardError)
3
+
4
+ RequestError = Class.new(Error)
5
+ InvalidObject = Class.new(Error)
6
+ InvalidFormat = Class.new(Error)
7
+ end
@@ -0,0 +1,14 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
2
+
3
+ module EnrichmentDb::Geo
4
+ end
5
+
6
+ require 'geo/region'
7
+ require 'geo/locator'
8
+ require 'geo/postcode'
9
+ require 'geo/sa1'
10
+ require 'geo/sa2'
11
+ require 'geo/sa3'
12
+ require 'geo/sa4'
13
+ require 'geo/state'
14
+ require 'geo/suburb'
@@ -0,0 +1,102 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
2
+
3
+ require 'geo/postcode'
4
+ require 'geo/sa1'
5
+ require 'geo/sa2'
6
+ require 'geo/sa3'
7
+ require 'geo/sa4'
8
+ require 'geo/state'
9
+ require 'geo/suburb'
10
+
11
+ require 'pr_geohash'
12
+
13
+ class EnrichmentDb::Geo::Locator < EnrichmentDb::DatumModel
14
+ attr_reader :id
15
+ attr_reader :name
16
+ attr_reader :state
17
+ attr_reader :sa4
18
+ attr_reader :sa3
19
+ attr_reader :sa2
20
+ attr_reader :sa1
21
+ attr_reader :postcode
22
+ attr_reader :suburb
23
+ attr_reader :smallest_region
24
+
25
+ def initialize(data)
26
+ self.class.all_regions.each do |region|
27
+ region_name = region.object_type
28
+ region_data = data[region_name]
29
+ region_instance = !!region_data ? region.new(region_data) : nil
30
+ instance_variable_set("@#{region_name}", region_instance)
31
+
32
+ if data['smallest_region'] == region_name
33
+ @id = region_data['id']
34
+ @name = region_data['name']
35
+ @smallest_region = region_name
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.geo_locate(geohash)
41
+ geohash = format_geo(geohash)
42
+ values = [geohash]
43
+
44
+ data = {}
45
+ all_regions.each do |region|
46
+ region_name = region.object_type
47
+ region_id = find_id(data, region_name)
48
+
49
+ result = if !region_id.nil?
50
+ region.by_id(region_id)
51
+ else
52
+ region.by_boundary(values)
53
+ end
54
+ data['smallest_region'] ||= region_name if !result.nil?
55
+ data[region_name] = result
56
+ end
57
+ self.new(data)
58
+ end
59
+
60
+ def self.find_id(data, region_type)
61
+ id = "#{region_type}_id"
62
+ data.each do |k, v|
63
+ return v[id] if v.is_a?(Hash) && v.keys.include?(id)
64
+ end
65
+ nil
66
+ end
67
+
68
+ def self.all_regions
69
+ all_region_names.collect do |region|
70
+ EnrichmentDb::Geo.const_get(region)
71
+ end.sort_by do |region|
72
+ region.scale
73
+ end
74
+ end
75
+
76
+ def self.all_region_names
77
+ EnrichmentDb::Geo.constants - [:Region, :Locator]
78
+ end
79
+
80
+ def self.format_geo(geo)
81
+ return geo if geo.is_a?(String)
82
+
83
+ fail EnrichmentDb::InvalidFormat unless valid_geo_point?(geo)
84
+ geo[:lat] ||= geo['lat']
85
+ geo[:long] ||= geo['long']
86
+ GeoHash.encode(geo[:lat], geo[:long])
87
+ end
88
+
89
+ def self.valid_geo_point?(geo_point)
90
+ geo_point.is_a?(Hash) && geo_point.keys.sort.collect(&:to_sym) == [:lat, :long]
91
+ end
92
+
93
+ private
94
+
95
+ def self.object_type
96
+ to_s.split(':').last.downcase.to_sym
97
+ end
98
+
99
+ def self.make_table_name(object_name)
100
+ "#{object_name}s"
101
+ end
102
+ end
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
2
+ require 'sa3'
3
+
4
+ class EnrichmentDb::Geo::Postcode < EnrichmentDb::Geo::Region
5
+ def self.fields
6
+ 'id, sa3_id, sa4_id, state_id'
7
+ end
8
+
9
+ def self.scale
10
+ 13
11
+ end
12
+
13
+ def self.parent_class
14
+ EnrichmentDb::Geo::SA3
15
+ end
16
+ end
@@ -0,0 +1,52 @@
1
+ class EnrichmentDb::Geo::Region < EnrichmentDb::DatumModel
2
+ attr_reader :id
3
+ attr_reader :name
4
+
5
+ def initialize(data)
6
+ @id = data['id']
7
+ @name = data['name']
8
+ end
9
+
10
+ def self.by_id(id)
11
+ puts "Finding #{object_type} with id = '#{id}'."
12
+ field_names = fields
13
+ table = make_table_name
14
+ query = "SELECT #{field_names} FROM #{table} where id = $1"
15
+ values = [id]
16
+
17
+ result = EnrichmentDb.request(query, values)
18
+ if result.ntuples == 1
19
+ puts "Found #{object_type}"
20
+ result[0]
21
+ else
22
+ puts "Nothing found"
23
+ nil
24
+ end
25
+ end
26
+
27
+ def self.by_boundary(values)
28
+ puts "Finding #{object_type} intersecting with some geohash"
29
+ field_names = fields
30
+ table = make_table_name
31
+ query = "SELECT #{field_names} FROM #{table} where ST_Within(ST_SetSRID(ST_GeomFromGeoHash($1), 4283), boundary)"
32
+
33
+ result = EnrichmentDb.request(query, values)
34
+ if result.ntuples == 1
35
+ puts "Found #{object_type}"
36
+ result[0]
37
+ else
38
+ puts "Nothing found"
39
+ nil
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def self.object_type
46
+ to_s.split(':').last.downcase.to_sym
47
+ end
48
+
49
+ def self.make_table_name
50
+ "#{object_type}s"
51
+ end
52
+ end
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
2
+ require 'sa2'
3
+
4
+ class EnrichmentDb::Geo::SA1 < EnrichmentDb::Geo::Region
5
+ def self.fields
6
+ 'id, state_id, sa4_id, sa3_id, sa2_id'
7
+ end
8
+
9
+ def self.scale
10
+ 10
11
+ end
12
+
13
+ def self.parent_class
14
+ EnrichmentDb::Geo::SA2
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
2
+ require 'sa3'
3
+
4
+ class EnrichmentDb::Geo::SA2 < EnrichmentDb::Geo::Region
5
+ def self.fields
6
+ 'id, name, state_id, sa4_id, sa3_id'
7
+ end
8
+
9
+ def self.scale
10
+ 11
11
+ end
12
+
13
+ def self.parent_class
14
+ EnrichmentDb::Geo::SA3
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
2
+ require 'sa4'
3
+
4
+ class EnrichmentDb::Geo::SA3 < EnrichmentDb::Geo::Region
5
+ def self.fields
6
+ 'id, name, state_id, sa4_id'
7
+ end
8
+
9
+ def self.scale
10
+ 14
11
+ end
12
+
13
+ def self.parent_class
14
+ EnrichmentDb::Geo::SA4
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
2
+ require 'state'
3
+
4
+ class EnrichmentDb::Geo::SA4 < EnrichmentDb::Geo::Region
5
+ def self.fields
6
+ 'id, name, state_id'
7
+ end
8
+
9
+ def self.scale
10
+ 15
11
+ end
12
+
13
+ def self.parent_class
14
+ EnrichmentDb::Geo::State
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ class EnrichmentDb::Geo::State < EnrichmentDb::Geo::Region
2
+ def self.fields
3
+ 'id, name'
4
+ end
5
+
6
+ def self.scale
7
+ 16
8
+ end
9
+
10
+ def self.parent_class
11
+ EnrichmentDb::Geo::Region
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class EnrichmentDb::Geo::Suburb < EnrichmentDb::Geo::Region
2
+ def self.fields
3
+ 'id, name, postcode_id, sa3_id, sa4_id, state_id'
4
+ end
5
+
6
+ def self.scale
7
+ 12
8
+ end
9
+
10
+ def self.parent_class
11
+ EnrichmentDb::Geo::Postcode
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ module EnrichmentDb
2
+ VERSION = "0.1.0"
3
+ end
Binary file
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory :postcode, class:Hash do
3
+ id { Faker::Address::postcode }
4
+
5
+ initialize_with { attributes }
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory :sa1, class:Hash do
3
+ id { Faker::Number.number(9).to_i }
4
+
5
+ initialize_with { attributes }
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :sa2, class:Hash do
3
+ id { Faker::Number.number(9).to_i }
4
+ name { Faker::Address.city }
5
+
6
+ initialize_with { attributes }
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :sa3, class:Hash do
3
+ id { Faker::Number.number(6).to_i }
4
+ name { Faker::Address.city }
5
+
6
+ initialize_with { attributes }
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :sa4, class:Hash do
3
+ id { Faker::Number.number(3).to_i }
4
+ name { Faker::Address.city }
5
+
6
+ initialize_with { attributes }
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :state, class:Hash do
3
+ id { Faker::Number.number(1).to_i }
4
+ name { Faker::Address.city }
5
+
6
+ initialize_with { attributes }
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :suburb, class:Hash do
3
+ id { Faker::Number.number(5).to_i }
4
+ name { Faker::Address.city }
5
+
6
+ initialize_with { attributes }
7
+ end
8
+ end
@@ -0,0 +1,41 @@
1
+ require "#{File.dirname(__FILE__)}/../test_helper"
2
+
3
+ describe EnrichmentDb::Geo::Locator do
4
+ it 'should find id from a hash of hashes' do
5
+ id = 2
6
+ data = { 'c' => { 'id' => 1, 'b_id' => id }, 'b' => { 'id' => 3 } }
7
+ region_type = 'b'
8
+ result = EnrichmentDb::Geo::Locator.find_id(data, region_type)
9
+ assert_equal id, result
10
+ end
11
+
12
+ it 'should correctly format a has to a latlong' do
13
+ lat = 10
14
+ long = 180
15
+ lat_long = { 'lat' => lat, 'long' => long }
16
+ geohash = EnrichmentDb::Geo::Locator.format_geo(lat_long)
17
+ assert_equal 'xczbzurypzpg', geohash
18
+ end
19
+
20
+ it 'should break as the lat long format is incorrect' do
21
+ lat = 10
22
+ long = 180
23
+ lat_long = { 'lat' => lat, 'lon' => long }
24
+ begin
25
+ EnrichmentDb::Geo::Locator.format_geo(lat_long)
26
+ rescue EnrichmentDb::InvalidFormat => e
27
+
28
+ else
29
+ flunk('This should have errored out.')
30
+ end
31
+ end
32
+
33
+ it 'should ' do
34
+ geo = 'r1r0g2e'
35
+ result = EnrichmentDb::Geo::Locator.geo_locate(geo)
36
+ puts result.smallest_region.inspect
37
+ puts result.name.inspect
38
+ puts result.inspect
39
+ end
40
+
41
+ end
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <testsuite name="EnrichmentDb::Geo::Locator" skipped="0" failures="0" errors="0" tests="4" assertions="2" time="6.202437521191314">
3
+ <testcase name="test_0004_should " classname="EnrichmentDb::Geo::Locator" assertions="0" time="6.202266245032661">
4
+ </testcase>
5
+ <testcase name="test_0003_should break as the lat long format is incorrect" classname="EnrichmentDb::Geo::Locator" assertions="0" time="6.976805161684752e-05">
6
+ </testcase>
7
+ <testcase name="test_0002_should correctly format a has to a latlong" classname="EnrichmentDb::Geo::Locator" assertions="1" time="8.18880507722497e-05">
8
+ </testcase>
9
+ <testcase name="test_0001_should find id from a hash of hashes" classname="EnrichmentDb::Geo::Locator" assertions="1" time="1.962005626410246e-05">
10
+ </testcase>
11
+ </testsuite>
@@ -0,0 +1,23 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'minitest/autorun'
4
+ require 'minitest/reporters'
5
+ require 'minitest/spec'
6
+ require 'webmock/minitest'
7
+ require 'faker'
8
+ require 'factory_girl'
9
+
10
+ MiniTest::Reporters.use! [Minitest::Reporters::SpecReporter.new, MiniTest::Reporters::JUnitReporter.new]
11
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'enrichment_db')
12
+ FactoryGirl.find_definitions
13
+
14
+ $should_stub = true
15
+ if $should_stub
16
+ WebMock.disable_net_connect!
17
+ else
18
+ WebMock.allow_net_connect!
19
+ end
20
+
21
+ def stub_get(path)
22
+ WebMock::API.stub_http_request(:get, request_path(path))
23
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enrichment_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Wallis
@@ -58,7 +58,39 @@ executables: []
58
58
  extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
+ - ".DS_Store"
62
+ - Gemfile
63
+ - Gemfile.lock
64
+ - LICENSE
61
65
  - README.md
66
+ - Rakefile
67
+ - enrichment_db.gemspec
68
+ - lib/enrichment_db.rb
69
+ - lib/enrichment_db/.DS_Store
70
+ - lib/enrichment_db/db.rb
71
+ - lib/enrichment_db/error.rb
72
+ - lib/enrichment_db/geo.rb
73
+ - lib/enrichment_db/geo/locator.rb
74
+ - lib/enrichment_db/geo/postcode.rb
75
+ - lib/enrichment_db/geo/region.rb
76
+ - lib/enrichment_db/geo/sa1.rb
77
+ - lib/enrichment_db/geo/sa2.rb
78
+ - lib/enrichment_db/geo/sa3.rb
79
+ - lib/enrichment_db/geo/sa4.rb
80
+ - lib/enrichment_db/geo/state.rb
81
+ - lib/enrichment_db/geo/suburb.rb
82
+ - lib/enrichment_db/version.rb
83
+ - test/.DS_Store
84
+ - test/factories/postcode.rb
85
+ - test/factories/sa1.rb
86
+ - test/factories/sa2.rb
87
+ - test/factories/sa3.rb
88
+ - test/factories/sa4.rb
89
+ - test/factories/state.rb
90
+ - test/factories/suburb.rb
91
+ - test/geo/locator_test.rb
92
+ - test/reports/TEST-EnrichmentDb-Geo-Locator.xml
93
+ - test/test_helper.rb
62
94
  homepage: https://github.com/lexerdev/enrichment-db.gem
63
95
  licenses:
64
96
  - MIT
@@ -84,4 +116,37 @@ signing_key:
84
116
  specification_version: 4
85
117
  summary: Lexer Enrichment Database Gem
86
118
  test_files:
119
+ - ".DS_Store"
120
+ - Gemfile
121
+ - Gemfile.lock
122
+ - LICENSE
87
123
  - README.md
124
+ - Rakefile
125
+ - enrichment_db.gemspec
126
+ - lib/enrichment_db.rb
127
+ - lib/enrichment_db/.DS_Store
128
+ - lib/enrichment_db/db.rb
129
+ - lib/enrichment_db/error.rb
130
+ - lib/enrichment_db/geo.rb
131
+ - lib/enrichment_db/geo/locator.rb
132
+ - lib/enrichment_db/geo/postcode.rb
133
+ - lib/enrichment_db/geo/region.rb
134
+ - lib/enrichment_db/geo/sa1.rb
135
+ - lib/enrichment_db/geo/sa2.rb
136
+ - lib/enrichment_db/geo/sa3.rb
137
+ - lib/enrichment_db/geo/sa4.rb
138
+ - lib/enrichment_db/geo/state.rb
139
+ - lib/enrichment_db/geo/suburb.rb
140
+ - lib/enrichment_db/version.rb
141
+ - test/.DS_Store
142
+ - test/factories/postcode.rb
143
+ - test/factories/sa1.rb
144
+ - test/factories/sa2.rb
145
+ - test/factories/sa3.rb
146
+ - test/factories/sa4.rb
147
+ - test/factories/state.rb
148
+ - test/factories/suburb.rb
149
+ - test/geo/locator_test.rb
150
+ - test/reports/TEST-EnrichmentDb-Geo-Locator.xml
151
+ - test/test_helper.rb
152
+ has_rdoc: