From 148eef5aeb98bac74a61ba80c5a42757d3eaf5dc Mon Sep 17 00:00:00 2001 From: Niklas Fasching Date: Sun, 6 Jan 2019 20:49:49 +0100 Subject: [PATCH] Refactor: Move some code Example nodes are a kind of block and it's not much code so we can just put it next to the Block code. Feels cleaner but doesn't change much. --- README.org | 1 + org/block.go | 20 ++++++++++++++++++++ org/example.go | 26 -------------------------- 3 files changed, 21 insertions(+), 26 deletions(-) delete mode 100644 org/example.go diff --git a/README.org b/README.org index 1219c7e..fdb396b 100644 --- a/README.org +++ b/README.org @@ -14,6 +14,7 @@ see https://orgmode.org/manual/External-links.html & https://orgmode.org/manual/ - link target: <> - link: [[go-org]] - link to headline +- links with image as description - MyTarget <- this will automatically become a link - not sure i want this... * resources - test files diff --git a/org/block.go b/org/block.go index be6b9b6..5fc2ba6 100644 --- a/org/block.go +++ b/org/block.go @@ -12,6 +12,11 @@ type Block struct { Children []Node } +type Example struct { + Children []Node +} + +var exampleLineRegexp = regexp.MustCompile(`^(\s*):(\s(.*)|\s*$)`) var beginBlockRegexp = regexp.MustCompile(`(?i)^(\s*)#\+BEGIN_(\w+)(.*)`) var endBlockRegexp = regexp.MustCompile(`(?i)^(\s*)#\+END_(\w+)`) @@ -24,6 +29,13 @@ func lexBlock(line string) (token, bool) { return nilToken, false } +func lexExample(line string) (token, bool) { + if m := exampleLineRegexp.FindStringSubmatch(line); m != nil { + return token{"example", len(m[1]), m[3], m}, true + } + return nilToken, false +} + func isRawTextBlock(name string) bool { return name == "SRC" || name == "EXAMPLE" || name == "EXPORT" } func (d *Document) parseBlock(i int, parentStop stopFn) (int, Node) { @@ -51,6 +63,14 @@ func (d *Document) parseBlock(i int, parentStop stopFn) (int, Node) { return 0, nil } +func (d *Document) parseExample(i int, parentStop stopFn) (int, Node) { + example, start := Example{}, i + for ; !parentStop(d, i) && d.tokens[i].kind == "example"; i++ { + example.Children = append(example.Children, Text{d.tokens[i].content, true}) + } + return i - start, example +} + func trimIndentUpTo(max int) func(string) string { return func(line string) string { i := 0 diff --git a/org/example.go b/org/example.go deleted file mode 100644 index 988751d..0000000 --- a/org/example.go +++ /dev/null @@ -1,26 +0,0 @@ -package org - -import ( - "regexp" -) - -type Example struct { - Children []Node -} - -var exampleLineRegexp = regexp.MustCompile(`^(\s*):(\s(.*)|\s*$)`) - -func lexExample(line string) (token, bool) { - if m := exampleLineRegexp.FindStringSubmatch(line); m != nil { - return token{"example", len(m[1]), m[3], m}, true - } - return nilToken, false -} - -func (d *Document) parseExample(i int, parentStop stopFn) (int, Node) { - example, start := Example{}, i - for ; !parentStop(d, i) && d.tokens[i].kind == "example"; i++ { - example.Children = append(example.Children, Text{d.tokens[i].content, true}) - } - return i - start, example -}