Adds compatibility for Nimrod's 0.9.4 compiler.

This commit is contained in:
Grzegorz Adam Hankiewicz 2014-07-17 16:33:18 +02:00
commit 244a4b5b14
3 changed files with 31 additions and 3 deletions

View file

@ -9,4 +9,4 @@ bin = "babel"
srcDir = "src"
[Deps]
Requires: "nimrod >= 0.9.5"
Requires: "nimrod >= 0.9.4"

View file

@ -6,8 +6,8 @@ import httpclient, parseopt, os, strutils, osproc, pegs, tables, parseutils,
from sequtils import toSeq
import babelpkg/packageinfo, babelpkg/version, babelpkg/tools, babelpkg/download,
babelpkg/config
import babelpkg/packageinfo, babelpkg/version, babelpkg/tools,
babelpkg/download, babelpkg/config, babelpkg/compat
when not defined(windows):
from posix import getpid

28
src/babelpkg/compat.nim Normal file
View file

@ -0,0 +1,28 @@
# Copyright (C) Dominik Picheta. All rights reserved.
# BSD License. Look at license.txt for more info.
## This module contains additional code from the development version of
## Nimrod's standard library. These procs are required to be able to compile
## against the last stable release 0.9.4. Once 0.9.6 is release these procs
## will disappear.
import json
when not defined(`json.{}`):
proc `{}`*(node: PJsonNode, key: string): PJsonNode =
## Transverses the node and gets the given value. If any of the
## names does not exist, returns nil
result = node
if isNil(node): return nil
result = result[key]
when not defined(`json.{}=`):
proc `{}=`*(node: PJsonNode, names: varargs[string], value: PJsonNode) =
## Transverses the node and tries to set the value at the given location
## to `value` If any of the names are missing, they are added
var node = node
for i in 0..(names.len-2):
if isNil(node[names[i]]):
node[names[i]] = newJObject()
node = node[names[i]]
node[names[names.len-1]] = value