swot 0.3.0 → 0.3.1

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: a49ff2011c0bce368851e99dd4b455d8b1cfcca5
4
- data.tar.gz: 1d7fc4c436b7c369f182c5666fab45fe5c17cf2b
3
+ metadata.gz: ffc471d485321f206ee5c7e57264ec048b14727f
4
+ data.tar.gz: 9b37fd54641bf15c60ba17d9329f5714f9aece1b
5
5
  SHA512:
6
- metadata.gz: 32318f590856ba9d84770e72becbcf372c4bc308a859048d9beac32fc40dd99e523c531ca55db991b37b95eebc88fd42b9a9f2592e2f97f9cf3077798a365619
7
- data.tar.gz: ca9f2c2aa0c681316f617b0d1d5d09f2c281f2517d9bee6b4bf3875e5f512e05f6da5d04f887e4aa2d9298b78468917fc4fc1fd8f24605b51ddd7c3a8b3aac68
6
+ metadata.gz: 5d0959ea08f1046314c412a3de1da49787808ecd375caf21c3d27c208aa4179ce8f6263288232265914e04894c045dbdf8ff59cf1e94777b9ebea94f69ccb2ee
7
+ data.tar.gz: 9668e4d5916f70f16a317455a73cdf83a0fc77d8cd6c64c6f802276a281893dc71e8481c9eec8f8dbd4569990daf43bef9ee2d1108eb8a6214639bf0f678c905
data/Gemfile CHANGED
@@ -3,9 +3,9 @@ source "http://rubygems.org"
3
3
  gem 'public_suffix'
4
4
 
5
5
  group :development do
6
- gem "rake", "~> 10.0.4"
7
- gem "shoulda", ">= 0"
6
+ gem "nokogiri", "~> 1.5"
7
+ gem "rake", "~> 10.0"
8
8
  gem "rdoc", "~> 3.12"
9
- gem "bundler", "~> 1.5.0"
10
- gem "jeweler", "~> 1.8.3"
9
+ gem "bundler", "~> 1.5"
10
+ gem "jeweler", "~> 1.8"
11
11
  end
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Swot :apple:
2
2
 
3
- [![Build Status](https://api.travis-ci.org/leereilly/swot.png)](https://travis-ci.org/leereilly/swot) ![](https://badge.fury.io/rb/swot.png)
3
+ [![Build Status](https://api.travis-ci.org/leereilly/swot.png)](https://travis-ci.org/leereilly/swot) [![Gem Version](https://badge.fury.io/rb/swot.svg)](http://badge.fury.io/rb/swot)
4
4
 
5
5
  If you have a product or service and offer **academic discounts**, there's a good chance there's some manual component to the approval process. Perhaps `.edu` email addresses are automatically approved because, for the most part at least, they're associated with American post-secondary educational institutions. Perhaps `.ac.uk` email addresses are automatically approved because they're guaranteed to belong to British universities and colleges. Unfortunately, not every country has an education-specific TLD (Top Level Domain) and plenty of schools use `.com` or `.net`.
6
6
 
@@ -106,4 +106,3 @@ If you verified this by visiting all of the websites, how long did it take you?
106
106
  ### See Also
107
107
 
108
108
  * [gman](https://github.com/benbalter/gman) - like swot, but for government emails
109
-
data/Rakefile CHANGED
@@ -61,4 +61,36 @@ task :add, :sld, :tld, :name do |t, args|
61
61
  puts "commit failed"
62
62
  end
63
63
  end
64
- end
64
+ end
65
+
66
+ task :quackit_import do
67
+ require 'nokogiri'
68
+ require 'open-uri'
69
+ require_relative File.join('lib', 'swot', 'academic_tlds')
70
+
71
+ new_domains = Set.new
72
+ doc = Nokogiri::HTML(open('http://www.quackit.com/domain-names/country_domain_extensions.cfm'))
73
+ doc.css('#content li').each do |li|
74
+ desc = li.content.split(/\s+-\s+/, 2)[1]
75
+ if desc =~ /academic|education|school/i
76
+ domain_el = li.at_css('b')
77
+ # some lines have more than one domain listed
78
+ domains = domain_el.content.split(/\s*\/\s*/)
79
+ domains.each do |domain|
80
+ # remove leading space
81
+ domain = domain.strip.sub(/\A\./, '')
82
+ unless Swot::ACADEMIC_TLDS.include?(domain)
83
+ # print out for manual review
84
+ puts "#{domain} - #{desc.strip.gsub(/\s+/, ' ')}"
85
+ new_domains << domain
86
+ end
87
+ end
88
+ end
89
+ end
90
+
91
+ puts "\nNEW DOMAINS (#{new_domains.size}):\n\n"
92
+
93
+ new_domains.each do |domain|
94
+ puts domain
95
+ end
96
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.13
1
+ 0.3.1
@@ -0,0 +1 @@
1
+ Gujarat Technological University
@@ -0,0 +1 @@
1
+ SRM University
@@ -0,0 +1 @@
1
+ University of Pune
@@ -0,0 +1 @@
1
+ University of Canterbury
@@ -0,0 +1 @@
1
+ Ionis School of Technology and Management
@@ -1 +1 @@
1
- Phillips-Universität Marburg
1
+ Philipps-Universität Marburg
@@ -1 +1 @@
1
- Bauhaus Universität Weimar
1
+ Bauhaus-Universität Weimar
@@ -0,0 +1 @@
1
+ École de l'Innovation et de l'Expertise Informatique
@@ -0,0 +1 @@
1
+ Arcada University of Applied Sciences
@@ -1 +1 @@
1
- École Pour l'Informatique et les Techniques Avancées
1
+ École Pour l'Informatique et les Techniques Avancées
@@ -1 +1 @@
1
- École d'ingénieurs de l'air et de l'espace - école aéronautique
1
+ École d'Ingénieurs de l'Air et de l'Espace
@@ -0,0 +1 @@
1
+ École des Experts en Biotechnologies
@@ -0,0 +1 @@
1
+ École Supérieure des Métiers de l'Internet
@@ -0,0 +1 @@
1
+ Corvinus University of Budapest
@@ -0,0 +1 @@
1
+ École de la Passion Créative
@@ -0,0 +1 @@
1
+ École de la Nouvelle Alternance en Informatique
@@ -0,0 +1 @@
1
+ Regional Community College of Eindhoven
@@ -0,0 +1 @@
1
+ Regional Community College of Eindhoven
@@ -0,0 +1 @@
1
+ Toulouse Business School
@@ -1,2 +1 @@
1
- Technical University of Wroclaw
2
- Technical University of Wroclaw
1
+ Wrocław University of Technology
@@ -1,134 +1,15 @@
1
- require 'public_suffix'
1
+ require "public_suffix"
2
+ require File.join(File.dirname(__FILE__), "swot", "academic_tlds.rb")
2
3
 
3
4
  module Swot
4
5
  VERSION = "0.3.0"
5
6
 
6
- # These top-level domains are guaranteed to be academic institutions.
7
- ACADEMIC_TLDS = {
8
- 'ac.ae' => 1,
9
- 'ac.at' => 1,
10
- 'ac.bd' => 1,
11
- 'ac.be' => 1,
12
- 'ac.cr' => 1,
13
- 'ac.cy' => 1,
14
- 'ac.fj' => 1,
15
- 'ac.id' => 1,
16
- 'ac.il' => 1,
17
- 'ac.ir' => 1,
18
- 'ac.jp' => 1,
19
- 'ac.ke' => 1,
20
- 'ac.kr' => 1,
21
- 'ac.ma' => 1,
22
- 'ac.mu' => 1,
23
- 'ac.mw' => 1,
24
- 'ac.mz' => 1,
25
- 'ac.nz' => 1,
26
- 'ac.pa' => 1,
27
- 'ac.pg' => 1,
28
- 'ac.rs' => 1,
29
- 'ac.ru' => 1,
30
- 'ac.rw' => 1,
31
- 'ac.th' => 1,
32
- 'ac.tz' => 1,
33
- 'ac.ug' => 1,
34
- 'ac.uk' => 1,
35
- 'ac.yu' => 1,
36
- 'ac.za' => 1,
37
- 'ac.zm' => 1,
38
- 'ac.zw' => 1,
39
- 'edu' => 1,
40
- 'edu.af' => 1,
41
- 'edu.al' => 1,
42
- 'edu.ar' => 1,
43
- 'edu.au' => 1,
44
- 'edu.az' => 1,
45
- 'edu.ba' => 1,
46
- 'edu.bb' => 1,
47
- 'edu.bd' => 1,
48
- 'edu.bh' => 1,
49
- 'edu.bi' => 1,
50
- 'edu.bn' => 1,
51
- 'edu.bo' => 1,
52
- 'edu.br' => 1,
53
- 'edu.bs' => 1,
54
- 'edu.bt' => 1,
55
- 'edu.bz' => 1,
56
- 'edu.co' => 1,
57
- 'edu.cu' => 1,
58
- 'edu.do' => 1,
59
- 'edu.dz' => 1,
60
- 'edu.ec' => 1,
61
- 'edu.ee' => 1,
62
- 'edu.eg' => 1,
63
- 'edu.er' => 1,
64
- 'edu.es' => 1,
65
- 'edu.et' => 1,
66
- 'edu.ge' => 1,
67
- 'edu.gh' => 1,
68
- 'edu.gr' => 1,
69
- 'edu.gt' => 1,
70
- 'edu.hk' => 1,
71
- 'edu.hn' => 1,
72
- 'edu.ht' => 1,
73
- 'edu.iq' => 1,
74
- 'edu.jm' => 1,
75
- 'edu.jo' => 1,
76
- 'edu.kg' => 1,
77
- 'edu.kh' => 1,
78
- 'edu.kn' => 1,
79
- 'edu.kw' => 1,
80
- 'edu.ky' => 1,
81
- 'edu.kz' => 1,
82
- 'edu.la' => 1,
83
- 'edu.lb' => 1,
84
- 'edu.lv' => 1,
85
- 'edu.ly' => 1,
86
- 'edu.mk' => 1,
87
- 'edu.mm' => 1,
88
- 'edu.mn' => 1,
89
- 'edu.mo' => 1,
90
- 'edu.mt' => 1,
91
- 'edu.mx' => 1,
92
- 'edu.my' => 1,
93
- 'edu.ni' => 1,
94
- 'edu.np' => 1,
95
- 'edu.om' => 1,
96
- 'edu.pa' => 1,
97
- 'edu.pe' => 1,
98
- 'edu.ph' => 1,
99
- 'edu.pk' => 1,
100
- 'edu.pl' => 1,
101
- 'edu.pr' => 1,
102
- 'edu.ps' => 1,
103
- 'edu.pt' => 1,
104
- 'edu.py' => 1,
105
- 'edu.qa' => 1,
106
- 'edu.rs' => 1,
107
- 'edu.ru' => 1,
108
- 'edu.sa' => 1,
109
- 'edu.sd' => 1,
110
- 'edu.sg' => 1,
111
- 'edu.sv' => 1,
112
- 'edu.sy' => 1,
113
- 'edu.tr' => 1,
114
- 'edu.tt' => 1,
115
- 'edu.tw' => 1,
116
- 'edu.ua' => 1,
117
- 'edu.uy' => 1,
118
- 'edu.ve' => 1,
119
- 'edu.vn' => 1,
120
- 'edu.ws' => 1,
121
- 'edu.ye' => 1,
122
- 'edu.zm' => 1,
123
- 'vic.edu.au' => 1,
124
- }
125
-
126
7
  # These are domains that snuck into the edu registry,
127
8
  # but don't pass the education sniff test
128
- # Note: domain must be a direct match
129
- BLACKLIST = [
130
- 'si.edu',
131
- ]
9
+ # Note: validated domain must not end with the blacklisted string
10
+ BLACKLIST = %w(
11
+ si.edu
12
+ ).freeze
132
13
 
133
14
  class << self
134
15
 
@@ -140,11 +21,11 @@ module Swot
140
21
  return false if text.nil?
141
22
  begin
142
23
  domain = get_domain(text)
143
- return false if domain.nil?
144
-
145
- if BLACKLIST.include? domain.name
24
+ if domain.nil?
25
+ false
26
+ elsif BLACKLIST.any? { |d| domain.name =~ /(\A|\.)#{Regexp.escape(d)}\z/ }
146
27
  false
147
- elsif ACADEMIC_TLDS[domain.tld]
28
+ elsif ACADEMIC_TLDS.include?(domain.tld)
148
29
  true
149
30
  elsif match_academic_domain?(domain)
150
31
  true
@@ -174,7 +55,7 @@ module Swot
174
55
  # Returns true if the domain name belongs to a known academic institution;
175
56
  # false otherwise.
176
57
  def match_academic_domain?(domain)
177
- File.exists?(get_path(domain))
58
+ File.exists?(get_path(domain)) if domain.tld && domain.sld
178
59
  end
179
60
 
180
61
  # Figure out the institutions' name based on the domain name.
@@ -0,0 +1,169 @@
1
+ require 'set'
2
+
3
+ module Swot
4
+ # These top-level domains are guaranteed to be academic institutions.
5
+ ACADEMIC_TLDS = %w(
6
+ ac.ae
7
+ ac.at
8
+ ac.bd
9
+ ac.be
10
+ ac.cn
11
+ ac.cr
12
+ ac.cy
13
+ ac.fj
14
+ ac.gg
15
+ ac.gn
16
+ ac.id
17
+ ac.il
18
+ ac.in
19
+ ac.ir
20
+ ac.jp
21
+ ac.ke
22
+ ac.kr
23
+ ac.ma
24
+ ac.me
25
+ ac.mu
26
+ ac.mw
27
+ ac.mz
28
+ ac.ni
29
+ ac.nz
30
+ ac.om
31
+ ac.pa
32
+ ac.pg
33
+ ac.pr
34
+ ac.rs
35
+ ac.ru
36
+ ac.rw
37
+ ac.sz
38
+ ac.th
39
+ ac.tz
40
+ ac.ug
41
+ ac.uk
42
+ ac.yu
43
+ ac.za
44
+ ac.zm
45
+ ac.zw
46
+ ed.ao
47
+ ed.cr
48
+ ed.jp
49
+ edu
50
+ edu.af
51
+ edu.al
52
+ edu.ar
53
+ edu.au
54
+ edu.az
55
+ edu.ba
56
+ edu.bb
57
+ edu.bd
58
+ edu.bh
59
+ edu.bi
60
+ edu.bn
61
+ edu.bo
62
+ edu.br
63
+ edu.bs
64
+ edu.bt
65
+ edu.bz
66
+ edu.ck
67
+ edu.cn
68
+ edu.co
69
+ edu.cu
70
+ edu.do
71
+ edu.dz
72
+ edu.ec
73
+ edu.ee
74
+ edu.eg
75
+ edu.er
76
+ edu.es
77
+ edu.et
78
+ edu.ge
79
+ edu.gh
80
+ edu.gr
81
+ edu.gt
82
+ edu.hk
83
+ edu.hn
84
+ edu.ht
85
+ edu.in
86
+ edu.iq
87
+ edu.jm
88
+ edu.jo
89
+ edu.kg
90
+ edu.kh
91
+ edu.kn
92
+ edu.kw
93
+ edu.ky
94
+ edu.kz
95
+ edu.la
96
+ edu.lb
97
+ edu.lr
98
+ edu.lv
99
+ edu.ly
100
+ edu.me
101
+ edu.mg
102
+ edu.mk
103
+ edu.ml
104
+ edu.mm
105
+ edu.mn
106
+ edu.mo
107
+ edu.mt
108
+ edu.mv
109
+ edu.mw
110
+ edu.mx
111
+ edu.my
112
+ edu.ni
113
+ edu.np
114
+ edu.om
115
+ edu.pa
116
+ edu.pe
117
+ edu.ph
118
+ edu.pk
119
+ edu.pl
120
+ edu.pr
121
+ edu.ps
122
+ edu.pt
123
+ edu.pw
124
+ edu.py
125
+ edu.qa
126
+ edu.rs
127
+ edu.ru
128
+ edu.sa
129
+ edu.sc
130
+ edu.sd
131
+ edu.sg
132
+ edu.sh
133
+ edu.sl
134
+ edu.sv
135
+ edu.sy
136
+ edu.tr
137
+ edu.tt
138
+ edu.tw
139
+ edu.ua
140
+ edu.uy
141
+ edu.ve
142
+ edu.vn
143
+ edu.ws
144
+ edu.ye
145
+ edu.zm
146
+ es.kr
147
+ g12.br
148
+ hs.kr
149
+ ms.kr
150
+ sc.kr
151
+ sc.ug
152
+ sch.ae
153
+ sch.gg
154
+ sch.id
155
+ sch.ir
156
+ sch.je
157
+ sch.jo
158
+ sch.lk
159
+ sch.ly
160
+ sch.my
161
+ sch.om
162
+ sch.ps
163
+ sch.sa
164
+ sch.uk
165
+ school.nz
166
+ school.za
167
+ vic.edu.au
168
+ ).to_set.freeze
169
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "swot"
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Lee Reilly"]
12
- s.date = "2014-04-01"
12
+ s.date = "2014-06-19"
13
13
  s.description = "email helpers"
14
14
  s.email = "lee@leereilly.net"
15
15
  s.extra_rdoc_files = [
@@ -336,6 +336,7 @@ Gem::Specification.new do |s|
336
336
  "lib/domains/ac.in/bitmesra",
337
337
  "lib/domains/ac.in/bits-pilani",
338
338
  "lib/domains/ac.in/daiict",
339
+ "lib/domains/ac.in/gtu",
339
340
  "lib/domains/ac.in/iiita",
340
341
  "lib/domains/ac.in/iiitd",
341
342
  "lib/domains/ac.in/iiitdmj",
@@ -350,6 +351,8 @@ Gem::Specification.new do |s|
350
351
  "lib/domains/ac.in/nirmauni",
351
352
  "lib/domains/ac.in/nitc",
352
353
  "lib/domains/ac.in/sastra",
354
+ "lib/domains/ac.in/srmuniv",
355
+ "lib/domains/ac.in/unipune",
353
356
  "lib/domains/ac.in/vit",
354
357
  "lib/domains/ac.in/vvpedulink",
355
358
  "lib/domains/ac.ir/acmt",
@@ -1007,6 +1010,7 @@ Gem::Specification.new do |s|
1007
1010
  "lib/domains/ac.nz/massey",
1008
1011
  "lib/domains/ac.nz/openpolytechnic",
1009
1012
  "lib/domains/ac.nz/otago",
1013
+ "lib/domains/ac.nz/uclive",
1010
1014
  "lib/domains/ac.nz/vuw",
1011
1015
  "lib/domains/ac.nz/waikato",
1012
1016
  "lib/domains/ac.pa/institutoteima",
@@ -1903,6 +1907,7 @@ Gem::Specification.new do |s|
1903
1907
  "lib/domains/com/icn-nancy",
1904
1908
  "lib/domains/com/icsw",
1905
1909
  "lib/domains/com/imi-luzern",
1910
+ "lib/domains/com/ionis-stm",
1906
1911
  "lib/domains/com/isbm-school",
1907
1912
  "lib/domains/com/islamicug",
1908
1913
  "lib/domains/com/iu-travnik",
@@ -3152,8 +3157,6 @@ Gem::Specification.new do |s|
3152
3157
  "lib/domains/edu.hn/upnfm",
3153
3158
  "lib/domains/edu.hn/usps",
3154
3159
  "lib/domains/edu.ht/ueh",
3155
- "lib/domains/edu.in/gtu",
3156
- "lib/domains/edu.in/srmuniv",
3157
3160
  "lib/domains/edu.iq/auis",
3158
3161
  "lib/domains/edu.iq/muc",
3159
3162
  "lib/domains/edu.iq/nahrainuniv",
@@ -6199,6 +6202,7 @@ Gem::Specification.new do |s|
6199
6202
  "lib/domains/eu/carolus-magnus-university",
6200
6203
  "lib/domains/eu/coleurope",
6201
6204
  "lib/domains/eu/ensam",
6205
+ "lib/domains/eu/epitech",
6202
6206
  "lib/domains/eu/escpeurope",
6203
6207
  "lib/domains/eu/ibss",
6204
6208
  "lib/domains/eu/it-sudparis",
@@ -6210,6 +6214,7 @@ Gem::Specification.new do |s|
6210
6214
  "lib/domains/eun.eg/msa",
6211
6215
  "lib/domains/fi/aalto",
6212
6216
  "lib/domains/fi/abo",
6217
+ "lib/domains/fi/arcada",
6213
6218
  "lib/domains/fi/businesscollege",
6214
6219
  "lib/domains/fi/cou",
6215
6220
  "lib/domains/fi/diak",
@@ -6374,9 +6379,11 @@ Gem::Specification.new do |s|
6374
6379
  "lib/domains/fr/sorbon",
6375
6380
  "lib/domains/fr/sorbonne",
6376
6381
  "lib/domains/fr/supaero",
6382
+ "lib/domains/fr/supbiotech",
6377
6383
  "lib/domains/fr/supco-amiens",
6378
6384
  "lib/domains/fr/supco-montpellier",
6379
6385
  "lib/domains/fr/supelec",
6386
+ "lib/domains/fr/supinternet",
6380
6387
  "lib/domains/fr/u-3mrs",
6381
6388
  "lib/domains/fr/u-bordeaux",
6382
6389
  "lib/domains/fr/u-bordeaux2",
@@ -6568,6 +6575,7 @@ Gem::Specification.new do |s|
6568
6575
  "lib/domains/hu/szie",
6569
6576
  "lib/domains/hu/tkbf",
6570
6577
  "lib/domains/hu/u-szeged",
6578
+ "lib/domains/hu/uni-corvinus",
6571
6579
  "lib/domains/hu/uni-miskolc",
6572
6580
  "lib/domains/hu/uni-pannon",
6573
6581
  "lib/domains/hu/unideb",
@@ -6948,7 +6956,9 @@ Gem::Specification.new do |s|
6948
6956
  "lib/domains/net.pe/rcp",
6949
6957
  "lib/domains/net.ph/evis",
6950
6958
  "lib/domains/net/bracuniversity",
6959
+ "lib/domains/net/e-artsup",
6951
6960
  "lib/domains/net/eastafricauniversity",
6961
+ "lib/domains/net/etna-alternance",
6952
6962
  "lib/domains/net/gitis",
6953
6963
  "lib/domains/net/gulfuniversity",
6954
6964
  "lib/domains/net/iraquniversity",
@@ -6993,9 +7003,11 @@ Gem::Specification.new do |s|
6993
7003
  "lib/domains/nl/nikhef",
6994
7004
  "lib/domains/nl/ou",
6995
7005
  "lib/domains/nl/roac",
7006
+ "lib/domains/nl/roceindhoven",
6996
7007
  "lib/domains/nl/rocvantwente",
6997
7008
  "lib/domains/nl/ru",
6998
7009
  "lib/domains/nl/rug",
7010
+ "lib/domains/nl/summacollege",
6999
7011
  "lib/domains/nl/tilburguniversity",
7000
7012
  "lib/domains/nl/tudelft",
7001
7013
  "lib/domains/nl/tue",
@@ -7112,6 +7124,7 @@ Gem::Specification.new do |s|
7112
7124
  "lib/domains/org/spartanmed",
7113
7125
  "lib/domains/org/svuonline",
7114
7126
  "lib/domains/org/thiqaruni",
7127
+ "lib/domains/org/toulouse-bs",
7115
7128
  "lib/domains/org/tusol",
7116
7129
  "lib/domains/org/tusom",
7117
7130
  "lib/domains/org/ucapanama",
@@ -7694,6 +7707,7 @@ Gem::Specification.new do |s|
7694
7707
  "lib/domains/zgora.pl/pz",
7695
7708
  "lib/domains/zgora.pl/wsp",
7696
7709
  "lib/swot.rb",
7710
+ "lib/swot/academic_tlds.rb",
7697
7711
  "swot.gemspec",
7698
7712
  "test/helper.rb",
7699
7713
  "test/test_swot.rb"
@@ -7709,26 +7723,26 @@ Gem::Specification.new do |s|
7709
7723
 
7710
7724
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
7711
7725
  s.add_runtime_dependency(%q<public_suffix>, [">= 0"])
7712
- s.add_development_dependency(%q<rake>, ["~> 10.0.4"])
7713
- s.add_development_dependency(%q<shoulda>, [">= 0"])
7726
+ s.add_development_dependency(%q<nokogiri>, ["~> 1.5"])
7727
+ s.add_development_dependency(%q<rake>, ["~> 10.0"])
7714
7728
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
7715
- s.add_development_dependency(%q<bundler>, ["~> 1.5.0"])
7716
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
7729
+ s.add_development_dependency(%q<bundler>, ["~> 1.5"])
7730
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8"])
7717
7731
  else
7718
7732
  s.add_dependency(%q<public_suffix>, [">= 0"])
7719
- s.add_dependency(%q<rake>, ["~> 10.0.4"])
7720
- s.add_dependency(%q<shoulda>, [">= 0"])
7733
+ s.add_dependency(%q<nokogiri>, ["~> 1.5"])
7734
+ s.add_dependency(%q<rake>, ["~> 10.0"])
7721
7735
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
7722
- s.add_dependency(%q<bundler>, ["~> 1.5.0"])
7723
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
7736
+ s.add_dependency(%q<bundler>, ["~> 1.5"])
7737
+ s.add_dependency(%q<jeweler>, ["~> 1.8"])
7724
7738
  end
7725
7739
  else
7726
7740
  s.add_dependency(%q<public_suffix>, [">= 0"])
7727
- s.add_dependency(%q<rake>, ["~> 10.0.4"])
7728
- s.add_dependency(%q<shoulda>, [">= 0"])
7741
+ s.add_dependency(%q<nokogiri>, ["~> 1.5"])
7742
+ s.add_dependency(%q<rake>, ["~> 10.0"])
7729
7743
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
7730
- s.add_dependency(%q<bundler>, ["~> 1.5.0"])
7731
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
7744
+ s.add_dependency(%q<bundler>, ["~> 1.5"])
7745
+ s.add_dependency(%q<jeweler>, ["~> 1.8"])
7732
7746
  end
7733
7747
  end
7734
7748
 
@@ -7,12 +7,8 @@ rescue Bundler::BundlerError => e
7
7
  $stderr.puts "Run `bundle install` to install missing gems"
8
8
  exit e.status_code
9
9
  end
10
- require 'test/unit'
11
- require 'shoulda'
10
+ require 'minitest/autorun'
12
11
 
13
12
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
13
  $LOAD_PATH.unshift(File.dirname(__FILE__))
15
14
  require 'swot'
16
-
17
- class Test::Unit::TestCase
18
- end
@@ -1,8 +1,8 @@
1
1
  # encoding: UTF-8
2
2
  require 'helper'
3
3
 
4
- class TestEmail < Test::Unit::TestCase
5
- should "recognizes academic email addresses and domains" do
4
+ describe Swot do
5
+ it "recognizes academic email addresses and domains" do
6
6
  assert_equal Swot::is_academic?('lreilly@stanford.edu'), true
7
7
  assert_equal Swot::is_academic?('LREILLY@STANFORD.EDU'), true
8
8
  assert_equal Swot::is_academic?('Lreilly@Stanford.Edu'), true
@@ -43,25 +43,32 @@ class TestEmail < Test::Unit::TestCase
43
43
  assert_equal Swot::is_academic?(' stanford.edu'), true
44
44
  assert_equal Swot::is_academic?('lee@strath.ac.uk '), true
45
45
  assert_equal Swot::is_academic?(' gmail.com '), false
46
+
47
+ assert_equal Swot::is_academic?('lee@stud.uni-corvinus.hu'), true
46
48
  end
47
49
 
48
- should "returns name of valid institution" do
50
+ it "returns name of valid institution" do
49
51
  assert_equal Swot::get_institution_name('lreilly@cs.strath.ac.uk'), "University of Strathclyde"
50
52
  assert_equal Swot::get_institution_name('lreilly@fadi.at'), "BRG Fadingerstraße Linz, Austria"
51
53
  end
52
54
 
53
- should "returns nil when institution invalid" do
55
+ it "returns nil when institution invalid" do
54
56
  assert_equal Swot::get_institution_name('foo@shop.com'), nil
55
57
  end
56
58
 
57
- should "test aliased methods" do
59
+ it "test aliased methods" do
58
60
  assert_equal Swot::academic?('stanford.edu'), true
59
61
  assert_equal Swot::school_name('lreilly@cs.strath.ac.uk'), "University of Strathclyde"
60
62
  end
61
63
 
62
- should "fail blacklisted domains" do
63
- ["si.edu", " si.edu ", "imposter@si.edu"].each do |domain|
64
+ it "fail blacklisted domains" do
65
+ ["si.edu", " si.edu ", "imposter@si.edu", "foo.si.edu"].each do |domain|
64
66
  assert_equal false, Swot::is_academic?(domain), "#{domain} should be denied"
65
67
  end
66
68
  end
69
+
70
+ it "not err on tld-only domains" do
71
+ Swot::is_academic? ".com"
72
+ assert_equal false, Swot::is_academic?(".com")
73
+ end
67
74
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Reilly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-01 00:00:00.000000000 Z
11
+ date: 2014-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: public_suffix
@@ -25,33 +25,33 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 10.0.4
33
+ version: '1.5'
34
34
  type: :development
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: 10.0.4
40
+ version: '1.5'
41
41
  - !ruby/object:Gem::Dependency
42
- name: shoulda
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '10.0'
48
48
  type: :development
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'
54
+ version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rdoc
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: 1.5.0
75
+ version: '1.5'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: 1.5.0
82
+ version: '1.5'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: jeweler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: 1.8.3
89
+ version: '1.8'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: 1.8.3
96
+ version: '1.8'
97
97
  description: email helpers
98
98
  email: lee@leereilly.net
99
99
  executables: []
@@ -421,6 +421,7 @@ files:
421
421
  - lib/domains/ac.in/bitmesra
422
422
  - lib/domains/ac.in/bits-pilani
423
423
  - lib/domains/ac.in/daiict
424
+ - lib/domains/ac.in/gtu
424
425
  - lib/domains/ac.in/iiita
425
426
  - lib/domains/ac.in/iiitd
426
427
  - lib/domains/ac.in/iiitdmj
@@ -435,6 +436,8 @@ files:
435
436
  - lib/domains/ac.in/nirmauni
436
437
  - lib/domains/ac.in/nitc
437
438
  - lib/domains/ac.in/sastra
439
+ - lib/domains/ac.in/srmuniv
440
+ - lib/domains/ac.in/unipune
438
441
  - lib/domains/ac.in/vit
439
442
  - lib/domains/ac.in/vvpedulink
440
443
  - lib/domains/ac.ir/acmt
@@ -1092,6 +1095,7 @@ files:
1092
1095
  - lib/domains/ac.nz/massey
1093
1096
  - lib/domains/ac.nz/openpolytechnic
1094
1097
  - lib/domains/ac.nz/otago
1098
+ - lib/domains/ac.nz/uclive
1095
1099
  - lib/domains/ac.nz/vuw
1096
1100
  - lib/domains/ac.nz/waikato
1097
1101
  - lib/domains/ac.pa/institutoteima
@@ -1988,6 +1992,7 @@ files:
1988
1992
  - lib/domains/com/icn-nancy
1989
1993
  - lib/domains/com/icsw
1990
1994
  - lib/domains/com/imi-luzern
1995
+ - lib/domains/com/ionis-stm
1991
1996
  - lib/domains/com/isbm-school
1992
1997
  - lib/domains/com/islamicug
1993
1998
  - lib/domains/com/iu-travnik
@@ -3237,8 +3242,6 @@ files:
3237
3242
  - lib/domains/edu.hn/upnfm
3238
3243
  - lib/domains/edu.hn/usps
3239
3244
  - lib/domains/edu.ht/ueh
3240
- - lib/domains/edu.in/gtu
3241
- - lib/domains/edu.in/srmuniv
3242
3245
  - lib/domains/edu.iq/auis
3243
3246
  - lib/domains/edu.iq/muc
3244
3247
  - lib/domains/edu.iq/nahrainuniv
@@ -6284,6 +6287,7 @@ files:
6284
6287
  - lib/domains/eu/carolus-magnus-university
6285
6288
  - lib/domains/eu/coleurope
6286
6289
  - lib/domains/eu/ensam
6290
+ - lib/domains/eu/epitech
6287
6291
  - lib/domains/eu/escpeurope
6288
6292
  - lib/domains/eu/ibss
6289
6293
  - lib/domains/eu/it-sudparis
@@ -6295,6 +6299,7 @@ files:
6295
6299
  - lib/domains/eun.eg/msa
6296
6300
  - lib/domains/fi/aalto
6297
6301
  - lib/domains/fi/abo
6302
+ - lib/domains/fi/arcada
6298
6303
  - lib/domains/fi/businesscollege
6299
6304
  - lib/domains/fi/cou
6300
6305
  - lib/domains/fi/diak
@@ -6459,9 +6464,11 @@ files:
6459
6464
  - lib/domains/fr/sorbon
6460
6465
  - lib/domains/fr/sorbonne
6461
6466
  - lib/domains/fr/supaero
6467
+ - lib/domains/fr/supbiotech
6462
6468
  - lib/domains/fr/supco-amiens
6463
6469
  - lib/domains/fr/supco-montpellier
6464
6470
  - lib/domains/fr/supelec
6471
+ - lib/domains/fr/supinternet
6465
6472
  - lib/domains/fr/u-3mrs
6466
6473
  - lib/domains/fr/u-bordeaux
6467
6474
  - lib/domains/fr/u-bordeaux2
@@ -6653,6 +6660,7 @@ files:
6653
6660
  - lib/domains/hu/szie
6654
6661
  - lib/domains/hu/tkbf
6655
6662
  - lib/domains/hu/u-szeged
6663
+ - lib/domains/hu/uni-corvinus
6656
6664
  - lib/domains/hu/uni-miskolc
6657
6665
  - lib/domains/hu/uni-pannon
6658
6666
  - lib/domains/hu/unideb
@@ -7033,7 +7041,9 @@ files:
7033
7041
  - lib/domains/net.pe/rcp
7034
7042
  - lib/domains/net.ph/evis
7035
7043
  - lib/domains/net/bracuniversity
7044
+ - lib/domains/net/e-artsup
7036
7045
  - lib/domains/net/eastafricauniversity
7046
+ - lib/domains/net/etna-alternance
7037
7047
  - lib/domains/net/gitis
7038
7048
  - lib/domains/net/gulfuniversity
7039
7049
  - lib/domains/net/iraquniversity
@@ -7078,9 +7088,11 @@ files:
7078
7088
  - lib/domains/nl/nikhef
7079
7089
  - lib/domains/nl/ou
7080
7090
  - lib/domains/nl/roac
7091
+ - lib/domains/nl/roceindhoven
7081
7092
  - lib/domains/nl/rocvantwente
7082
7093
  - lib/domains/nl/ru
7083
7094
  - lib/domains/nl/rug
7095
+ - lib/domains/nl/summacollege
7084
7096
  - lib/domains/nl/tilburguniversity
7085
7097
  - lib/domains/nl/tudelft
7086
7098
  - lib/domains/nl/tue
@@ -7197,6 +7209,7 @@ files:
7197
7209
  - lib/domains/org/spartanmed
7198
7210
  - lib/domains/org/svuonline
7199
7211
  - lib/domains/org/thiqaruni
7212
+ - lib/domains/org/toulouse-bs
7200
7213
  - lib/domains/org/tusol
7201
7214
  - lib/domains/org/tusom
7202
7215
  - lib/domains/org/ucapanama
@@ -7779,6 +7792,7 @@ files:
7779
7792
  - lib/domains/zgora.pl/pz
7780
7793
  - lib/domains/zgora.pl/wsp
7781
7794
  - lib/swot.rb
7795
+ - lib/swot/academic_tlds.rb
7782
7796
  - swot.gemspec
7783
7797
  - test/helper.rb
7784
7798
  - test/test_swot.rb
@@ -1 +0,0 @@
1
- Gujarat Technological University
@@ -1 +0,0 @@
1
- SRM University