open_data_addresses 0.1.3
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 +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +42 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/addresses/newyorkcity_legally_operating_businesses.csv +46444 -0
- data/lib/addresses/sanfrancisco_registered_business_locations.csv +99273 -0
- data/lib/open_data_addresses/version.rb +3 -0
- data/lib/open_data_addresses.rb +68 -0
- data/open_data_addresses.gemspec +34 -0
- metadata +103 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
require "open_data_addresses/version"
|
2
|
+
|
3
|
+
module OpenDataAddresses
|
4
|
+
def self.address(city='SF')
|
5
|
+
address = ''
|
6
|
+
csv = get_csv(city);
|
7
|
+
address_line = rand(2..csv[:lines])
|
8
|
+
|
9
|
+
line_num = 1
|
10
|
+
IO.foreach(csv[:file]) do |line|
|
11
|
+
line_num += 1
|
12
|
+
next unless line_num == address_line
|
13
|
+
address = line.strip
|
14
|
+
break
|
15
|
+
end
|
16
|
+
|
17
|
+
format_address(address)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.addresses(amount=10, city='SF')
|
21
|
+
addresses = []
|
22
|
+
csv = get_csv(city)
|
23
|
+
address_lines = uniq_rand_nums(amount, 2, csv[:lines]).sort
|
24
|
+
|
25
|
+
address_line = address_lines.shift
|
26
|
+
line_num = 1
|
27
|
+
IO.foreach(csv[:file]) do |line|
|
28
|
+
line_num += 1
|
29
|
+
if line_num == address_line
|
30
|
+
addresses << line.strip
|
31
|
+
address_line = address_lines.shift
|
32
|
+
end
|
33
|
+
break if addresses.length == amount
|
34
|
+
end
|
35
|
+
|
36
|
+
addresses.map { |address| format_address(address) }
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def self.format_address(string)
|
42
|
+
ary = string.split(',')
|
43
|
+
{ street: ary[0], city: ary[1], state: ary[2], zip: ary[3] }
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.get_csv(city)
|
47
|
+
files = {
|
48
|
+
'SF' => "#{File.dirname(__FILE__)}/addresses/sanfrancisco_registered_business_locations.csv",
|
49
|
+
'NYC' => "#{File.dirname(__FILE__)}/addresses/newyorkcity_legally_operating_businesses.csv"
|
50
|
+
}
|
51
|
+
lines = File.open(files[city], &:readline).to_i;
|
52
|
+
|
53
|
+
{ file: files[city], lines: lines }
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.uniq_rand_nums(amount, min, max)
|
57
|
+
raise 'Invalid arguments' if max - min + 1 < amount
|
58
|
+
nums = amount.times.map { rand(min..max) }
|
59
|
+
return nums if nums.uniq.length == amount
|
60
|
+
|
61
|
+
nums.uniq!
|
62
|
+
while nums.length < amount do
|
63
|
+
num = rand(min..max)
|
64
|
+
nums << num unless nums.include?(num)
|
65
|
+
end
|
66
|
+
nums
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'open_data_addresses/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "open_data_addresses"
|
8
|
+
spec.version = OpenDataAddresses::VERSION
|
9
|
+
spec.authors = ["Jim X. Lin"]
|
10
|
+
spec.email = ["miljinx@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Randomly generate real addresses.}
|
13
|
+
spec.description = %q{A collection of addresses taken from the U.S. Government's open data. Meant to be used as seed data for development and testing.}
|
14
|
+
spec.homepage = "https://github.com/miljinx/open-data-addresses"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
if spec.respond_to?(:metadata)
|
18
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
19
|
+
else
|
20
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
21
|
+
"public gem pushes."
|
22
|
+
end
|
23
|
+
|
24
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
25
|
+
f.match(%r{^(test|spec|features)/})
|
26
|
+
end
|
27
|
+
spec.bindir = "exe"
|
28
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
29
|
+
spec.require_paths = ["lib"]
|
30
|
+
|
31
|
+
spec.add_development_dependency "bundler", "~> 1.14"
|
32
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
33
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: open_data_addresses
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jim X. Lin
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-06-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.14'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.14'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
description: A collection of addresses taken from the U.S. Government's open data.
|
56
|
+
Meant to be used as seed data for development and testing.
|
57
|
+
email:
|
58
|
+
- miljinx@gmail.com
|
59
|
+
executables: []
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- ".gitignore"
|
64
|
+
- ".rspec"
|
65
|
+
- ".travis.yml"
|
66
|
+
- CODE_OF_CONDUCT.md
|
67
|
+
- Gemfile
|
68
|
+
- LICENSE.txt
|
69
|
+
- README.md
|
70
|
+
- Rakefile
|
71
|
+
- bin/console
|
72
|
+
- bin/setup
|
73
|
+
- lib/addresses/newyorkcity_legally_operating_businesses.csv
|
74
|
+
- lib/addresses/sanfrancisco_registered_business_locations.csv
|
75
|
+
- lib/open_data_addresses.rb
|
76
|
+
- lib/open_data_addresses/version.rb
|
77
|
+
- open_data_addresses.gemspec
|
78
|
+
homepage: https://github.com/miljinx/open-data-addresses
|
79
|
+
licenses:
|
80
|
+
- MIT
|
81
|
+
metadata:
|
82
|
+
allowed_push_host: https://rubygems.org
|
83
|
+
post_install_message:
|
84
|
+
rdoc_options: []
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
requirements: []
|
98
|
+
rubyforge_project:
|
99
|
+
rubygems_version: 2.5.1
|
100
|
+
signing_key:
|
101
|
+
specification_version: 4
|
102
|
+
summary: Randomly generate real addresses.
|
103
|
+
test_files: []
|