nyc-farmers-markets 1.0.2 → 2.0.0
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 +5 -5
- data/bin/nyc-farmers-markets +2 -1
- data/lib/nyc_farmers_markets.rb +5 -2
- data/lib/nyc_farmers_markets/cli.rb +107 -71
- data/lib/nyc_farmers_markets/get_markets.rb +17 -10
- data/lib/nyc_farmers_markets/market.rb +86 -62
- data/lib/nyc_farmers_markets/version.rb +5 -0
- metadata +51 -24
- data/config/environment.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2b21916ba6a2b697a879dcde3d0b19d3a64f4f14d8bc502485c4e4ca3df380e6
|
4
|
+
data.tar.gz: ac30be3edd8e9e6169d98680d19ee2bf874326b82fa3b38a71606d45cd71d233
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8f0b354a07a7ed87502a2cbaf00161f8f8b0f137fd34071da9a86ac4591721e99c38d2770a28f98f9f64ad5ff98385a9082f6c9a844bbcd9ddc785d2a70e70b
|
7
|
+
data.tar.gz: c0435b1210ab51b3b6290f91f5462efbd1aaf21ddad44baabf04a9c5c0dd2de1ff7b73e5b55d841f98bd1d092160bfa4e1a3640fec340d2bf7adc3d7088320d7
|
data/bin/nyc-farmers-markets
CHANGED
data/lib/nyc_farmers_markets.rb
CHANGED
@@ -1,93 +1,129 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
module NYCFarmersMarkets
|
4
|
+
EXIT_CMD = 'exit'
|
5
|
+
FLOWER = "\u2698".encode('utf-8')
|
6
|
+
FLOWER_ROW = Array.new(15, FLOWER).join(' ')
|
7
|
+
HAND = "\u261E".encode('utf-8')
|
8
|
+
KEYBOARD = "\u2328".encode('utf-8')
|
9
|
+
CMD_LIST = [
|
10
|
+
'exit',
|
11
|
+
'help',
|
12
|
+
'list all',
|
13
|
+
'list boroughs',
|
14
|
+
'list zip codes',
|
15
|
+
'version'
|
16
|
+
].flatten
|
17
|
+
VESTA = "\u26B6".encode('utf-8')
|
18
|
+
WELCOME_MSG = 'Welcome to the Farmers Markets of NYC'
|
9
19
|
|
10
|
-
|
11
|
-
|
20
|
+
# The commandline interface class
|
21
|
+
class Cli
|
22
|
+
def self.call
|
23
|
+
new.call
|
24
|
+
end
|
12
25
|
|
13
|
-
|
14
|
-
|
15
|
-
|
26
|
+
def call
|
27
|
+
NYCFarmersMarkets::GetMarkets.new.make_markets
|
28
|
+
print_welcome
|
29
|
+
start
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def start
|
35
|
+
loop do
|
36
|
+
input = prompt_user
|
37
|
+
interpret(input)
|
38
|
+
break if input == EXIT_CMD
|
39
|
+
end
|
40
|
+
end
|
16
41
|
|
17
|
-
|
42
|
+
def prompt_user
|
43
|
+
print "\nWhat would you like to do (type help for more info)? "
|
44
|
+
gets.chomp.downcase
|
45
|
+
end
|
18
46
|
|
47
|
+
def interpret(input)
|
19
48
|
case input
|
20
|
-
when
|
21
|
-
|
22
|
-
when
|
23
|
-
#puts market_set.list_boroughs.join(" - ")
|
24
|
-
list_boroughs
|
25
|
-
when "bronx", "brooklyn", "manhattan", "queens", "staten island"
|
49
|
+
when *CMD_LIST
|
50
|
+
send input.gsub(/\s/, '_').to_sym
|
51
|
+
when *market_set.boroughs_lowercase
|
26
52
|
print_by_borough(input)
|
27
|
-
when
|
28
|
-
|
29
|
-
when *market_set.list_zipcodes
|
30
|
-
print_by_zipcode(input)
|
31
|
-
when "help"
|
32
|
-
help
|
33
|
-
when "exit"
|
34
|
-
puts "See you next time!"
|
35
|
-
break
|
53
|
+
when *market_set.zip_codes
|
54
|
+
print_by_zip_code(input)
|
36
55
|
else
|
37
|
-
puts
|
56
|
+
puts 'Invalid selection!'.red
|
38
57
|
end
|
39
58
|
end
|
40
|
-
end
|
41
59
|
|
42
|
-
|
43
|
-
|
44
|
-
puts "\n#{m.name}".green
|
45
|
-
puts "#{m.street_address}, #{m.borough}, #{m.zipcode}"
|
46
|
-
puts "#{m.additional_info}" unless m.additional_info == nil
|
47
|
-
puts "#{m.website}" unless m.website == nil
|
60
|
+
def exit
|
61
|
+
puts 'See you next time!'
|
48
62
|
end
|
49
|
-
end
|
50
63
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
puts "#{m.additional_info}" unless m.additional_info == nil
|
56
|
-
puts "#{m.website}" unless m.website == nil
|
64
|
+
def print_by_borough(borough)
|
65
|
+
market_set.find_by_borough(borough).each do |market|
|
66
|
+
print_market_info market
|
67
|
+
end
|
57
68
|
end
|
58
|
-
end
|
59
69
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
puts "#{m.additional_info}" unless m.additional_info == nil
|
65
|
-
puts "#{m.website}" unless m.website == nil
|
70
|
+
def print_by_zip_code(zip_code)
|
71
|
+
market_set.find_by_zip_code(zip_code).each do |market|
|
72
|
+
print_market_info market
|
73
|
+
end
|
66
74
|
end
|
67
|
-
end
|
68
75
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
"#{
|
76
|
+
def print_market_info(market)
|
77
|
+
info = "\n#{market.name}\n".green
|
78
|
+
info << "#{market.full_address}\n"
|
79
|
+
info << "#{market.additional_info}\n" unless market.additional_info.nil?
|
80
|
+
info << "#{market.website}\n" unless market.website.nil?
|
81
|
+
info << "#{market.open_street_map_link}\n" unless market.open_street_map_link.nil?
|
82
|
+
puts info
|
73
83
|
end
|
74
|
-
puts boroughs_with_num_markets.join(", ")
|
75
|
-
end
|
76
84
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
85
|
+
def list_all
|
86
|
+
market_set.all.each do |market|
|
87
|
+
print_market_info market
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def list_boroughs
|
92
|
+
puts "\n\tBoroughs and Their Number of Farmers Markets".green
|
93
|
+
boroughs_with_num_markets = market_set.boroughs.collect do |b|
|
94
|
+
"#{b}(#{market_set.num_markets_in_borough(b)})"
|
95
|
+
end
|
96
|
+
puts boroughs_with_num_markets.join(', ')
|
97
|
+
end
|
98
|
+
|
99
|
+
def list_zip_codes
|
100
|
+
puts market_set.zip_codes.join(' - ')
|
101
|
+
end
|
102
|
+
|
103
|
+
def help
|
104
|
+
headline = "\n #{KEYBOARD} These are the available commands #{KEYBOARD}"
|
105
|
+
puts headline.light_blue.underline
|
106
|
+
puts "#{HAND} list all\t - See a list of all Farmers Markets"
|
107
|
+
puts "#{HAND} list boroughs - See a list of boroughs with Farmers Markets"
|
108
|
+
puts "#{HAND} [borough name] - See all markets in this borough"
|
109
|
+
puts "#{HAND} list zip codes - See a list of zip codes"
|
110
|
+
puts "#{HAND} [zip code]\t - See all markets in this zip code"
|
111
|
+
puts "#{HAND} help\t\t - See this helpful list of commands!"
|
112
|
+
puts "#{HAND} version\t - See the currently running version!"
|
113
|
+
puts "#{HAND} exit\t\t - Say good-bye"
|
114
|
+
end
|
115
|
+
|
116
|
+
def market_set
|
117
|
+
@market_set ||= NYCFarmersMarkets::Market
|
118
|
+
end
|
119
|
+
|
120
|
+
def print_welcome
|
121
|
+
puts "\n\t #{VESTA} #{WELCOME_MSG} #{VESTA} ".green.underline
|
122
|
+
puts "\t#{FLOWER_ROW.light_blue}"
|
123
|
+
end
|
89
124
|
|
90
|
-
|
91
|
-
|
125
|
+
def version
|
126
|
+
puts NYCFarmersMarkets::VERSION
|
127
|
+
end
|
92
128
|
end
|
93
129
|
end
|
@@ -1,15 +1,22 @@
|
|
1
|
-
|
2
|
-
URL = "https://data.cityofnewyork.us/resource/cw3p-q2v6.json"
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
module NYCFarmersMarkets
|
4
|
+
# Retrieves the from the NYC Open Data API
|
5
|
+
class GetMarkets
|
6
|
+
# https://data.cityofnewyork.us/dataset/DOHMH-Farmers-Markets-and-Food-Boxes/8vwk-6iz2
|
7
|
+
URL = 'https://data.cityofnewyork.us/resource/94pk-v63f.json'
|
8
|
+
|
9
|
+
def make_markets
|
10
|
+
retrieved_markets.each do |market_hash|
|
11
|
+
NYCFarmersMarkets::Market.create_from_hash(market_hash)
|
12
|
+
end
|
13
|
+
NYCFarmersMarkets::Market.all
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
8
17
|
|
9
|
-
|
10
|
-
|
11
|
-
NYCFarmersMarkets::Market.create_from_hash(market_hash)
|
18
|
+
def retrieved_markets
|
19
|
+
JSON.parse open(URL).read
|
12
20
|
end
|
13
|
-
NYCFarmersMarkets::Market.all
|
14
21
|
end
|
15
22
|
end
|
@@ -1,78 +1,102 @@
|
|
1
|
-
|
2
|
-
attr_accessor :name, :additional_info, :street_address, :borough, :state, :zipcode, :latitude, :longitude, :website
|
3
|
-
|
4
|
-
@@all = []
|
5
|
-
|
6
|
-
def initialize(name: nil, additional_info: nil, street_address: nil, borough: nil, state: "NY", zipcode: nil, website: nil)
|
7
|
-
@name = name
|
8
|
-
@additional_info = additional_info
|
9
|
-
@street_address = street_address
|
10
|
-
@borough = borough
|
11
|
-
@state = state
|
12
|
-
@zipcode = zipcode
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.all
|
16
|
-
@@all
|
17
|
-
end
|
1
|
+
# frozen_string_literal: true
|
18
2
|
|
19
|
-
|
20
|
-
|
21
|
-
|
3
|
+
module NYCFarmersMarkets
|
4
|
+
# Organizes the actual market data
|
5
|
+
class Market
|
6
|
+
attr_reader :additional_info, :additional_info_raw, :borough, :name, :state,
|
7
|
+
:street_address, :latitude, :longitude, :website, :zip_code
|
22
8
|
|
23
|
-
|
24
|
-
market = self.new(
|
25
|
-
name: h["facilityname"],
|
26
|
-
additional_info: h["facilityaddinfo"],
|
27
|
-
street_address: h["facilitystreetname"],
|
28
|
-
borough: h["facilitycity"],
|
29
|
-
state: h["facilitystate"],
|
30
|
-
zipcode: h["facilityzipcode"]
|
31
|
-
)
|
32
|
-
|
33
|
-
market.set_website_from_additional_info
|
34
|
-
market.remove_html
|
35
|
-
market.save
|
36
|
-
market
|
37
|
-
end
|
9
|
+
@all = []
|
38
10
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
11
|
+
def initialize(attributes = {})
|
12
|
+
attributes.each do |attribute, value|
|
13
|
+
instance_variable_set "@#{attribute}", value
|
14
|
+
end
|
15
|
+
@state ||= 'NY'
|
43
16
|
end
|
44
|
-
end
|
45
17
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
@additional_info.slice!(x..y)
|
18
|
+
def cleanup
|
19
|
+
set_website_from_additional_info_raw
|
20
|
+
set_additional_info
|
21
|
+
self
|
51
22
|
end
|
52
23
|
|
53
|
-
|
24
|
+
def full_address
|
25
|
+
return '- address not available -' if street_address.nil?
|
26
|
+
"#{street_address}, #{borough}, #{zip_code}"
|
27
|
+
end
|
54
28
|
|
55
|
-
|
56
|
-
|
57
|
-
|
29
|
+
def open_street_map_link
|
30
|
+
return if latitude.to_s.empty? || longitude.to_s.empty?
|
31
|
+
'https://www.openstreetmap.org/' \
|
32
|
+
"?mlat=#{latitude}&mlon=#{longitude}#map=11/#{latitude}/#{longitude}"
|
58
33
|
end
|
59
|
-
end
|
60
34
|
|
61
|
-
|
62
|
-
|
63
|
-
|
35
|
+
class << self
|
36
|
+
attr_accessor :all
|
37
|
+
|
38
|
+
|
39
|
+
def create(attributes)
|
40
|
+
market = new attributes
|
41
|
+
market.cleanup
|
42
|
+
all << market
|
43
|
+
market
|
44
|
+
end
|
45
|
+
|
46
|
+
def create_from_hash(h)
|
47
|
+
create(
|
48
|
+
name: h['facilityname'],
|
49
|
+
additional_info_raw: h['additionalinfo'],
|
50
|
+
street_address: h['address'],
|
51
|
+
borough: h['borough'],
|
52
|
+
zip_code: h['zipcode'],
|
53
|
+
latitude: h['latitude'],
|
54
|
+
longitude: h['longitude'],
|
55
|
+
website: h['website']
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
def find_by_borough(b)
|
60
|
+
all.select { |m| b.casecmp(m.borough.to_s).zero? }
|
61
|
+
end
|
62
|
+
|
63
|
+
def find_by_zip_code(z)
|
64
|
+
all.select { |market| market.zip_code == z }
|
65
|
+
end
|
66
|
+
|
67
|
+
def boroughs
|
68
|
+
@boroughs ||= all.collect(&:borough).compact.uniq.sort
|
69
|
+
end
|
70
|
+
|
71
|
+
def boroughs_lowercase
|
72
|
+
@boroughs_lowercase ||= boroughs.map(&:downcase)
|
73
|
+
end
|
74
|
+
|
75
|
+
def zip_codes
|
76
|
+
@zip_codes ||= all.collect(&:zip_code).compact.uniq.sort
|
77
|
+
end
|
78
|
+
|
79
|
+
def num_markets_in_borough(b)
|
80
|
+
find_by_borough(b).count
|
81
|
+
end
|
82
|
+
|
83
|
+
def destroy_all!
|
84
|
+
@all = []
|
85
|
+
end
|
64
86
|
end
|
65
|
-
end
|
66
87
|
|
67
|
-
|
68
|
-
self.all.collect { |market| market.borough }.compact.uniq.sort
|
69
|
-
end
|
88
|
+
private
|
70
89
|
|
71
|
-
|
72
|
-
|
73
|
-
|
90
|
+
def set_website_from_additional_info_raw
|
91
|
+
return if additional_info_raw.to_s.empty?
|
92
|
+
url = additional_info_raw.match %r{http(:|\w|\/|\.|\&|\=|\?|\_)*<}
|
93
|
+
return if url.nil?
|
94
|
+
@website = url[0].chomp('<').chomp('.')
|
95
|
+
end
|
74
96
|
|
75
|
-
|
76
|
-
|
97
|
+
def set_additional_info
|
98
|
+
return if additional_info_raw.to_s.empty?
|
99
|
+
@additional_info ||= additional_info_raw.match(/\A[^<]*/).to_s
|
100
|
+
end
|
77
101
|
end
|
78
102
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nyc-farmers-markets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin McCormack
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -16,83 +16,111 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '2.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: open-uri-cached
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.0
|
47
|
+
version: '0.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.0
|
54
|
+
version: '0.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.5'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3.5'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.47'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.47'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop-rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
89
|
+
version: '1.10'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.10'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: webmock
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.5'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
81
109
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
110
|
+
version: '3.5'
|
83
111
|
description: A Ruby gem for the NYC Farmers Markets API with a CLI
|
84
|
-
email:
|
112
|
+
email: HarlemSquirrel@gmail.com
|
85
113
|
executables:
|
86
114
|
- nyc-farmers-markets
|
87
115
|
extensions: []
|
88
116
|
extra_rdoc_files: []
|
89
117
|
files:
|
90
118
|
- bin/nyc-farmers-markets
|
91
|
-
- config/environment.rb
|
92
119
|
- lib/nyc_farmers_markets.rb
|
93
120
|
- lib/nyc_farmers_markets/cli.rb
|
94
121
|
- lib/nyc_farmers_markets/get_markets.rb
|
95
122
|
- lib/nyc_farmers_markets/market.rb
|
123
|
+
- lib/nyc_farmers_markets/version.rb
|
96
124
|
homepage: https://github.com/HarlemSquirrel/nyc-farmers-markets-cli-gem
|
97
125
|
licenses:
|
98
126
|
- MIT
|
@@ -112,8 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
140
|
- !ruby/object:Gem::Version
|
113
141
|
version: '0'
|
114
142
|
requirements: []
|
115
|
-
|
116
|
-
rubygems_version: 2.4.5.1
|
143
|
+
rubygems_version: 3.0.1
|
117
144
|
signing_key:
|
118
145
|
specification_version: 4
|
119
146
|
summary: Wrapper and CLI the NYC Farmers Markets API
|
data/config/environment.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
require 'colorize'
|
2
|
-
require 'json'
|
3
|
-
#require 'open-uri'
|
4
|
-
require 'open-uri/cached'
|
5
|
-
require 'pry'
|
6
|
-
|
7
|
-
|
8
|
-
require_relative '../lib/nyc_farmers_markets/cli'
|
9
|
-
require_relative '../lib/nyc_farmers_markets/get_markets'
|
10
|
-
require_relative '../lib/nyc_farmers_markets/market'
|