Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/config.jl
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ const _DEFAULT_PARAMS = Dict{Symbol,Any}(
:term => false,
:prompt => "julia>",
:label => nothing,
:wrap => true,
:wrap => false,
:line_width => 75,
:displaysize => displaysize(),
:fig_ext => nothing,
:fig_pos => nothing,
:fig_env => nothing,
Expand Down
6 changes: 5 additions & 1 deletion src/run.jl
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,11 @@ function eval_chunk(doc::WeaveDoc, chunk::CodeChunk, report::Report, mod::Module
chunk.options[:out_width] = report.format.out_width
end

chunk.result = run_code(doc, chunk, report, mod)
# Get the default `displaysize`.
lines, cols = chunk.options[:displaysize]
chunk.result = withenv("LINES" => lines, "COLUMNS" => cols) do
run_code(doc, chunk, report, mod)
end

execute_posthooks!(chunk)

Expand Down
60 changes: 60 additions & 0 deletions test/test_display.jl
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,66 @@ DataFrame(a=rand($n))
@test isdefined(doc.chunks[1], :rich_output)
@test count("<tr>", doc.chunks[1].rich_output) < n

# `displaysize`
rows = 10 # number of rows in table
columns = 10 # number of colums in table

displaysize_rows = 1
displaysize_columns = 1
displayed_rows = displaysize_rows # number of rows that ends up getting displayed
displayed_columns = displaysize_columns # number of columns that ends up getting displayed

doc = mock_run("""
```julia; displaysize=($displaysize_rows, $displaysize_columns)
using DataFrames
DataFrame(Dict(Symbol(i) => rand($(rows)) for i = 1:$(columns)))
```
"""; doctype = "md2html")
@test isdefined(doc.chunks[1], :rich_output)
# Name row: 1
# Type row: 1
# Displayed rows: `displaysize_rows`
# ... row: 1
@test count("<tr>", doc.chunks[1].rich_output) == displayed_rows + 3
# Name row: 1 per displayed column + 1 for index column
# Type row: 1 per displayed column + 1 for index column
# Displayed rows: 1 per row
# ... row: 1
# Mistakenly match `<thead`: 1
@test count("<th", doc.chunks[1].rich_output) == (displayed_columns + 1) * 2 + displayed_rows + 1 + 1

# Increase rows but not columns.
displaysize_rows = 5
displaysize_columns = 1
displayed_rows = displaysize_rows
displayed_columns = displaysize_columns

doc = mock_run("""
```julia; displaysize=($displaysize_rows, $displaysize_columns)
using DataFrames
DataFrame(Dict(Symbol(i) => rand($(rows)) for i = 1:$(columns)))
```
"""; doctype = "md2html")
@test isdefined(doc.chunks[1], :rich_output)
@test count("<tr>", doc.chunks[1].rich_output) == displayed_rows + 3
@test count("<th", doc.chunks[1].rich_output) == (displayed_columns + 1) * 2 + displayed_rows + 1 + 1

# Increase columns too.
displaysize_rows = 5
displaysize_columns = 1000 # enough to get ALL `columns` to be displayed.
displayed_rows = displaysize_rows
displayed_columns = columns # `displaysize_columns` large enough for all columns to be displayed
doc = mock_run("""
```julia; displaysize=($displaysize_rows, $displaysize_columns)
using DataFrames
DataFrame(Dict(Symbol(i) => rand($(rows)) for i = 1:$(columns)))
```
"""; doctype = "md2html")
@test isdefined(doc.chunks[1], :rich_output)
@test count("<tr>", doc.chunks[1].rich_output) == displayed_rows + 3
@test count("<th", doc.chunks[1].rich_output) == (displayed_columns + 1) * 2 + displayed_rows + 1 + 1


end

end