@@ -11,12 +11,8 @@ defmodule ExDoc.Formatter.EPUB do
1111 """
1212 @ spec run ( [ ExDoc.ModuleNode . t ( ) ] , [ ExDoc.ModuleNode . t ( ) ] , ExDoc.Config . t ( ) ) :: String . t ( )
1313 def run ( project_nodes , filtered_modules , config ) when is_map ( config ) do
14- # Store original output for build file before normalize_config creates temp path
15- original_output = config . output
1614 config = normalize_config ( config )
17-
18- build = Path . join ( original_output , ".build" )
19- output_setup ( build , config )
15+ File . rm_rf! ( config . output )
2016 File . mkdir_p! ( Path . join ( config . output , "OEBPS" ) )
2117
2218 project_nodes =
@@ -44,17 +40,12 @@ defmodule ExDoc.Formatter.EPUB do
4440 uuid = "urn:uuid:#{ uuid4 ( ) } "
4541 datetime = format_datetime ( )
4642
47- content_files = generate_content ( config , nodes_map , uuid , datetime , static_files )
48- nav_files = generate_nav ( config , nodes_map )
49- title_files = generate_title ( config )
50- extra_files = generate_extras ( config )
51- module_files = generate_list ( config , nodes_map . modules )
52- task_files = generate_list ( config , nodes_map . tasks )
53-
54- all_files =
55- List . flatten ( [ content_files , nav_files , title_files , extra_files , module_files , task_files ] )
56-
57- generate_build ( all_files , build )
43+ generate_content ( config , nodes_map , uuid , datetime , static_files )
44+ generate_nav ( config , nodes_map )
45+ generate_title ( config )
46+ generate_extras ( config )
47+ generate_list ( config , nodes_map . modules )
48+ generate_list ( config , nodes_map . tasks )
5849
5950 { :ok , epub } = generate_epub ( config . output )
6051 File . rm_rf! ( config . output )
@@ -74,16 +65,14 @@ defmodule ExDoc.Formatter.EPUB do
7465 for { _title , extras } <- config . extras ,
7566 node <- extras ,
7667 not is_map_key ( node , :url ) do
77- filename = "OEBPS/#{ node . id } .xhtml"
78- output = "#{ config . output } /#{ filename } "
68+ output = "#{ config . output } /OEBPS/#{ node . id } .xhtml"
7969 html = Templates . extra_template ( config , node )
8070
8171 if File . regular? ( output ) do
8272 Utils . warn ( "file #{ Path . relative_to_cwd ( output ) } already exists" , [ ] )
8373 end
8474
8575 File . write! ( output , html )
86- filename
8776 end
8877 end
8978
@@ -95,9 +84,7 @@ defmodule ExDoc.Formatter.EPUB do
9584 do: { Path . relative_to ( name , "OEBPS" ) , media_type }
9685
9786 content = Templates . content_template ( config , nodes , uuid , datetime , static_files )
98- filename = "OEBPS/content.opf"
99- File . write ( "#{ config . output } /#{ filename } " , content )
100- [ filename ]
87+ File . write ( "#{ config . output } /OEBPS/content.opf" , content )
10188 end
10289
10390 defp generate_nav ( config , nodes ) do
@@ -107,16 +94,12 @@ defmodule ExDoc.Formatter.EPUB do
10794 end )
10895
10996 content = Templates . nav_template ( config , nodes )
110- filename = "OEBPS/nav.xhtml"
111- File . write ( "#{ config . output } /#{ filename } " , content )
112- [ filename ]
97+ File . write ( "#{ config . output } /OEBPS/nav.xhtml" , content )
11398 end
11499
115100 defp generate_title ( config ) do
116101 content = Templates . title_template ( config )
117- filename = "OEBPS/title.xhtml"
118- File . write ( "#{ config . output } /#{ filename } " , content )
119- [ filename ]
102+ File . write ( "#{ config . output } /OEBPS/title.xhtml" , content )
120103 end
121104
122105 defp generate_list ( config , nodes ) do
@@ -143,31 +126,6 @@ defmodule ExDoc.Formatter.EPUB do
143126 )
144127 end
145128
146- defp output_setup ( build , config ) do
147- if File . exists? ( build ) do
148- build
149- |> File . read! ( )
150- |> String . split ( "\n " , trim: true )
151- |> Enum . map ( & Path . join ( config . output , & 1 ) )
152- |> Enum . each ( & File . rm / 1 )
153-
154- File . rm ( build )
155- else
156- File . rm_rf! ( config . output )
157- end
158- end
159-
160- defp generate_build ( files , build ) do
161- entries =
162- files
163- |> Enum . uniq ( )
164- |> Enum . sort ( )
165- |> Enum . map ( & [ & 1 , "\n " ] )
166-
167- File . mkdir_p! ( Path . dirname ( build ) )
168- File . write! ( build , entries )
169- end
170-
171129 ## Helpers
172130
173131 defp default_assets ( config ) do
@@ -201,9 +159,7 @@ defmodule ExDoc.Formatter.EPUB do
201159
202160 defp generate_module_page ( module_node , config ) do
203161 content = Templates . module_page ( config , module_node )
204- filename = "OEBPS/#{ module_node . id } .xhtml"
205- File . write ( "#{ config . output } /#{ filename } " , content )
206- filename
162+ File . write ( "#{ config . output } /OEBPS/#{ module_node . id } .xhtml" , content )
207163 end
208164
209165 @ two_power_16 65536
0 commit comments