better handling of packages, still incomplete

This commit is contained in:
Araq 2014-03-02 15:41:53 +01:00
commit c55f5b34ee
4 changed files with 63 additions and 14 deletions

View file

@ -209,7 +209,38 @@ proc getGeneratedPath: string =
result = if nimcacheDir.len > 0: nimcacheDir else: gProjectPath.shortenDir / result = if nimcacheDir.len > 0: nimcacheDir else: gProjectPath.shortenDir /
genSubDir genSubDir
var packageCache = newStringTable(when FileSystemCaseSensitive:
modeCaseInsensitive
else:
modeCaseSensitive)
iterator myParentDirs(p: string): string =
# XXX os's parentDirs is stupid (multiple yields) and triggers an old bug...
var current = p
while true:
current = current.parentDir
if current.len == 0: break
yield current
proc getPackageName*(path: string): string = proc getPackageName*(path: string): string =
var parents = 0
block packageSearch:
for d in myParentDirs(path):
if packageCache.hasKey(d):
#echo "from cache ", d, " |", packageCache[d], "|", path.splitFile.name
return packageCache[d]
inc parents
for file in walkFiles(d / "*.babel"):
result = file.splitFile.name
break packageSearch
# we also store if we didn't find anything:
if result.isNil: result = ""
for d in myParentDirs(path):
#echo "set cache ", d, " |", result, "|", parents
packageCache[d] = result
dec parents
if parents <= 0: break
when false:
var q = 1 var q = 1
var b = 0 var b = 0
if path[len(path)-1] in {DirSep, AltSep}: q = 2 if path[len(path)-1] in {DirSep, AltSep}: q = 2

View file

@ -0,0 +1,6 @@
[Package]
name = "docutils"
version = "0.9.0"
author = "Andreas Rumpf"
description = "Nimrod's reStructuredText processor."
license = "MIT"

6
lib/stdlib.babel Normal file
View file

@ -0,0 +1,6 @@
[Package]
name = "stdlib"
version = "0.9.0"
author = "Dominik Picheta"
description = "Nimrod's standard library."
license = "MIT"

View file

@ -1,6 +1,11 @@
version 0.9.4 version 0.9.4
============= =============
- fix gensym capture bug
- make the compiler aware of packages
- vm
- at least try to get the basic type zoo ops right
- optimize opcAsgnStr
- fix GC issues - fix GC issues
- test and fix showoff - test and fix showoff
@ -21,8 +26,9 @@ Bugs
version 0.9.x version 0.9.x
============= =============
- memory manager: add a measure of fragmentation
- implement 'union' and 'bits' pragmas - implement 'union' and 'bits' pragmas
- fix closures - fix closures/lambdalifting
- ensure (ref T)(a, b) works as a type conversion and type constructor - ensure (ref T)(a, b) works as a type conversion and type constructor
- optimize 'genericReset'; 'newException' leads to code bloat - optimize 'genericReset'; 'newException' leads to code bloat
- stack-less GC - stack-less GC