Is there any way to automatically parse a case object from a string, in Scala? Using some built in / automatically generated Scala function?
For example, I have these case objects: (please note that there's a sealed parent class)
abstract sealed class FlagReason
case object Spam extends FlagReason
case object Illegal extends FlagReason
case object CopyrightViolation extends FlagReason
case object Other extends FlagReason
and I'm wondering if there's some automatically generated function that works like:
FlagReason.fromString(value: String): FlagReason
where FlagReason("Spam")
would return the Spam
case object.
If there were, then I need not write my own -- which I've done:
object FlagReason {
def fromString(value: String): FlagReason = value match {
case "Spam" => Spam
case "Illegal" => Illegal
case "CopyrightViolation" => CopyrightViolation
case "Other" => Other
}
}
Background: I'm converting my case objects to strings that I use as radio button values in a html form. I'm converting the selected value back to a case object, when I handle the submitted form.
Related info: This is actually possible with Java enums, see e.g. this StackOverflow question: Lookup enum by string value
((I don't think I'm looking for Scala's Parser Combinators. I suppose that were I to use them I'd still need to define the parsing rules myself, rather than having built in "automatic" string to case object conversion))