Эх сурвалжийг харах

Replace cmd/elvmd with a simpler pkg/md/mdrun.

The new command is put in pkg/md to make it clear that it is used for debugging
pkg/md and not intended for general use.
Qi Xiao 1 жил өмнө
parent
commit
1fba4b325f
2 өөрчлөгдсөн 45 нэмэгдсэн , 44 устгасан
  1. 0 44
      cmd/elvmd/main.go
  2. 45 0
      pkg/md/mdrun/main.go

+ 0 - 44
cmd/elvmd/main.go

@@ -1,44 +0,0 @@
-package main
-
-import (
-	"flag"
-	"fmt"
-	"io"
-	"os"
-
-	"src.elv.sh/pkg/md"
-)
-
-var (
-	trace = flag.Bool("trace", false, "write internal parsing results")
-)
-
-func main() {
-	flag.Parse()
-
-	files := flag.Args()
-	if len(files) == 0 {
-		text, err := io.ReadAll(os.Stdin)
-		if err != nil {
-			fmt.Fprintln(os.Stderr, "read stdin:", err)
-			os.Exit(2)
-		}
-		render(string(text))
-		return
-	}
-	for _, file := range files {
-		text, err := os.ReadFile(file)
-		if err != nil {
-			fmt.Fprintf(os.Stderr, "read %s: %v\n", file, err)
-			os.Exit(2)
-		}
-		render(string(text))
-	}
-}
-
-func render(markdown string) {
-	fmt.Print(md.RenderString(markdown, &md.HTMLCodec{}))
-	if *trace {
-		fmt.Print(md.RenderString(markdown, &md.TraceCodec{}))
-	}
-}

+ 45 - 0
pkg/md/mdrun/main.go

@@ -0,0 +1,45 @@
+// Command mdrun can be used to test the md package. Run it with "go run".
+package main
+
+import (
+	"flag"
+	"fmt"
+	"io"
+	"os"
+
+	"src.elv.sh/pkg/md"
+)
+
+var (
+	codec = flag.String("codec", "html", "codec to use; one of html, trace, fmt, tty")
+	width = flag.Int("width", 0, "text width; relevant with fmt or tty")
+)
+
+func main() {
+	flag.Parse()
+
+	c := getCodec(*codec)
+	bs, err := io.ReadAll(os.Stdin)
+	if err != nil {
+		fmt.Fprintln(os.Stderr, "read stdin:", err)
+		os.Exit(2)
+	}
+	fmt.Print(md.RenderString(string(bs), c))
+}
+
+func getCodec(s string) md.StringerCodec {
+	switch *codec {
+	case "html":
+		return &md.HTMLCodec{}
+	case "trace":
+		return &md.TraceCodec{}
+	case "fmt":
+		return &md.FmtCodec{Width: *width}
+	case "tty":
+		return &md.TTYCodec{Width: *width}
+	default:
+		fmt.Println("unknown codec:", s)
+		os.Exit(2)
+		return nil
+	}
+}