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.
@@ -0,0 +1,3 @@
1
+ module OpenDataAddresses
2
+ VERSION = "0.1.3"
3
+ end
@@ -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: []