Simply core: don't call directory? and file-modified until after bootstrap
parent
96c4aaf94a
commit
3cddca95ae
|
@ -484,7 +484,6 @@ SYMBOL: interactive-vocabs
|
|||
: finish-parsing ( lines quot -- )
|
||||
file get
|
||||
[ record-form ] keep
|
||||
[ record-modified ] keep
|
||||
[ record-definitions ] keep
|
||||
record-checksum ;
|
||||
|
||||
|
|
|
@ -9,10 +9,7 @@ $nl
|
|||
{ $subsection source-files }
|
||||
"The class of source files:"
|
||||
{ $subsection source-file }
|
||||
"Testing if a source file has been changed on disk:"
|
||||
{ $subsection source-modified? }
|
||||
"Words intended for the parser:"
|
||||
{ $subsection record-modified }
|
||||
{ $subsection record-checksum }
|
||||
{ $subsection record-form }
|
||||
{ $subsection xref-source }
|
||||
|
@ -41,15 +38,6 @@ HELP: source-file
|
|||
}
|
||||
} ;
|
||||
|
||||
HELP: source-modified?
|
||||
{ $values { "path" "a pathname string" } { "?" "a boolean" } }
|
||||
{ $description "Tests if the source file has been modified since it was last loaded. This compares the file's modification time and CRC32 checksum of the file's contents against previously-recorded values." } ;
|
||||
|
||||
HELP: record-modified
|
||||
{ $values { "source-file" source-file } }
|
||||
{ $description "Records the modification time of the source file." }
|
||||
$low-level-note ;
|
||||
|
||||
HELP: record-checksum
|
||||
{ $values { "source-file" source-file } { "lines" "a sequence of strings" } }
|
||||
{ $description "Records the CRC32 checksm of the source file's contents." }
|
||||
|
|
|
@ -1,44 +1,25 @@
|
|||
! Copyright (C) 2007 Slava Pestov.
|
||||
! Copyright (C) 2007, 2008 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: arrays definitions generic assocs kernel math
|
||||
namespaces prettyprint sequences strings vectors words
|
||||
quotations inspector io.styles io combinators sorting
|
||||
splitting math.parser effects continuations debugger
|
||||
io.files io.crc32 io.streams.string vocabs
|
||||
hashtables graphs compiler.units io.encodings.utf8 ;
|
||||
USING: arrays definitions generic assocs kernel math namespaces
|
||||
prettyprint sequences strings vectors words quotations inspector
|
||||
io.styles io combinators sorting splitting math.parser effects
|
||||
continuations debugger io.files io.crc32 vocabs hashtables
|
||||
graphs compiler.units io.encodings.utf8 ;
|
||||
IN: source-files
|
||||
|
||||
SYMBOL: source-files
|
||||
|
||||
TUPLE: source-file
|
||||
path
|
||||
modified checksum
|
||||
checksum
|
||||
uses definitions ;
|
||||
|
||||
: (source-modified?) ( path modified checksum -- ? )
|
||||
pick file-modified rot [ 0 or ] 2apply >
|
||||
[ swap utf8 file-lines lines-crc32 = not ] [ 2drop f ] if ;
|
||||
|
||||
: source-modified? ( path -- ? )
|
||||
dup source-files get at [
|
||||
dup source-file-path ?resource-path
|
||||
over source-file-modified
|
||||
rot source-file-checksum
|
||||
(source-modified?)
|
||||
] [
|
||||
resource-exists?
|
||||
] ?if ;
|
||||
|
||||
: record-modified ( source-file -- )
|
||||
dup source-file-path ?resource-path file-modified
|
||||
swap set-source-file-modified ;
|
||||
|
||||
: record-checksum ( lines source-file -- )
|
||||
swap lines-crc32 swap set-source-file-checksum ;
|
||||
>r lines-crc32 r> set-source-file-checksum ;
|
||||
|
||||
: (xref-source) ( source-file -- pathname uses )
|
||||
dup source-file-path <pathname> swap source-file-uses
|
||||
[ crossref? ] subset ;
|
||||
dup source-file-path <pathname>
|
||||
swap source-file-uses [ crossref? ] subset ;
|
||||
|
||||
: xref-source ( source-file -- )
|
||||
(xref-source) crossref get add-vertex ;
|
||||
|
@ -67,9 +48,7 @@ uses definitions ;
|
|||
|
||||
: reset-checksums ( -- )
|
||||
source-files get [
|
||||
swap ?resource-path dup exists?
|
||||
[
|
||||
over record-modified
|
||||
swap ?resource-path dup exists? [
|
||||
utf8 file-lines swap record-checksum
|
||||
] [ 2drop ] if
|
||||
] assoc-each ;
|
||||
|
|
|
@ -3,7 +3,7 @@ IN: vocabs.loader.tests
|
|||
USING: vocabs.loader tools.test continuations vocabs math
|
||||
kernel arrays sequences namespaces io.streams.string
|
||||
parser source-files words assocs tuples definitions
|
||||
debugger compiler.units ;
|
||||
debugger compiler.units tools.vocabs ;
|
||||
|
||||
! This vocab should not exist, but just in case...
|
||||
[ ] [
|
||||
|
|
|
@ -48,27 +48,6 @@ M: string vocab-root
|
|||
M: vocab-link vocab-root
|
||||
vocab-link-root ;
|
||||
|
||||
: vocab-tests ( vocab -- tests )
|
||||
dup vocab-root [
|
||||
[
|
||||
f >vocab-link dup
|
||||
|
||||
dup "-tests.factor" vocab-dir+ vocab-path+
|
||||
dup resource-exists? [ , ] [ drop ] if
|
||||
|
||||
dup vocab-dir "tests" path+ vocab-path+ dup
|
||||
?resource-path directory keys [ ".factor" tail? ] subset
|
||||
[ path+ , ] with each
|
||||
] { } make
|
||||
] [ drop f ] if ;
|
||||
|
||||
: vocab-files ( vocab -- seq )
|
||||
f >vocab-link [
|
||||
dup vocab-source-path [ , ] when*
|
||||
dup vocab-docs-path [ , ] when*
|
||||
vocab-tests %
|
||||
] { } make ;
|
||||
|
||||
SYMBOL: load-help?
|
||||
|
||||
: source-was-loaded t swap set-vocab-source-loaded? ;
|
||||
|
|
|
@ -25,6 +25,10 @@ ARTICLE: "tools.vocabs" "Vocabulary tools"
|
|||
|
||||
ABOUT: "tools.vocabs"
|
||||
|
||||
HELP: source-modified?
|
||||
{ $values { "path" "a pathname string" } { "?" "a boolean" } }
|
||||
{ $description "Tests if the source file has been modified since it was last loaded. This compares the file's CRC32 checksum of the file's contents against the previously-recorded value." } ;
|
||||
|
||||
HELP: refresh
|
||||
{ $values { "prefix" string } }
|
||||
{ $description "Reloads source files and documentation belonging to loaded vocabularies whose names are prefixed by " { $snippet "prefix" } " which have been modified on disk." } ;
|
||||
|
|
|
@ -3,9 +3,45 @@
|
|||
USING: io.files kernel io.encodings.utf8 vocabs.loader vocabs
|
||||
sequences namespaces math.parser arrays hashtables assocs
|
||||
memoize inspector sorting splitting combinators source-files
|
||||
io debugger continuations compiler.errors init ;
|
||||
io debugger continuations compiler.errors init io.crc32 ;
|
||||
IN: tools.vocabs
|
||||
|
||||
: vocab-tests-file, ( vocab -- )
|
||||
dup "-tests.factor" vocab-dir+ vocab-path+
|
||||
dup resource-exists? [ , ] [ drop ] if ;
|
||||
|
||||
: vocab-tests-dir, ( vocab -- )
|
||||
dup vocab-dir "tests" path+ vocab-path+
|
||||
dup resource-exists? [
|
||||
dup ?resource-path directory keys
|
||||
[ ".factor" tail? ] subset
|
||||
[ path+ , ] with each
|
||||
] [ drop ] if ;
|
||||
|
||||
: vocab-tests ( vocab -- tests )
|
||||
dup vocab-root [
|
||||
[
|
||||
f >vocab-link dup
|
||||
vocab-tests-file,
|
||||
vocab-tests-dir,
|
||||
] { } make
|
||||
] [ drop f ] if ;
|
||||
|
||||
: vocab-files ( vocab -- seq )
|
||||
f >vocab-link [
|
||||
dup vocab-source-path [ , ] when*
|
||||
dup vocab-docs-path [ , ] when*
|
||||
vocab-tests %
|
||||
] { } make ;
|
||||
|
||||
: source-modified? ( path -- ? )
|
||||
dup source-files get at [
|
||||
dup source-file-path ?resource-path utf8 file-lines lines-crc32
|
||||
swap source-file-checksum = not
|
||||
] [
|
||||
resource-exists?
|
||||
] ?if ;
|
||||
|
||||
: modified ( seq quot -- seq )
|
||||
[ dup ] swap compose { } map>assoc
|
||||
[ nip ] assoc-subset
|
||||
|
|
Loading…
Reference in New Issue