Created
November 13, 2015 23:29
-
-
Save stephenmathieson/148dc9f44bdf8d84a48d to your computer and use it in GitHub Desktop.
Revisions
-
stephenmathieson created this gist
Nov 13, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,67 @@ package main import ( "fmt" "io/ioutil" "net/http" "os" "regexp" ) var fileTemplate = ` package main import "fmt" func main() { } ` var directoryFormat = "./examples/%02d-%s" var fileFormat = "%s/main.go" var expr = regexp.MustCompile(`<li><a href="([\w-]+)">`) func main() { html, err := request("https://gobyexample.com/") check(err) matches := expr.FindAllStringSubmatch(html, -1) for i, name := range matches { dirname := fmt.Sprintf(directoryFormat, i+1, name[1]) filename := fmt.Sprintf(fileFormat, dirname) err := os.MkdirAll(dirname, 0777) check(err) fp, err := os.Create(filename) check(err) _, err = fp.WriteString(fileTemplate) check(err) defer fp.Close() } } func check(e error) { if e != nil { panic(e) } } func request(url string) (string, error) { res, err := http.Get(url) if err != nil { return "", err } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { return "", err } html := string(body) return html, nil }