diff --git a/Makefile b/Makefile index ce7c398..8bdb7e6 100644 --- a/Makefile +++ b/Makefile @@ -40,7 +40,7 @@ # Parameters -PKG = code.ndumas.com/ndumas/wikilink-parser +PKG = code.ndumas.com/ndumas/obsidian-markdown NAME = parse-wikilinks DOC = README.md LICENSE @@ -193,13 +193,13 @@ docker: docker-image docker-push .PHONY: docker-push docker-push: - $(DOCKER_CMD) tag code.ndumas.com/ndumas/wikilink-parser:$(VERSION) code.ndumas.com/ndumas/wikilink-parser:latest - $(DOCKER_CMD) push code.ndumas.com/ndumas/wikilink-parser:latest - $(DOCKER_CMD) push code.ndumas.com/ndumas/wikilink-parser:$(VERSION) + $(DOCKER_CMD) tag $(PKG):$(VERSION) $(PKG):latest + $(DOCKER_CMD) push $(PKG):latest + $(DOCKER_CMD) push $(PKG):$(VERSION) .PHONY: docker-image docker-image: - $(DOCKER_CMD) build --build-arg VERSION=$(VERSION) -t code.ndumas.com/ndumas/wikilink-parser:$(VERSION) . + $(DOCKER_CMD) build --build-arg VERSION=$(VERSION) -t $(PKG):$(VERSION) . .PHONY: build-alpine build-alpine: diff --git a/cmd/demo/main.go b/cmd/demo/main.go index 693372d..3bc077f 100644 --- a/cmd/demo/main.go +++ b/cmd/demo/main.go @@ -5,11 +5,11 @@ import ( "go.uber.org/zap/zapcore" - "code.ndumas.com/ndumas/wikilink-parser" + "code.ndumas.com/ndumas/obsidian-markdown" ) func main() { - l := wikilink.Lex("debugLexer", `this is a [[wikilink]]`, zapcore.InfoLevel) + l := markdown.Lex("debugLexer", `this is a [[wikilink]]`, zapcore.InfoLevel) for _, item := range l.Items { item := item log.Printf("%#+v\n", item) diff --git a/go.mod b/go.mod index 3d66d9b..ba75cdb 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module code.ndumas.com/ndumas/wikilink-parser +module code.ndumas.com/ndumas/obsidian-markdown go 1.19 diff --git a/lexemetype_string.go b/lexemetype_string.go index 5c60840..b05d2b3 100644 --- a/lexemetype_string.go +++ b/lexemetype_string.go @@ -1,6 +1,6 @@ // Code generated by "stringer -type=LexemeType"; DO NOT EDIT. -package wikilink +package markdown import "strconv" diff --git a/lexer.go b/lexer.go index c7af191..eed8059 100644 --- a/lexer.go +++ b/lexer.go @@ -1,5 +1,5 @@ //go:generate stringer -type=LexemeType -package wikilink +package markdown import ( "fmt" diff --git a/lexer_test.go b/lexer_test.go index 33145c6..7f46a58 100644 --- a/lexer_test.go +++ b/lexer_test.go @@ -1,4 +1,4 @@ -package wikilink_test +package markdown_test import ( "testing" @@ -6,193 +6,193 @@ import ( "github.com/stretchr/testify/assert" "go.uber.org/zap/zapcore" - "code.ndumas.com/ndumas/wikilink-parser" + "code.ndumas.com/ndumas/obsidian-markdown" ) var SingleWikilink = []tc{ { name: "wikilink", in: "[[wikilink]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink|display name", in: "[[wikilink|display name]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "display name"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "display name"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink|display name|second pipe", in: "[[wikilink|display name|second pipe]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "display name"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "second pipe"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "display name"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "second pipe"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink with numeric alias|420|second pipe", in: "[[wikilink|420|second pipe]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "420"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "second pipe"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "420"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "second pipe"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink with spaces in filename", in: "[[wikilink spaces]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink spaces"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink spaces"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "#heading", in: "[[#heading]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: ""}, - {Typ: wikilink.LexHeading, Val: "#"}, - {Typ: wikilink.LexIdent, Val: "heading"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: ""}, + {Typ: markdown.LexHeading, Val: "#"}, + {Typ: markdown.LexIdent, Val: "heading"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink#heading", in: "[[wikilink#heading]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexHeading, Val: "#"}, - {Typ: wikilink.LexIdent, Val: "heading"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexHeading, Val: "#"}, + {Typ: markdown.LexIdent, Val: "heading"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink#heading|display name", in: "[[wikilink#heading|display name]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexHeading, Val: "#"}, - {Typ: wikilink.LexIdent, Val: "heading"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "display name"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexHeading, Val: "#"}, + {Typ: markdown.LexIdent, Val: "heading"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "display name"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink#heading|display name|second pipe", in: "[[wikilink#heading|display name|second pipe]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexHeading, Val: "#"}, - {Typ: wikilink.LexIdent, Val: "heading"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "display name"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "second pipe"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexHeading, Val: "#"}, + {Typ: markdown.LexIdent, Val: "heading"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "display name"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "second pipe"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink with numeric aliases#heading|420|display name", in: "[[wikilink#heading|420|second pipe]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexHeading, Val: "#"}, - {Typ: wikilink.LexIdent, Val: "heading"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "420"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "second pipe"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexHeading, Val: "#"}, + {Typ: markdown.LexIdent, Val: "heading"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "420"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "second pipe"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "#^blockRef", in: "[[#^blockRef]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: ""}, - {Typ: wikilink.LexBlockRef, Val: "#^"}, - {Typ: wikilink.LexIdent, Val: "blockRef"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: ""}, + {Typ: markdown.LexBlockRef, Val: "#^"}, + {Typ: markdown.LexIdent, Val: "blockRef"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink#^blockRef", in: "[[wikilink#^blockRef]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexBlockRef, Val: "#^"}, - {Typ: wikilink.LexIdent, Val: "blockRef"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexBlockRef, Val: "#^"}, + {Typ: markdown.LexIdent, Val: "blockRef"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink#^blockRef|display name", in: "[[wikilink#^blockRef|display name]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexBlockRef, Val: "#^"}, - {Typ: wikilink.LexIdent, Val: "blockRef"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "display name"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexBlockRef, Val: "#^"}, + {Typ: markdown.LexIdent, Val: "blockRef"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "display name"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink#^blockRef|display name|second pipe", in: "[[wikilink#^blockRef|display name|second pipe]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexBlockRef, Val: "#^"}, - {Typ: wikilink.LexIdent, Val: "blockRef"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "display name"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "second pipe"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexBlockRef, Val: "#^"}, + {Typ: markdown.LexIdent, Val: "blockRef"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "display name"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "second pipe"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, { name: "wikilink with numeric aliases#^blockRef|420|second pipe", in: "[[wikilink#^blockRef|420|second pipe]]", - expected: []wikilink.Lexeme{ - {Typ: wikilink.LexOpenLink, Val: "[["}, - {Typ: wikilink.LexIdent, Val: "wikilink"}, - {Typ: wikilink.LexBlockRef, Val: "#^"}, - {Typ: wikilink.LexIdent, Val: "blockRef"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "420"}, - {Typ: wikilink.LexAlias, Val: "|"}, - {Typ: wikilink.LexIdent, Val: "second pipe"}, - {Typ: wikilink.LexCloseLink, Val: "]]"}, + expected: []markdown.Lexeme{ + {Typ: markdown.LexOpenLink, Val: "[["}, + {Typ: markdown.LexIdent, Val: "wikilink"}, + {Typ: markdown.LexBlockRef, Val: "#^"}, + {Typ: markdown.LexIdent, Val: "blockRef"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "420"}, + {Typ: markdown.LexAlias, Val: "|"}, + {Typ: markdown.LexIdent, Val: "second pipe"}, + {Typ: markdown.LexCloseLink, Val: "]]"}, }, }, } @@ -204,14 +204,14 @@ func Test_ObsidianWikilinks_LinksEndOfMultiLineInput(t *testing.T) { " test data please ignore.\nbling blonk more lines\nbling blong\nthis is a", "", - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: " test data please ignore.\n"}, - {Typ: wikilink.LexText, Val: "bling blonk more lines\n"}, - {Typ: wikilink.LexText, Val: "bling blong\n"}, - {Typ: wikilink.LexText, Val: "this is a"}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: " test data please ignore.\n"}, + {Typ: markdown.LexText, Val: "bling blonk more lines\n"}, + {Typ: markdown.LexText, Val: "bling blong\n"}, + {Typ: markdown.LexText, Val: "this is a"}, }, - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: ""}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: ""}, }, ) t.Run(mut.name, test) @@ -225,14 +225,14 @@ func Test_ObsidianWikilinks_LinksStartOfMultiLineInput(t *testing.T) { "", " test data please ignore.\nbling blonk more lines\nbling blong\nthis is a", - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: ""}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: ""}, }, - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: " test data please ignore.\n"}, - {Typ: wikilink.LexText, Val: "bling blonk more lines\n"}, - {Typ: wikilink.LexText, Val: "bling blong\n"}, - {Typ: wikilink.LexText, Val: "this is a"}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: " test data please ignore.\n"}, + {Typ: markdown.LexText, Val: "bling blonk more lines\n"}, + {Typ: markdown.LexText, Val: "bling blong\n"}, + {Typ: markdown.LexText, Val: "this is a"}, }, ) t.Run(mut.name, test) @@ -246,11 +246,11 @@ func Test_ObsidianWikilinks_LinksStartOfInput(t *testing.T) { "", " test data please ignore", - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: ""}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: ""}, }, - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: " test data please ignore"}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: " test data please ignore"}, }, ) t.Run(mut.name, test) @@ -263,11 +263,11 @@ func Test_ObsidianWikilinks_LinksEndOfInput(t *testing.T) { tc, "this is a ", "", - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: "this is a "}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: "this is a "}, }, - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: ""}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: ""}, }, ) t.Run(mut.name, test) @@ -281,11 +281,11 @@ func Test_ObsidianWikilinks_Basic(t *testing.T) { tc, "", "", - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: ""}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: ""}, }, - []wikilink.Lexeme{ - {Typ: wikilink.LexText, Val: ""}, + []markdown.Lexeme{ + {Typ: markdown.LexText, Val: ""}, }, ) t.Run(mut.name, test) @@ -295,10 +295,10 @@ func Test_ObsidianWikilinks_Basic(t *testing.T) { type tc struct { name string in string - expected []wikilink.Lexeme + expected []markdown.Lexeme } -func mutateTestCase(tc tc, prefix, suffix string, expectedPrefix, expectedSuffix []wikilink.Lexeme) (tc, func(t *testing.T)) { +func mutateTestCase(tc tc, prefix, suffix string, expectedPrefix, expectedSuffix []markdown.Lexeme) (tc, func(t *testing.T)) { tc.in = prefix + tc.in tc.in = tc.in + suffix if expectedPrefix != nil { @@ -309,7 +309,7 @@ func mutateTestCase(tc tc, prefix, suffix string, expectedPrefix, expectedSuffix } return tc, func(t *testing.T) { - l := wikilink.Lex("testLexer", tc.in, zapcore.WarnLevel) + l := markdown.Lex("testLexer", tc.in, zapcore.WarnLevel) defer l.L.Sync() assert.Equal(t, tc.expected, l.Items, "token stream mismatch") } diff --git a/states.go b/states.go index 7f21fb3..29a27d4 100644 --- a/states.go +++ b/states.go @@ -1,4 +1,4 @@ -package wikilink +package markdown import ( "strings" diff --git a/wikilink.go b/wikilink.go index ba05d4f..2293491 100644 --- a/wikilink.go +++ b/wikilink.go @@ -1,4 +1,4 @@ -package wikilink +package markdown import ( // "log" diff --git a/wikilink_test.go b/wikilink_test.go index 0eca41c..c933116 100644 --- a/wikilink_test.go +++ b/wikilink_test.go @@ -1,9 +1,9 @@ -package wikilink_test +package markdown_test import ( "testing" - "code.ndumas.com/ndumas/wikilink-parser" + "code.ndumas.com/ndumas/obsidian-markdown" ) func _Test_Wikilink_Parsing(t *testing.T) { @@ -36,7 +36,7 @@ func _Test_Wikilink_Parsing(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() - out := wikilink.Extract(tc.in) + out := markdown.Extract(tc.in) if out.Link != tc.link { t.Logf("got %#v\n", out) t.Fail() @@ -50,7 +50,7 @@ func _Test_Wikilink_Parsing(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() - out := wikilink.Extract(tc.in) + out := markdown.Extract(tc.in) if out.Alias != tc.alias { t.Logf("got %#v\n", out) t.Fail() @@ -64,7 +64,7 @@ func _Test_Wikilink_Parsing(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() - out := wikilink.Extract(tc.in) + out := markdown.Extract(tc.in) if out.Fragment != tc.fragment { t.Logf("got %#v\n", out) t.Fail()