1 REQUIRE STR@ ~ac
/lib
/str5
.f
2 REQUIRE new
-hash ~pinka
/lib
/hash
-table2
.f
3 REQUIRE cat ~ygrek
/lib
/cat
.f
4 REQUIRE AsQWord ~pinka
/spf
/quoted
-word
.f
5 REQUIRE OCCUPY ~pinka
/samples
/2005/lib
/append
-file
.f
6 REQUIRE MD5 ~clf
/md5
-ts
.f
7 REQUIRE LAY
-PATH ~pinka
/samples
/2005/lib
/lay
-path
.f \ creation of path directories
8 REQUIRE NUMBER ~ygrek
/lib
/parse
.f
9 REQUIRE list
-make ~ygrek
/lib
/list
/make
.f
10 REQUIRE list
-ext ~ygrek
/lib
/list
/ext
.f
11 REQUIRE FileLines
=> ~ygrek
/lib
/filelines
.f
17 [UNDEFINED
] WINAPI
: [IF]
18 REQUIRE READDIR ~ygrek
/lib
/linux
/findfile
.f
20 : FIND
-FILES
-R FIND
-FILES
;
24 REQUIRE ITERATE
-FILES ~profit
/lib
/iterate
-files
.f
29 : STR
>PAD
( s
-- a u
)
30 DUP STR@
/PAD MIN
>R PAD R@ CMOVE
32 PAD R
> 2DUP
+ 0 SWAP C
! ;
34 : FORCE
-PATH
-CATCH
2DUP LAY
-PATH
-CATCH
;
39 : fullpath
( `path
-- `path
' ) datadir " {s}/{s}" STR>PAD ;
40 : dirname ( `name -- `dir ) MD5 fullpath ;
41 : name-version-file ( `name version -- `file ) -ROT dirname " {s}/{n}" STR>PAD ;
42 : update-catalog ( `name n -- `name n )
43 DUP 0 <> IF EXIT THEN \ no need to update - it is already there
45 2DUP `catalog fullpath FORCE-PATH-CATCH DROP ATTACH-LINE-CATCH DROP \ FIXME logging here
50 \ NB instead of CUT-FILENAME and FIND-FILES better use simply READDIR but it is not implemented on Win32
51 : get-versions ( `name -- nl ) dirname LAMBDA{ NIP IF 2DROP EXIT THEN CUT-FILENAME NUMBER IF % THEN } %[ FIND-FILES ]% ;
52 : latest-version ( `name - n ) get-versions 0 OVER ['] MAX list
::iter SWAP list
::free
;
53 : store
( `content `name
-- ) 2DUP latest
-version update
-catalog
1+ name
-version
-file
54 FORCE
-PATH
-CATCH DROP OCCUPY
-CATCH DROP
; \ FIXME logging here
56 : exists
( `name
-- ?
) dirname FILE
-EXIST
;
57 : get
-xml
-version
( `name version
-- h TRUE | FALSE
)
58 name
-version
-file __cat
IF STRFREE FALSE EXIT
THEN
59 ( s
) small
-hash
{ s h
}
60 s STR@ `content h HASH
!
64 : get
-xml
-latest
( `name
-- h TRUE | FALSE
)
65 2DUP latest
-version ?DUP
0 = IF 2DROP FALSE EXIT
THEN
68 : all
=> ( --> a u \
<-- ) PRO `catalog fullpath FileLines
=> DUP STR@ CONT
;
76 \ `page detail
::dirname
:NONAME
. . TYPE CR
; READDIR
82 \ `page latest
-version
.
84 `MainPage
.xml FILE `MainPage store
85 `article
.xml FILE `article store
86 `Rules
.xml FILE `Rules store