eaternet 0.4.3 → 0.4.4
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 +4 -4
- data/lib/eaternet/util.rb +46 -2
- data/lib/eaternet/version.rb +1 -1
- data/test/eaternet/agencies/snhd_lives_test.rb +1 -1
- data/test/eaternet/util_test.rb +62 -5
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d229e39d8e34a1c791ce2d212de62da1e1001ca3
|
4
|
+
data.tar.gz: c8f41c3455bcdbacca49900fd6691acae380d689
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe5fd0d5c67daeb5c173315e7f6e9bf01e903b6455995e0bdfddd61524e3630b9f5ac5b0e383d570825e5b1a2e62f241242eff877e200ef62ef6c4c629273392
|
7
|
+
data.tar.gz: 8a491c8d04d2022c1d75e34c2e196e070f6289c28bbb52514570cfc88eac9f5fdf4ef647ccd066b394870f72b45a5d5f26d9333e7edc4c826428843d3f9cb311
|
data/lib/eaternet/util.rb
CHANGED
@@ -67,7 +67,7 @@ module Eaternet
|
|
67
67
|
# @return [String] the cleaned up string
|
68
68
|
def self.cleanup_title(a_string)
|
69
69
|
return nil if a_string.nil?
|
70
|
-
cleanup(a_string)
|
70
|
+
titleize(cleanup(a_string))
|
71
71
|
end
|
72
72
|
|
73
73
|
# Remove extraneous whitespace from the string
|
@@ -83,7 +83,6 @@ module Eaternet
|
|
83
83
|
(Time.now - File.mtime(path)).to_i / 86_400.0
|
84
84
|
end
|
85
85
|
|
86
|
-
|
87
86
|
private
|
88
87
|
|
89
88
|
def self.expired?(cache_path)
|
@@ -101,5 +100,50 @@ module Eaternet
|
|
101
100
|
`mkdir -p #{cache_dir}`
|
102
101
|
cache_dir
|
103
102
|
end
|
103
|
+
|
104
|
+
#
|
105
|
+
# A titleize that creates a usable title according to grammar rules.
|
106
|
+
#
|
107
|
+
ARTICLES = Set.new %w(a an and by di et for in is not of on or over the to under with)
|
108
|
+
|
109
|
+
def self.titleize(a_string)
|
110
|
+
# Only fix if all uppercase
|
111
|
+
return a_string unless all_uppercase?(a_string)
|
112
|
+
|
113
|
+
result = []
|
114
|
+
|
115
|
+
for word in a_string.downcase.split(/[[:space:]]/) # handle unicode
|
116
|
+
if irish?(word)
|
117
|
+
result << inflect_irish(word)
|
118
|
+
else
|
119
|
+
word = word.capitalize unless ARTICLES.include? word
|
120
|
+
result << word
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
just_capitalize(result.join(' '))
|
125
|
+
end
|
126
|
+
|
127
|
+
def self.all_uppercase?(a_string)
|
128
|
+
a_string.upcase == a_string
|
129
|
+
end
|
130
|
+
|
131
|
+
def self.irish?(a_string)
|
132
|
+
a_string =~ /^(ma?c)|(o').+$/ && !italian?(a_string)
|
133
|
+
end
|
134
|
+
|
135
|
+
def self.italian?(a_string)
|
136
|
+
%w(macaron macaroni macchiato machiavelli).include? a_string
|
137
|
+
end
|
138
|
+
|
139
|
+
def self.inflect_irish(a_string)
|
140
|
+
a_string =~ /^((ma?c)|(o'))(.+)$/
|
141
|
+
Regexp.last_match(1).capitalize + Regexp.last_match(4).capitalize
|
142
|
+
end
|
143
|
+
|
144
|
+
def self.just_capitalize(a_string)
|
145
|
+
head, tail = a_string.split(//, 2)
|
146
|
+
head.upcase + tail
|
147
|
+
end
|
104
148
|
end
|
105
149
|
end
|
data/lib/eaternet/version.rb
CHANGED
@@ -18,7 +18,7 @@ class SnhdLivesTest < Minitest::Test
|
|
18
18
|
VCR.use_cassette(SNHD_CASSETTE) do
|
19
19
|
b = @@snhd.businesses.first
|
20
20
|
assert_equal 'PR0000002', b.business_id
|
21
|
-
assert_equal "McDonald's #3549 D
|
21
|
+
assert_equal "McDonald's #3549 D HOTEL", b.name
|
22
22
|
assert_equal '301 Fremont St', b.address
|
23
23
|
assert_equal 'Las Vegas', b.city
|
24
24
|
assert_equal '89101-5600', b.postal_code
|
data/test/eaternet/util_test.rb
CHANGED
@@ -5,7 +5,6 @@ require 'timecop'
|
|
5
5
|
require 'eaternet/util'
|
6
6
|
|
7
7
|
class UtilTest < Minitest::Test
|
8
|
-
|
9
8
|
def setup
|
10
9
|
@file_contents = 'This is the file'
|
11
10
|
@url = "http://downloadtest.com/file-#{rand(1_000_000)}.txt"
|
@@ -45,9 +44,67 @@ class UtilTest < Minitest::Test
|
|
45
44
|
assert_requested :get, @url, times: 2
|
46
45
|
end
|
47
46
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
#
|
48
|
+
# #cleanup_title
|
49
|
+
#
|
50
|
+
|
51
|
+
def assert_cleans_up_to(output, input)
|
52
|
+
assert_equal output, Eaternet::Util.cleanup_title(input)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_doesnt_mess_up_numeric_streets
|
56
|
+
assert_cleans_up_to '1654 86th St', '1654 86TH ST'
|
57
|
+
end
|
58
|
+
|
59
|
+
# Irish
|
60
|
+
|
61
|
+
def test_mcdonald_avenue
|
62
|
+
assert_cleans_up_to '1158 McDonald Avenue', '1158 MCDONALD AVENUE'
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_mckennas_pub
|
66
|
+
assert_cleans_up_to "McKenna's Pub", "MCKENNA'S PUB"
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_macdougal_street
|
70
|
+
assert_cleans_up_to '122 MacDougal St', '122 MACDOUGAL ST'
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_o_sullivans_pub
|
74
|
+
assert_cleans_up_to "O'Sullivan's Pub", "O'SULLIVAN'S PUB"
|
75
|
+
end
|
76
|
+
|
77
|
+
# Italian
|
78
|
+
|
79
|
+
def test_macchiato
|
80
|
+
assert_cleans_up_to 'Macchiato Espresso Bar', 'MACCHIATO ESPRESSO BAR'
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_di_vittorio
|
84
|
+
assert_cleans_up_to 'La Lanterna di Vittorio', 'LA LANTERNA DI VITTORIO'
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_machiavelli
|
88
|
+
assert_cleans_up_to 'Machiavelli', 'MACHIAVELLI'
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_macaroni
|
92
|
+
assert_cleans_up_to 'Macaroni', 'MACARONI'
|
93
|
+
end
|
94
|
+
|
95
|
+
# French
|
96
|
+
|
97
|
+
def test_rouge_et_blanc
|
98
|
+
assert_cleans_up_to 'Rouge et Blanc', 'ROUGE ET BLANC'
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_macaron
|
102
|
+
assert_cleans_up_to 'Macaron', 'MACARON'
|
103
|
+
end
|
104
|
+
|
105
|
+
# Weird
|
106
|
+
|
107
|
+
def test_weird_stuff
|
108
|
+
assert_cleans_up_to 'aBcDeFg', 'aBcDeFg'
|
52
109
|
end
|
53
110
|
end
|