Formatting code fixed, apart from figures

pull/29/head
Matti Pastell 2015-01-04 16:14:59 +02:00
parent fb30b28c12
commit f66e0e41aa
1 changed files with 60 additions and 61 deletions

View File

@ -2,61 +2,54 @@ using TextWrap
#Format the executed document #Format the executed document
function format(executed, doctype) function format(executed, doctype)
formatted = String[] formatted = String[]
docformat = formats[doctype] docformat = formats[doctype]
#@show docformat #@show docformat
#Complete format dictionaries with defaults #Complete format dictionaries with defaults
formatdict = docformat.formatdict formatdict = docformat.formatdict
get!(formatdict, :termstart, formatdict[:codestart]) get!(formatdict, :termstart, formatdict[:codestart])
get!(formatdict, :termend, formatdict[:codeend]) get!(formatdict, :termend, formatdict[:codeend])
get!(formatdict, :out_width, nothing) get!(formatdict, :out_width, nothing)
get!(formatdict, :out_height, nothing) get!(formatdict, :out_height, nothing)
get!(formatdict, :fig_pos, nothing) get!(formatdict, :fig_pos, nothing)
get!(formatdict, :fig_env, nothing) get!(formatdict, :fig_env, nothing)
for chunk in copy(executed) for chunk in copy(executed)
result = format_chunk(chunk, formatdict)
push!(formatted, result)
end
if chunk[:type] == "doc" return formatted
push!(formatted, chunk[:content])
else
#Fill undefined options with format specific defaults
chunk[:out_width] == nothing && (chunk[:out_width] = docformat.formatdict[:out_width])
chunk[:fig_pos] == nothing && (chunk[:fig_pos] = docformat.formatdict[:fig_pos])
#Only use floats if chunk has caption or sets fig_env
if chunk[:fig_cap] != nothing && chunk[:fig_env] == nothing
(chunk[:fig_env] = docformat.formatdict[:fig_env])
end
#Format code
result = format_codechunk(chunk, formatdict)
#Handle figures
if chunk[:fig] && length(chunk[:figure]) > 0
if chunk[:include]
result *= formatfigures(chunk, docformat)
end
end
push!(formatted, result)
end
end
return formatted
end end
function format_codechunk(chunk, formatdict) function format_chunk(chunk::DocChunk, formatdict)
if haskey(formatdict, :indent) return chunk.content
chunk[:content] = indent(chunk[:content], formatdict[:indent]) end
function format_chunk(chunk::CodeChunk, formatdict)
#Fill undefined options with format specific defaults
chunk.options[:out_width] == nothing &&
(chunk.options[:out_width] = formatdict[:out_width])
chunk.options[:fig_pos] == nothing &&
(chunk.options[:fig_pos] = formatdict[:fig_pos])
#Only use floats if chunk has caption or sets fig_env
if chunk.options[:fig_cap] != nothing && chunk.options[:fig_env] == nothing
(chunk.options[:fig_env] = formatdict[:fig_env])
end end
if !chunk[:eval]
if chunk[:echo] if haskey(formatdict, :indent)
result = "$(formatdict[:codestart])$(chunk[:content])\n$(formatdict[:codeend])" chunk.content = indent(chunk.content, formatdict[:indent])
end
if !chunk.options[:eval]
if chunk.options[:echo]
result = "$(formatdict[:codestart])$(chunk.content)\n$(formatdict[:codeend])"
return result return result
else else
r = "" r = ""
@ -64,42 +57,48 @@ function format_codechunk(chunk, formatdict)
end end
end end
if chunk[:term] if chunk.options[:term]
result = format_termchunk(chunk, formatdict) result = format_termchunk(chunk, formatdict)
else else
if chunk[:wrap] if chunk.options[:wrap]
chunk[:result] = "\n" * wrap(chunk[:result], replace_whitespace=false) chunk.output = "\n" * wrap(chunk.output, replace_whitespace=false)
end end
if chunk[:echo] if chunk.options[:echo]
result = "$(formatdict[:codestart])$(chunk[:content])\n$(formatdict[:codeend])\n" result = "$(formatdict[:codestart])$(chunk.content)\n$(formatdict[:codeend])\n"
else else
result = "" result = ""
end end
if (strip(chunk[:result])!= "") && (chunk[:results] != "hidden") if (strip(chunk.output)!= "") && (chunk.options[:results] != "hidden")
#@show chunk #@show chunk
if chunk[:results] != "markup" if chunk.options[:results] != "markup"
result *= "$(chunk[:result])" result *= "$(chunk.output)"
elseif chunk[:results] == "markup" elseif chunk.options[:results] == "markup"
if haskey(formatdict, :indent) if haskey(formatdict, :indent)
chunk[:result] = indent(chunk[:result], formatdict[:indent]) chunk.output = indent(chunk.output, formatdict[:indent])
end end
result *= "$(formatdict[:outputstart])$(chunk[:result])\n$(formatdict[:outputend])\n" result *= "$(formatdict[:outputstart])$(chunk.output)\n$(formatdict[:outputend])\n"
end end
end end
end end
return result #Handle figures
if chunk.options[:fig] && length(chunk.figures) > 0
if chunk.options[:include]
result *= formatfigures(chunk, docformat)
end
end
return result
end end
function format_termchunk(chunk, formatdict) function format_termchunk(chunk, formatdict)
if chunk[:echo] && chunk[:results] != "hidden" if chunk.options[:echo] && chunk.options[:results] != "hidden"
result = "$(formatdict[:termstart])$(chunk[:result])\n" result = "$(formatdict[:termstart])$(chunk.output)\n"
#@show chunk[:term_state] #@show chunk[:term_state]
chunk[:term_state] == :text && (result*= "$(formatdict[:termend])\n") chunk.options[:term_state] == :text && (result*= "$(formatdict[:termend])\n")
else else
result = "" result = ""
end end