diff --git a/README.md b/README.md index e5a38edd..5213a43a 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,9 @@ ## 格式规范 请参看已有章节的规范, 要注意的是, 每个章节在底部都需要有一个links节, 包含"目录", "上一节", "下一节"的链接 +##如何编译 +目前可以把相应的Markdown编译成html文件,执行`go build build.go`,执行生成的文件,就会在底目录下生成相应的html文件 + ##致谢 首先要感谢golang的QQ群102319854,里面的每一个人都很热心,同时要特别感谢几个人 diff --git a/build.go b/build.go new file mode 100644 index 00000000..b8522a06 --- /dev/null +++ b/build.go @@ -0,0 +1,56 @@ +package main + +import ( + "fmt" + "github.com/russross/blackfriday" + "io/ioutil" + "os" + "path/filepath" + "strings" +) + +//定义一个访问者结构体 +type Visitor struct{} + +func (self *Visitor) visit(path string, f os.FileInfo, err error) error { + if f == nil { + return err + } + if f.IsDir() { + return nil + } else if (f.Mode() & os.ModeSymlink) > 0 { + return nil + } else { + if strings.Contains(f.Name(), ".md") { + fmt.Println(f) + file, err := os.Open(f.Name()) + if err != nil { + return err + } + input, _ := ioutil.ReadAll(file) + output := blackfriday.MarkdownCommon(input) + var out *os.File + if out, err = os.Create(f.Name() + ".html"); err != nil { + fmt.Fprintf(os.Stderr, "Error creating %s: %v", f.Name(), err) + os.Exit(-1) + } + defer out.Close() + if _, err = out.Write(output); err != nil { + fmt.Fprintln(os.Stderr, "Error writing output:", err) + os.Exit(-1) + } + } + } + return nil +} + +func main() { + v := &Visitor{} + err := filepath.Walk("./", func(path string, f os.FileInfo, err error) error { + return v.visit(path, f, err) + }) + + if err != nil { + fmt.Printf("filepath.Walk() returned %v\n", err) + } +}