Skip to content

Commit

Permalink
Return err or nil
Browse files Browse the repository at this point in the history
  • Loading branch information
mattn committed Oct 10, 2019
1 parent e110711 commit 55305cf
Showing 1 changed file with 29 additions and 20 deletions.
49 changes: 29 additions & 20 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func (zf *file) extract(rel *Relationship, w io.Writer) error {
b := make([]byte, f.UncompressedSize64)
_, err = rc.Read(b)
if err != nil {
log.Fatal(err)
return err
}
if zf.embed {
fmt.Fprintf(w, "![](data:image/png;base64,%s)", base64.StdEncoding.EncodeToString(b))
Expand All @@ -85,12 +85,12 @@ func (zf *file) extract(rel *Relationship, w io.Writer) error {
return nil
}

func (zf *file) walk(node Node, w io.Writer) error {
func (zf *file) walk(node *Node, w io.Writer) error {
switch node.XMLName.Local {
case "hyperlink":
fmt.Fprint(w, "[")
for _, n := range node.Nodes {
if err := zf.walk(n, w); err != nil {
if err := zf.walk(&n, w); err != nil {
return err
}
}
Expand Down Expand Up @@ -131,7 +131,7 @@ func (zf *file) walk(node Node, w io.Writer) error {
}
}
for _, n := range node.Nodes {
if err := zf.walk(n, w); err != nil {
if err := zf.walk(&n, w); err != nil {
return err
}
}
Expand All @@ -147,7 +147,7 @@ func (zf *file) walk(node Node, w io.Writer) error {
continue
}
var cbuf bytes.Buffer
if err := zf.walk(tc, &cbuf); err != nil {
if err := zf.walk(&tc, &cbuf); err != nil {
return err
}
cols = append(cols, strings.Replace(cbuf.String(), "\n", "", -1))
Expand Down Expand Up @@ -227,7 +227,7 @@ func (zf *file) walk(node Node, w io.Writer) error {
fmt.Fprint(w, "~~")
}
for _, n := range node.Nodes {
if err := zf.walk(n, w); err != nil {
if err := zf.walk(&n, w); err != nil {
return err
}
}
Expand All @@ -242,7 +242,7 @@ func (zf *file) walk(node Node, w io.Writer) error {
}
case "p":
for _, n := range node.Nodes {
if err := zf.walk(n, w); err != nil {
if err := zf.walk(&n, w); err != nil {
return err
}
}
Expand All @@ -264,14 +264,14 @@ func (zf *file) walk(node Node, w io.Writer) error {
case "txbxContent":
var cbuf bytes.Buffer
for _, n := range node.Nodes {
if err := zf.walk(n, &cbuf); err != nil {
if err := zf.walk(&n, &cbuf); err != nil {
return err
}
}
fmt.Fprintln(w, "\n```\n"+cbuf.String()+"```")
default:
for _, n := range node.Nodes {
if err := zf.walk(n, w); err != nil {
if err := zf.walk(&n, w); err != nil {
return err
}
}
Expand All @@ -280,7 +280,24 @@ func (zf *file) walk(node Node, w io.Writer) error {
return nil
}

func docx2txt(arg string, embed bool) error {
func readFile(f *zip.File) (*Node, error) {
rc, err := f.Open()
defer rc.Close()

b, _ := ioutil.ReadAll(rc)
if err != nil {
return nil, err
}

var node Node
err = xml.Unmarshal(b, &node)
if err != nil {
return nil, err
}
return &node, nil
}

func docx2md(arg string, embed bool) error {
r, err := zip.OpenReader(arg)
if err != nil {
return err
Expand Down Expand Up @@ -308,19 +325,11 @@ func docx2txt(arg string, embed bool) error {

for _, f := range r.File {
if f.Name == "word/document.xml" {
rc, err := f.Open()
defer rc.Close() // TODO do not call defer in loop

b, _ := ioutil.ReadAll(rc)
node, err := readFile(f)
if err != nil {
return err
}

var node Node
err = xml.Unmarshal(b, &node)
if err != nil {
return err
}
var buf bytes.Buffer
zf := &file{
r: r,
Expand All @@ -343,7 +352,7 @@ func main() {
flag.BoolVar(&embed, "embed", false, "embed resources")
flag.Parse()
for _, arg := range flag.Args() {
if err := docx2txt(arg, embed); err != nil {
if err := docx2md(arg, embed); err != nil {
log.Fatal(err)
}
}
Expand Down

0 comments on commit 55305cf

Please sign in to comment.