Commit 6a61499847b91eec8c08fa0e558da99dbd5e1cf2

Authored by Göran Krampe
1 parent 4aa613cb

Fix for long opts, various cosmetics.

Showing 2 changed files with 11 additions and 13 deletions
lapp.nim
@@ -130,7 +130,7 @@ proc fail(msg: string) = @@ -130,7 +130,7 @@ proc fail(msg: string) =
130 stderr.writeln(progname & ": " & msg) 130 stderr.writeln(progname & ": " & msg)
131 quit(usage) 131 quit(usage)
132 132
133 -proc parseSpec (u: string) = 133 +proc parseSpec(u: string) =
134 var 134 var
135 L: PLexer 135 L: PLexer
136 tok: string 136 tok: string
@@ -152,7 +152,7 @@ proc parseSpec (u: string) = @@ -152,7 +152,7 @@ proc parseSpec (u: string) =
152 if tok == "-" or tok == "--": # flag 152 if tok == "-" or tok == "--": # flag
153 if tok == "-": #short flag 153 if tok == "-": #short flag
154 let flag = L.get 154 let flag = L.get
155 - if len(flag) != 1: fail("short flag has one character!") 155 + if len(flag) != 1: fail("short option has one character!")
156 tok = L.get 156 tok = L.get
157 if tok == ",": # which is alias for long flag 157 if tok == ",": # which is alias for long flag
158 tok = L.get 158 tok = L.get
@@ -219,7 +219,7 @@ proc closeFiles() {.noconv.} = @@ -219,7 +219,7 @@ proc closeFiles() {.noconv.} =
219 if nfiles == 0: return 219 if nfiles == 0: return
220 for i in 1..nfiles: files[i].close() 220 for i in 1..nfiles: files[i].close()
221 221
222 -proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = 222 +proc parseArguments(usage: string, args: seq[string]): Table[string,PValue] =
223 var 223 var
224 vars = initTable[string,PValue]() 224 vars = initTable[string,PValue]()
225 n = len(args) - 1 225 n = len(args) - 1
@@ -231,7 +231,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = @@ -231,7 +231,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] =
231 flagvalues: seq[seq[string]] 231 flagvalues: seq[seq[string]]
232 232
233 proc next(): string = 233 proc next(): string =
234 - if i > n: fail("a flag required a value!") 234 + if i > n: fail("an option required a value!")
235 result = args[i] 235 result = args[i]
236 i += 1 236 i += 1
237 237
@@ -242,12 +242,12 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = @@ -242,12 +242,12 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] =
242 if n < 20: 242 if n < 20:
243 fail("no such argument: " & $n) 243 fail("no such argument: " & $n)
244 else: 244 else:
245 - fail("no such flag " & c) 245 + fail("no such option: " & c)
246 246
247 proc get_spec(name: string): PSpec = 247 proc get_spec(name: string): PSpec =
248 result = parm_spec[name] 248 result = parm_spec[name]
249 if result == nil: 249 if result == nil:
250 - fail("no such flag " & name) 250 + fail("no such option: " & name)
251 251
252 newSeq(flagvalues, 0) 252 newSeq(flagvalues, 0)
253 parseSpec(usage) 253 parseSpec(usage)
@@ -262,7 +262,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = @@ -262,7 +262,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] =
262 if short: # all short args are aliases, even if only to themselves 262 if short: # all short args are aliases, even if only to themselves
263 flag = get_alias(arg[0]) 263 flag = get_alias(arg[0])
264 else: 264 else:
265 - flag = arg 265 + flag = arg[1..high(arg)]
266 info = get_spec(flag) 266 info = get_spec(flag)
267 if info.needsValue: 267 if info.needsValue:
268 if short and len(arg) > 1: # value can follow short flag 268 if short and len(arg) > 1: # value can follow short flag
@@ -291,7 +291,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = @@ -291,7 +291,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] =
291 for flag,info in parm_spec: 291 for flag,info in parm_spec:
292 if not info.used: 292 if not info.used:
293 if info.defVal == "": # no default! 293 if info.defVal == "": # no default!
294 - fail("required flag missing: " & flag) 294 + fail("required option or argument missing: " & flag)
295 flagvalues.add(@[flag,info.defVal]) 295 flagvalues.add(@[flag,info.defVal])
296 296
297 # cool, we have the info, can convert known flags 297 # cool, we have the info, can convert known flags
@@ -348,7 +348,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] = @@ -348,7 +348,7 @@ proc parseArguments (usage: string, args: seq[string]): Table[string,PValue] =
348 348
349 return vars 349 return vars
350 350
351 -proc parse* (usage: string): Table[string,PValue] = 351 +proc parse*(usage: string): Table[string,PValue] =
352 var 352 var
353 args: seq[string] 353 args: seq[string]
354 n = paramCount() 354 n = paramCount()
@@ -363,7 +363,7 @@ when isMainModule: @@ -363,7 +363,7 @@ when isMainModule:
363 -n: (default 10) number of lines 363 -n: (default 10) number of lines
364 -v,--verbose: (bool...) verbosity level 364 -v,--verbose: (bool...) verbosity level
365 -a,--alpha useless parm 365 -a,--alpha useless parm
366 - <files>: (default stdin...) 366 + <file>: (default stdin...)
367 |<out>: (default stdout) 367 |<out>: (default stdout)
368 """ 368 """
369 369
lapp.nimble
1 [Package] 1 [Package]
2 -name = "Lapp for Nim" 2 +name = "lapp"
3 version = "0.1" 3 version = "0.1"
4 author = "Steven Donovan, Göran Krampe" 4 author = "Steven Donovan, Göran Krampe"
5 description = "Opt parser using synopsis as specification, ported from Lua." 5 description = "Opt parser using synopsis as specification, ported from Lua."
6 license = "MIT" 6 license = "MIT"
7 7
8 -bin = "lapp"  
9 -  
10 [Deps] 8 [Deps]
11 Requires: "nimrod >= 0.10" 9 Requires: "nimrod >= 0.10"