install() now copies files to ~/.babel/lib/, fixed code as per Araq's critique.
This commit is contained in:
parent
0265915c2c
commit
bcc94d7e76
4 changed files with 77 additions and 38 deletions
18
version.nim
18
version.nim
|
|
@ -17,11 +17,11 @@ type
|
|||
of verLater, verEarlier, verEqLater, verEqEarlier:
|
||||
ver*: TVersion
|
||||
of verIntersect:
|
||||
verI*: tuple[left: PVersionRange, right: PVersionRange]
|
||||
verILeft, verIRight: PVersionRange
|
||||
of verAny:
|
||||
nil
|
||||
|
||||
EParseVersion = object of EBase
|
||||
EParseVersion = object of EInvalidValue
|
||||
|
||||
proc newVersion*(ver: string): TVersion = return TVersion(ver)
|
||||
|
||||
|
|
@ -61,11 +61,10 @@ proc withinRange*(ver: TVersion, ran: PVersionRange): Bool =
|
|||
of verEqEarlier:
|
||||
return ver <= ran.ver
|
||||
of verIntersect:
|
||||
return withinRange(ver, ran.verI.left) and withinRange(ver, ran.verI.right)
|
||||
return withinRange(ver, ran.verILeft) and withinRange(ver, ran.verIRight)
|
||||
of verAny:
|
||||
return True
|
||||
|
||||
|
||||
proc makeRange*(version: string, op: string): PVersionRange =
|
||||
new(result)
|
||||
case op
|
||||
|
|
@ -93,20 +92,19 @@ proc parseVersionRange*(s: string): PVersionRange =
|
|||
of '>', '<', '=':
|
||||
op.add(s[i])
|
||||
of '&':
|
||||
var left = makeRange(version, op)
|
||||
result.kind = verIntersect
|
||||
result.verILeft = makeRange(version, op)
|
||||
|
||||
# Parse everything after &
|
||||
# Recursion <3
|
||||
var right = parseVersionRange(copy(s, i + 1))
|
||||
result.verIRight = parseVersionRange(copy(s, i + 1))
|
||||
|
||||
# Disallow more than one verIntersect. It's pointless and could lead to
|
||||
# major unknown mistakes.
|
||||
if right.kind == verIntersect:
|
||||
if result.verIRight.kind == verIntersect:
|
||||
raise newException(EParseVersion,
|
||||
"Having more than one `&` in a version range is pointless")
|
||||
|
||||
result.kind = verIntersect
|
||||
result.verI = (left, right)
|
||||
|
||||
break
|
||||
|
||||
of '0'..'9', '.':
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue