From 89238c53531097e2dbc259752d3ae36063a88fd5 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Wed, 22 Oct 2014 12:10:46 +0400 Subject: [PATCH] Fix alumni domain detection for Spanish and Catalan. --- src/swot/Swot.kt | 17 +++++++++++++---- test/swot/SwotTest.kt | 11 +++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/swot/Swot.kt b/src/swot/Swot.kt index cf4b6d8a98..5b0e6c4887 100644 --- a/src/swot/Swot.kt +++ b/src/swot/Swot.kt @@ -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 { diff --git a/test/swot/SwotTest.kt b/test/swot/SwotTest.kt index 509a3bc8a1..8773a9ebd1 100644 --- a/test/swot/SwotTest.kt +++ b/test/swot/SwotTest.kt @@ -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. + } }