aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-07-22 13:17:17 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-07-22 13:17:17 +0200
commit7577ba3d593db107cd6e86281b1f95916c196cd1 (patch)
tree2c67ccb828715724cab5fe78930399628e64e0d4
parent4b88a772ecd58b60b67f8feabf10e9fde4c522a5 (diff)
Parse
-rw-r--r--file/file.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/file/file.go b/file/file.go
index 334fdca..8120463 100644
--- a/file/file.go
+++ b/file/file.go
@@ -3,6 +3,7 @@ package file
import (
"bytes"
+ "encoding"
"encoding/base64"
"errors"
"fmt"
@@ -90,3 +91,22 @@ func DecodeFile(fname string) (*Block, error) {
}
return Decode(body)
}
+
+func ParseFile(fname string, u encoding.BinaryUnmarshaler) (string, io.Reader, error) {
+ body, err := ioutil.ReadFile(fname)
+ if err != nil {
+ return "", nil, err
+ }
+ return Parse(body, u)
+}
+
+func Parse(data []byte, u encoding.BinaryUnmarshaler) (string, io.Reader, error) {
+ block, err := Decode(data)
+ if err != nil {
+ return "", nil, err
+ }
+ if err := u.UnmarshalBinary(block.Bytes); err != nil {
+ return "", nil, err
+ }
+ return block.Comment, bytes.NewReader(block.Message), nil
+}