v
Зеркало из https://github.com/vlang/v
5 месяцев назад
25 дней назад
README.md
Description
The purpose of the encoding.txtar
module, is best described in the original
Go source:
Package txtar implements a trivial text-based file archive format.
The goals for the format are:
* be trivial enough to create and edit by hand.
* be able to store trees of text files describing go command test cases.
* diff nicely in git history and code reviews.
Non-goals include:
* being a completely general archive format
* storing binary data
* storing file modes
* storing special files like symbolic links, and so on.
Txtar format spec
See the spec in the txtar
Go package source code, linked above:
* A txtar archive is zero or more comment lines and then a sequence of file entries.
* Each file entry begins with a file marker line of the form "-- FILENAME --"
and is followed by zero or more file content lines making up the file data.
* The comment or file content ends at the next file marker line.
* The file marker line must begin with the three-byte sequence "-- "
and end with the three-byte sequence " --", but the enclosed
file name can be surrounding by additional white space,
all of which is stripped.
* If the txtar file is missing a trailing newline on the final line,
parsers should consider a final newline to be present anyway.
* There are no possible syntax errors in a txtar archive.
Example
import osimport encoding.txtar
a := txtar.parse('commentline1line2-- file.txt --some content that will go into file.txtsome more content-- a/b/c/file.v --import osdump(os.args)-- bcd/def/another.v --dump(2+2)')assert a.files.len == 2assert a.files[0].path == 'file.txt'assert a.files[2].path == 'bcd/def/another.v'
tfolder := os.join_path(os.temp_dir(), 'xyz')txtar.unpack(a, tfolder)!assert os.exists(os.join_path(tfolder, 'bcd/def/another.v'))b := txtar.pack(tfolder, '')!assert b.files.len == a.files.lenos.rmdir_all(tfolder)!