Add File module

This commit is contained in:
Tissevert 2022-07-25 22:03:33 +02:00
parent 07812287be
commit 8e9acf172c
3 changed files with 63 additions and 0 deletions

5
CHANGELOG.md Normal file
View file

@ -0,0 +1,5 @@
# Revision history for WTK
## 0.1.0 -- 2022-07-25
* Start WTK around a simple file handling module.

25
guix.scm Normal file
View file

@ -0,0 +1,25 @@
(use-modules (guix build-system copy)
(guix gexp)
(guix git-download)
(guix licenses)
(guix packages))
(let
((%source-dir (dirname (current-filename))))
(package
(name "sjw-wtk")
(version "devel")
(source
(local-file %source-dir
#:recursive? #t
#:select? (git-predicate %source-dir)))
(build-system copy-build-system)
(arguments
'(#:install-plan
'(("src" "lib/SJW/WTK"))))
(home-page "https://git.marvid.fr/Tissevert/WTK")
(synopsis "The Web Tool Kit")
(description
"The Web Tool Kit aims at providing high-level abstraction modules to
build web applications easily.")
(license gpl3+)))

33
src/WTK/File.js Normal file
View file

@ -0,0 +1,33 @@
import * as Dom from UnitJS.Dom;
return {
load: load,
pick: pick,
save: save
};
function pick(attributes) {
return function(f) {
attributes.type = 'file';
var input = Dom.make('input', attributes);
input.addEventListener('change', function() {
f(input);
});
input.click();
}
}
function load(file) {
return function(f) {
var fileReader = new FileReader();
fileReader.addEventListener('load', function() {
f(fileReader.result);
})
fileReader.readAsText(file);
};
}
function save(data, name) {
var a = Dom.make('a', {download: name, href: data});
a.click();
}