list.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "path/filepath"
  6. "strings"
  7. )
  8. func matchTail(str, tailStr string) (match bool, headStr string) {
  9. sln := len(str)
  10. ln := len(tailStr)
  11. if sln > ln {
  12. match = str[sln-ln:] == tailStr
  13. if match {
  14. headStr = str[:sln-ln]
  15. }
  16. }
  17. return
  18. }
  19. func matchHead(str, headStr string) (match bool, tailStr string) {
  20. ln := len(headStr)
  21. if len(str) > ln {
  22. match = str[:ln] == headStr
  23. if match {
  24. tailStr = str[ln:]
  25. }
  26. }
  27. return
  28. }
  29. func main() {
  30. var err error
  31. var ok bool
  32. var showStr, name string
  33. err = filepath.Walk("pdf/reference", func(path string, info os.FileInfo, err error) error {
  34. if info.Mode().IsRegular() {
  35. name = filepath.Base(path)
  36. ok, name = matchTail(name, ".pdf")
  37. if ok {
  38. name = strings.Replace(name, "_", " ", -1)
  39. ok, showStr = matchHead(name, "Fpdf ")
  40. if ok {
  41. fmt.Printf("[%s](%s)\n", showStr, path)
  42. } else {
  43. ok, showStr = matchHead(name, "contrib ")
  44. if ok {
  45. fmt.Printf("[%s](%s)\n", showStr, path)
  46. }
  47. }
  48. }
  49. }
  50. return nil
  51. })
  52. if err != nil {
  53. fmt.Println(err)
  54. }
  55. }