summaryrefslogtreecommitdiff
path: root/cli/source/main/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinmetric.scala
diff options
context:
space:
mode:
Diffstat (limited to 'cli/source/main/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinmetric.scala')
-rwxr-xr-xcli/source/main/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinmetric.scala54
1 files changed, 16 insertions, 38 deletions
diff --git a/cli/source/main/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinmetric.scala b/cli/source/main/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinmetric.scala
index 6146750..9cfb021 100755
--- a/cli/source/main/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinmetric.scala
+++ b/cli/source/main/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinmetric.scala
@@ -3,43 +3,21 @@ package com.rockymadden.stringmetric.cli.similarity
import com.rockymadden.stringmetric.cli._
import com.rockymadden.stringmetric.similarity.LevenshteinMetric
-/**
- * The levenshteinmetric [[com.rockymadden.stringmetric.cli.Command]]. Compares the number of characters that two
- * strings are different from one another via insertion, deletion, and substitution.
- */
-object levenshteinmetric extends Command {
- override def main(args: Array[String]): Unit = {
- val options: OptionMap = args
+case object levenshteinmetric extends Command(
+ (opts) =>
+ "Compares the number of characters that two strings are different from one another via insertion, deletion, " +
+ "and substitution." + Ls + Ls +
+ "Syntax:" + Ls +
+ Tab + "levenshteinmetric [Options] string1 string2..." + Ls + Ls +
+ "Options:" + Ls +
+ Tab + "-h, --help" + Ls +
+ Tab + Tab + "Outputs description, syntax, and options.",
+ (opts) => opts.contains('dashless) && (opts('dashless): Array[String]).length == 2,
+ (opts) => {
+ val strings: Array[String] = opts('dashless)
- try
- if (options.contains('h) || options.contains('help)) {
- help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): Array[String]).length == 2) {
- execute(options)
- exit(options)
- } else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch { case e: Throwable => error(e, options) }
+ LevenshteinMetric.compare(strings(0), strings(1))
+ .map(_.toString)
+ .getOrElse("not comparable")
}
-
- override def help(): Unit = {
- val ls = sys.props("line.separator")
- val tab = " "
-
- println(
- "Compares the number of characters that two strings are different from one another via insertion, deletion, " +
- "and substitution." + ls + ls +
- "Syntax:" + ls +
- tab + "levenshteinmetric [Options] string1 string2..." + ls + ls +
- "Options:" + ls +
- tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options."
- )
- }
-
- override def execute(options: OptionMap): Unit = {
- val strings: Array[String] = options('dashless)
-
- println(LevenshteinMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
- }
-}
+)