]> gitweb.factorcode.org Git - factor.git/blob - core/checksums/checksums.factor
Merge branch 'master' into experimental (untested!)
[factor.git] / core / checksums / checksums.factor
1 ! Copyright (c) 2008 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: sequences math.parser io io.encodings.binary io.files
4 kernel ;
5 IN: checksums
6
7 MIXIN: checksum
8
9 GENERIC: checksum-bytes ( bytes checksum -- value )
10
11 GENERIC: checksum-stream ( stream checksum -- value )
12
13 GENERIC: checksum-lines ( lines checksum -- value )
14
15 M: checksum checksum-stream
16     [ contents ] dip checksum-bytes ;
17
18 M: checksum checksum-lines
19     [ B{ CHAR: \n } join ] dip checksum-bytes ;
20
21 : checksum-file ( path checksum -- value )
22     [ binary <file-reader> ] dip checksum-stream ;
23
24 : hex-string ( seq -- str )
25     [ >hex 2 CHAR: 0 pad-left ] { } map-as concat ;