1- defmodule ExDoc.Formatter.Markdown do
1+ defmodule ExDoc.Formatter.MARKDOWN do
22 @ moduledoc false
33
4- @ mimetype "text/markdown"
54 @ assets_dir "MD/assets"
65 alias __MODULE__ . { Assets , Templates }
76 alias ExDoc.Formatter.HTML
@@ -28,24 +27,24 @@ defmodule ExDoc.Formatter.Markdown do
2827
2928 extras =
3029 config
31- |> HTML . build_extras ( ".xhtml " )
30+ |> HTML . build_extras ( ".md " )
3231 |> Enum . chunk_by ( & & 1 . group )
3332 |> Enum . map ( & { hd ( & 1 ) . group , & 1 } )
3433
3534 config = % { config | extras: extras }
3635
37- static_files = HTML . generate_assets ( "MD" , default_assets ( config ) , config )
38- HTML . generate_logo ( @ assets_dir , config )
39- HTML . generate_cover ( @ assets_dir , config )
40-
41- # generate_nav(config, nodes_map)
36+ generate_nav ( config , nodes_map )
4237 generate_extras ( config )
4338 generate_list ( config , nodes_map . modules )
4439 generate_list ( config , nodes_map . tasks )
4540
46- { :ok , epub } = generate_zip ( config . output )
47- File . rm_rf! ( config . output )
48- Path . relative_to_cwd ( epub )
41+ # if config[:generate_zip] do # TODO: add a command line flag?
42+ # {:ok, zip} = generate_zip(config.output)
43+ # File.rm_rf!(config.output)
44+ # Path.relative_to_cwd(zip)
45+ # else
46+ config . output |> Path . join ( "index.md" ) |> Path . relative_to_cwd ( )
47+ # end
4948 end
5049
5150 defp normalize_config ( config ) do
@@ -57,6 +56,23 @@ defmodule ExDoc.Formatter.Markdown do
5756 % { config | output: output }
5857 end
5958
59+ defp normalize_output ( output ) do
60+ output
61+ |> String . replace ( ~r/ \r \n |\r |\n / , "\n " )
62+ |> String . replace ( ~r/ \n {2,}/ , "\n " )
63+ end
64+
65+ defp generate_nav ( config , nodes ) do
66+ nodes =
67+ Map . update! ( nodes , :modules , fn modules ->
68+ modules |> Enum . chunk_by ( & & 1 . group ) |> Enum . map ( & { hd ( & 1 ) . group , & 1 } )
69+ end )
70+
71+ content = Templates . nav_template ( config , nodes )
72+ |> normalize_output ( )
73+ File . write ( "#{ config . output } /MD/index.md" , content )
74+ end
75+
6076 defp generate_extras ( config ) do
6177 for { _title , extras } <- config . extras do
6278 Enum . each ( extras , fn % { id: id , title: title , title_content: _title_content , source: content } ->
@@ -66,6 +82,7 @@ defmodule ExDoc.Formatter.Markdown do
6682
6783 #{ content }
6884 """
85+ |> normalize_output ( )
6986
7087 if File . regular? ( output ) do
7188 Utils . warn ( "file #{ Path . relative_to_cwd ( output ) } already exists" , [ ] )
@@ -77,8 +94,6 @@ defmodule ExDoc.Formatter.Markdown do
7794 end
7895
7996
80-
81-
8297 defp generate_list ( config , nodes ) do
8398 nodes
8499 |> Task . async_stream ( & generate_module_page ( & 1 , config ) , timeout: :infinity )
@@ -99,13 +114,6 @@ defmodule ExDoc.Formatter.Markdown do
99114
100115 ## Helpers
101116
102- defp default_assets ( config ) do
103- [
104- { Assets . dist ( config . proglang ) , "MD/dist" } ,
105- { Assets . metainfo ( ) , "META-INF" }
106- ]
107- end
108-
109117 defp files_to_add ( path ) do
110118 Enum . reduce ( Path . wildcard ( Path . join ( path , "**/*" ) ) , [ ] , fn file , acc ->
111119 case File . read ( file ) do
@@ -120,6 +128,7 @@ defmodule ExDoc.Formatter.Markdown do
120128
121129 defp generate_module_page ( module_node , config ) do
122130 content = Templates . module_page ( config , module_node )
131+ |> normalize_output ( )
123132 File . write ( "#{ config . output } /MD/#{ module_node . id } .md" , content )
124133 end
125134
0 commit comments