class WebCoso::File {
has Str $.path;
has $.lang;
has $!contents;
multi method new($self: $path) {
$self.bless(:$path);
}
submethod BUILD(:$lang, Str(Cool) :$!path) {
$!lang = $lang.Str if $lang.defined;
}
multi method contents() {
return $!contents //= $.parse();
}
multi method contents($new_contents) {
return $!contents = $.serialise($new_contents);
}
method parse() {
return $.path.IO.slurp();
}
method serialise($contents) {
$.path.IO.spurt($contents);
return $contents;
}
method modified() {
return $.path.IO.modified;
}
}