Skip to content

Commit

Permalink
parse month names without case sensitivity
Browse files Browse the repository at this point in the history
fixes #59
  • Loading branch information
hrj committed Mar 4, 2015
1 parent 774f057 commit 42b0eb2
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 6 deletions.
7 changes: 4 additions & 3 deletions base/src/main/scala/co/uproot/abandon/Helper.scala
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ object Helper {
}
}

private val months = List("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
private val shortMonths = List("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
private val months = List("january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december")
private val shortMonths = List("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec")

private def getIndexOf[T](l: Seq[T], e: T) = {
val index = l.indexOf(e)
Expand All @@ -34,7 +34,8 @@ object Helper {
}
}

def getMonthNumber(monthStr: String) = {
def getMonthNumber(monthStrIn: String) = {
val monthStr = monthStrIn.toLowerCase
getIndexOf(months, monthStr).orElse(getIndexOf(shortMonths, monthStr))
}

Expand Down
4 changes: 2 additions & 2 deletions base/src/main/scala/co/uproot/abandon/Parser.scala
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ object AbandonParser extends StandardTokenParsers with PackratParsers {
case name ~ amount ~ commentOpt => SingleTransaction(name, amount, commentOpt)
}

private lazy val dateFrag = ((((integer <~ "/") ~ (integer | ident)) <~ "/") ~ integer) ^? ({
lazy val dateFrag = ((((integer <~ "/") ~ (integer | ident)) <~ "/") ~ integer) ^? ({
case y ~ (m: Int) ~ d if (isValidDate(y, m, d)) =>
Date(y, m, d)
case y ~ (m: String) ~ d if (isValidDate(y, m, d)) =>
Expand Down Expand Up @@ -239,4 +239,4 @@ object ParserHelper {
def reader(s: String) = new PagedSeqReader(PagedSeq.fromStrings(collection.immutable.Seq(s)))
def mkScanner(r: PagedSeqReader) = new AbandonParser.lexical.Scanner(r)
def scanner(s: String) = mkScanner(reader(s))
}
}
23 changes: 22 additions & 1 deletion base/src/test/scala/co/uproot/abandon/ParserTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -398,4 +398,25 @@ class ParserTest extends FlatSpec with Matchers with Inside {
}
}
}
}

"parser" should "parse month names in date" in {
val testInput = List(
"2013/January/1",
"2013/january/1",
"2013/jaNuAry/1",
"2013/Jan/1",
"2013/jan/1"
)

testInput foreach {input =>
val parseResult = AbandonParser.dateFrag(scanner(input))

inside(parseResult) {
case AbandonParser.Success(date, _) =>
date should be(Date(2013, 1, 1))
}
}

}

}

0 comments on commit 42b0eb2

Please sign in to comment.