diff --git a/cmd/tools/vdoc/markdown.v b/cmd/tools/vdoc/markdown.v
index 2cb0bf2052..4cde8e384c 100644
--- a/cmd/tools/vdoc/markdown.v
+++ b/cmd/tools/vdoc/markdown.v
@@ -28,16 +28,16 @@ fn (vd &VDoc) gen_markdown(d doc.Doc, with_toc bool) string {
fn (vd &VDoc) write_markdown_content(contents []doc.DocNode, mut cw strings.Builder, mut hw strings.Builder,
indent int, with_toc bool) {
- cfg := vd.cfg
for cn in contents {
if with_toc && cn.name != '' {
hw.writeln(' '.repeat(2 * indent) + '- [${slug(cn.name)}](#${cn.name})')
cw.writeln('## ${cn.name}')
}
if cn.content.len > 0 {
- if cn.comments.len > 0 && cfg.include_comments {
+ cw.writeln('```v\n${cn.content}\n```\n')
+ if cn.comments.len > 0 {
comments := cn.merge_comments_without_examples()
- cw.writeln('```v\n${cn.content}\n```\n${comments}\n')
+ cw.writeln('${comments}\n')
}
// Write examples if any found
examples := cn.examples()
diff --git a/cmd/tools/vdoc/testdata/output_formats/main.md b/cmd/tools/vdoc/testdata/output_formats/main.md
new file mode 100644
index 0000000000..87ad3a0365
--- /dev/null
+++ b/cmd/tools/vdoc/testdata/output_formats/main.md
@@ -0,0 +1,168 @@
+# module main
+
+
+## Contents
+- [Constants](#Constants)
+- [abc](#abc)
+- [def](#def)
+- [xyz](#xyz)
+- [MyXMLDocument.abc](#MyXMLDocument.abc)
+- [MyXMLDocument.from_file](#MyXMLDocument.from_file)
+- [MyXMLDocument.from_text](#MyXMLDocument.from_text)
+- [MyXMLDocument](#MyXMLDocument)
+ - [instance_from_file](#instance_from_file)
+ - [instance_from_text](#instance_from_text)
+ - [instance_abc](#instance_abc)
+ - [instance_void](#instance_void)
+ - [instance_int](#instance_int)
+ - [instance_result](#instance_result)
+ - [instance_option](#instance_option)
+
+## Constants
+```v
+const omega = 3 // should be first
+```
+
+[[Return to contents]](#Contents)
+
+```v
+const alpha = 5 // should be in the middle
+```
+
+[[Return to contents]](#Contents)
+
+```v
+const beta = 2 // should be at the end
+```
+
+[[Return to contents]](#Contents)
+
+## abc
+```v
+fn abc()
+```
+
+abc - should be last
+
+[[Return to contents]](#Contents)
+
+## def
+```v
+fn def()
+```
+
+def - should be first
+
+[[Return to contents]](#Contents)
+
+## xyz
+```v
+fn xyz()
+```
+
+xyz - should be in the middle a small script bold text bold end underlined text underline end a link [main v repo](https://github.com/vlang/v)
+
+[[Return to contents]](#Contents)
+
+## MyXMLDocument.abc
+```v
+fn MyXMLDocument.abc(text string) ?(string, int)
+```
+
+MyXMLDocument.abc does something too... I just do not know what.
+
+[[Return to contents]](#Contents)
+
+## MyXMLDocument.from_file
+```v
+fn MyXMLDocument.from_file(path string) !MyXMLDocument
+```
+
+MyXMLDocument.from_text processes the file path, and returns an error
+
+[[Return to contents]](#Contents)
+
+## MyXMLDocument.from_text
+```v
+fn MyXMLDocument.from_text(text string) ?MyXMLDocument
+```
+
+MyXMLDocument.from_text processes text and produces none
+
+[[Return to contents]](#Contents)
+
+## MyXMLDocument
+```v
+struct MyXMLDocument {
+ path string
+}
+```
+
+MyXMLDocument is here just to test the different combinations of methods/output types
+
+[[Return to contents]](#Contents)
+
+## instance_from_file
+```v
+fn (x &MyXMLDocument) instance_from_file(path string) !MyXMLDocument
+```
+
+instance_from_file does stuff with path
+
+[[Return to contents]](#Contents)
+
+## instance_from_text
+```v
+fn (x &MyXMLDocument) instance_from_text(text string) ?MyXMLDocument
+```
+
+instance_from_text does stuff with text
+
+[[Return to contents]](#Contents)
+
+## instance_abc
+```v
+fn (x &MyXMLDocument) instance_abc(text string) ?(string, int)
+```
+
+instance_abc does stuff too
+
+[[Return to contents]](#Contents)
+
+## instance_void
+```v
+fn (x &MyXMLDocument) instance_void()
+```
+
+instance_void does stuff too
+
+[[Return to contents]](#Contents)
+
+## instance_int
+```v
+fn (x &MyXMLDocument) instance_int() int
+```
+
+instance_int does stuff too
+
+[[Return to contents]](#Contents)
+
+## instance_result
+```v
+fn (x &MyXMLDocument) instance_result() !
+```
+
+instance_error does stuff too
+
+[[Return to contents]](#Contents)
+
+## instance_option
+```v
+fn (x &MyXMLDocument) instance_option() ?
+```
+
+instance_option does stuff too
+
+[[Return to contents]](#Contents)
+
+#### Powered by vdoc.
diff --git a/cmd/tools/vdoc/vdoc_file_test.v b/cmd/tools/vdoc/vdoc_file_test.v
index 7cdf143cba..1168af4bec 100644
--- a/cmd/tools/vdoc/vdoc_file_test.v
+++ b/cmd/tools/vdoc/vdoc_file_test.v
@@ -30,9 +30,10 @@ fn test_output() {
// test the main 3 different formats:
program_dir := os.quoted_path(if os.is_dir(path) { path } else { os.dir(path) })
for fmt in ['html', 'ansi', 'text'] {
- fails += check_output('${vexe} doc -f ${fmt} -o - -html-only-contents -readme -comments ${program_dir}',
+ fails += check_output('${vexe} doc -no-timestamp -f ${fmt} -o - -html-only-contents -readme -comments ${program_dir}',
'${path_no_ext}.${fmt}')
}
+ fails += check_output('${vexe} doc -no-timestamp -f md -o - ${program_dir}', '${path_no_ext}.md')
if fails == 0 {
println(term.green('OK'))
} else {