1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: assocs init kernel memoize namespaces sequences vocabs
4 vocabs.hierarchy vocabs.loader vocabs.metadata vocabs.refresh
8 : reset-vocab-cache ( vocab -- )
10 [ root-cache get delete-at ]
12 \ vocab-file-lines "memoize" word-prop swap
13 '[ drop first vocab-name _ = ] assoc-reject! drop
16 : reset-disk-cache ( -- )
17 \ all-disk-vocabs-recursive reset-memoized
18 \ all-authors reset-memoized
19 \ all-tags reset-memoized ;
21 : reset-cache ( vocab -- )
22 reset-vocab-cache reset-disk-cache ;
24 SINGLETON: cache-observer
28 : forgot-vocab? ( vocab -- ? )
29 vocab-name dictionary get key? not ;
33 M: cache-observer vocab-changed
34 drop dup forgot-vocab? [ reset-vocab-cache ] [ drop ] if
38 f changed-vocabs set-global
39 cache-observer add-vocab-observer
40 ] "vocabs.cache" add-startup-hook