summary refs log tree commit diff stats
path: root/examples/cross_calculator/nim_commandline
diff options
context:
space:
mode:
Diffstat (limited to 'examples/cross_calculator/nim_commandline')
-rw-r--r--examples/cross_calculator/nim_commandline/nim.cfg4
-rw-r--r--examples/cross_calculator/nim_commandline/nimcalculator.nim109
-rw-r--r--examples/cross_calculator/nim_commandline/readme.txt10
3 files changed, 0 insertions, 123 deletions
diff --git a/examples/cross_calculator/nim_commandline/nim.cfg b/examples/cross_calculator/nim_commandline/nim.cfg
deleted file mode 100644
index 6f0cb4a01..000000000
--- a/examples/cross_calculator/nim_commandline/nim.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-# Nim configuration file.
-# The file is used only to add the path of the backend to the compiler options.
-
-path="../nim_backend"
diff --git a/examples/cross_calculator/nim_commandline/nimcalculator.nim b/examples/cross_calculator/nim_commandline/nimcalculator.nim
deleted file mode 100644
index 3f7674dbb..000000000
--- a/examples/cross_calculator/nim_commandline/nimcalculator.nim
+++ /dev/null
@@ -1,109 +0,0 @@
-# Implements a command line interface against the backend.
-
-import backend, parseopt, strutils
-
-const
-  USAGE = """nimcalculator - Nim cross platform calculator
-  (beta version, only integer addition is supported!)
-
-Usage:
-  nimcalculator [options] [-a=value -b=value]
-Options:
-  -a=value    sets the integer value of the a parameter
-  -b=value    sets the integer value of the b parameter
-  -h, --help  shows this help
-
-If no options are used, an interactive mode is entered.
-"""
-
-type
-  TCommand = enum       # The possible types of operation
-    cmdParams,          # Two valid parameters were provided
-    cmdInteractive      # No parameters were provided, run interactive mode
-
-  TParamConfig = object of RootObj
-    action: TCommand      # store the type of operation
-    paramA, paramB: int   # possibly store the valid parameters
-
-
-proc parseCmdLine(): TParamConfig =
-  ## Parses the commandline.
-  ##
-  ## Returns a TParamConfig structure filled with the proper values or directly
-  ## calls quit() with the appropriate error message.
-  var
-    hasA = false
-    hasB = false
-    p = initOptParser()
-    key, val: TaintedString
-
-  result.action = cmdInteractive # By default presume interactive mode.
-  try:
-    while true:
-      next p
-      key = p.key
-      val = p.val
-
-      case p.kind
-      of cmdArgument:
-        stdout.write USAGE
-        quit "Erroneous argument detected: " & key, 1
-      of cmdLongOption, cmdShortOption:
-        case key.normalize
-        of "help", "h":
-          stdout.write USAGE
-          quit 0
-        of "a":
-          result.paramA = val.parseInt
-          hasA = true
-        of "b":
-          result.paramB = val.parseInt
-          hasB = true
-        else:
-          stdout.write USAGE
-          quit "Unexpected option: " & key, 2
-      of cmdEnd: break
-  except ValueError:
-    stdout.write USAGE
-    quit "Invalid value " & val &  " for parameter " & key, 3
-
-  if hasA and hasB:
-    result.action = cmdParams
-  elif hasA or hasB:
-    stdout.write USAGE
-    quit "Error: provide both A and B to operate in param mode", 4
-
-
-proc parseUserInput(question: string): int =
-  ## Parses a line of user input, showing question to the user first.
-  ##
-  ## If the user input is an empty line quit() is called. Returns the value
-  ## parsed as an integer.
-  while true:
-    echo question
-    let input = stdin.readLine
-    try:
-      result = input.parseInt
-      break
-    except ValueError:
-      if input.len < 1: quit "Blank line detected, quitting.", 0
-      echo "Sorry, `$1' doesn't seem to be a valid integer" % input
-
-proc interactiveMode() =
-  ## Asks the user for two integer values, adds them and exits.
-  let
-    paramA = parseUserInput("Enter the first parameter (blank to exit):")
-    paramB = parseUserInput("Enter the second parameter (blank to exit):")
-  echo "Calculating... $1 + $2 = $3" % [$paramA, $paramB,
-    $backend.myAdd(paramA, paramB)]
-
-
-when isMainModule:
-  ## Main entry point.
-  let opt = parseCmdLine()
-  if cmdParams == opt.action:
-    echo "Param mode: $1 + $2 = $3" % [$opt.paramA, $opt.paramB,
-      $backend.myAdd(opt.paramA, opt.paramB)]
-  else:
-    echo "Entering interactive addition mode"
-    interactiveMode()
diff --git a/examples/cross_calculator/nim_commandline/readme.txt b/examples/cross_calculator/nim_commandline/readme.txt
deleted file mode 100644
index f95bd962e..000000000
--- a/examples/cross_calculator/nim_commandline/readme.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-In this directory you will find the nim commandline version of the
-cross-calculator sample.
-
-The commandline interface can be used non interactively through switches, or
-interactively when running the command without parameters.
-
-Compilation is fairly easy despite having the source split in different
-directories. Thanks to the nim.cfg file, which adds the ../nim_backend
-directory as a search path, you can compile and run the example just fine from
-the command line with 'nim c -r nimcalculator.nim'.