You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jolheiser 3d7e79031f
Fix line embedding
1 year ago
cmd/emdbed Initial Commit 1 year ago
testdata Initial Commit 1 year ago
.gitignore Initial Commit 1 year ago
.woodpecker.yml Final polish 1 year ago
LICENSE Initial Commit 1 year ago
README.md Fix line embedding 1 year ago
emdbed.go Final polish 1 year ago
emdbed_example_test.go Fix line embedding 1 year ago
emdbed_test.go Initial Commit 1 year ago
go.mod Initial Commit 1 year ago
go.sum Initial Commit 1 year ago
io.go Fix line embedding 1 year ago
readme.go Initial Commit 1 year ago

README.md

emdbed

Embed "things" in your markdown files.

Given the same input, emdbed should give idempotent results.

To create an emdbed section, use a header and footer as follows

<!-- emdbed: <file> [~<language>] [L<start-line>|/<start-regex>/] [L<end-line>|/<end-regex>/]
<!-- /emdbed --> 

NOTE: The above snippet has an extra space at the end in order to keep it from recognizing the footer when generating this README.

The regex is Go flavored, which you can test on regex101.

Examples

The following are generated using readme.go and go generate ./....
Check the raw markdown for the header selectors used.

An entire file:

// Package emdbed is for embedding "things" in your markdown
package emdbed

import (
	"fmt"
)

func Example() {
	fi, err := testdata.Open("testdata/main.md")
	defer fi.Close()
	out, err := Convert("testdata", fi)
	if err != nil {
		panic(err)
	}
	fmt.Println(out)
	// Output:
	//<!-- emdbed: main.go -->
	//```go
	//package main
	//
	//import "fmt"
	//
	//func main() {
	//	fmt.Println("Hello, world!")
	//}
	//
	// ```
	//<!-- /emdbed -->
}

Just the package:

package emdbed

Package line until the end of imports:

package emdbed

import (
	"fmt"
)

Only the example func

func Example() {
	fi, err := testdata.Open("testdata/main.md")
	defer fi.Close()
	out, err := Convert("testdata", fi)
	if err != nil {
		panic(err)
	}
	fmt.Println(out)
	// Output:
	//<!-- emdbed: main.go -->
	//```go
	//package main
	//
	//import "fmt"
	//
	//func main() {
	//	fmt.Println("Hello, world!")
	//}
	//
	// ```
	//<!-- /emdbed -->
}

A file in another directory (choosing/overriding the language)

package main

import "fmt"

func main() {
	fmt.Println("This file has no extension")
}

License

MIT