Fix alumni domain detection for Spanish and Catalan.

This commit is contained in:
Maxim Shafirov 2014-10-22 12:10:46 +04:00
parent 325fa3c595
commit 89238c5353
2 changed files with 24 additions and 4 deletions

View File

@ -1,10 +1,19 @@
package swot
fun isAcademic(emailOrDomain: String): Boolean {
if (emailOrDomain.contains("@alum")) return false
fun isAcademic(email: String): Boolean {
return when {
email.contains("@alumni."),
email.contains("@alumnus."),
email.contains("@alum")
&& email.endsWith(".edu")
&& !email.contains("@alumno")
&& !email.contains("@alumnes")-> false
val parts = domainParts(emailOrDomain)
return !isBlacklisted(parts) && (isUnderTLD(parts) || findSchoolNames(parts).isNotEmpty())
else -> {
val parts = domainParts(email)
!isBlacklisted(parts) && (isUnderTLD(parts) || findSchoolNames(parts).isNotEmpty())
}
}
}
fun findSchoolNames(emailOrDomain: String): List<String> {

View File

@ -52,4 +52,15 @@ class SwotTest : TestCase() {
assertEquals("St. Petersburg State University", findSchoolNames("max@spbu.ru ").single())
assertEquals(0, findSchoolNames("foo@shop.com").size())
}
fun testAlumniDomains() {
assertTrue(isAcademic("me@alumnes.ub.edu")) // University of Barcelona. Alumnes means students in Catalan
assertTrue(isAcademic("me@alumnos.uva.es")) // In Spanish this means... Students!!
assertTrue(isAcademic("me@alumno.ipn.mx")) // one student (from Mexico)
assertTrue(isAcademic("me@alum.us.es")) // That might be shorter...
assertFalse(isAcademic("me@alum.mit.edu")) // But MIT is neither Spanish nor Catalan entry
assertFalse(isAcademic("me@alumnus.tue.nl")) // In Dutch this means... Graduate!!
assertFalse(isAcademic("me@alumnimail.utdallas.edu")) // Good try.
assertTrue(isAcademic("me@alumail.uji.es")) // Yet this one shall pass.
}
}