@@ -9,57 +9,57 @@ struct BeforeAfterLimited <: BeforeAfter end
99struct BeforeAfterFull <: BeforeAfter end
1010struct BeforeAfterImage <: BeforeAfter end
1111
12- render_item(:: RenderMode , item) = println(item)
13- function render_item(:: BeforeAfterLimited , item)
14- show(IOContext(stdout , :limit=> true , :displaysize=> (20 ,80 )), " text/plain" , item)
15- println()
12+ render_item(mode:: RenderMode , item) = render_item(stdout , mode, item)
13+ render_item(io:: IO , :: RenderMode , item) = println(io, item)
14+ function render_item(io:: IO , :: BeforeAfterLimited , item)
15+ show(IOContext(io, :limit=> true , :displaysize=> (20 ,80 )), " text/plain" , item)
16+ println(io)
1617end
17- function render_item(:: BeforeAfterImage , item)
18+ function render_item(io:: IO , :: BeforeAfterImage , item:: AbstractMatrix )
19+ # FIXME : encodeimg only support 2d cases right now
1820 str_item = @withcolor ImageInTerminal. encodeimg(ImageInTerminal. SmallBlocks(), ImageInTerminal. TermColor256(), item, 20 , 40 )[1 ]
19- println(" eltype: " , eltype(item))
20- println(" size: " , map(length, axes(item)))
21- println(" thumbnail:" )
22- println.( str_item)
21+ println(io, " eltype: " , eltype(item))
22+ println(io, " size: " , map(length, axes(item)))
23+ println(io, " thumbnail:" )
24+ foreach(x -> println(io, x), str_item)
2325end
2426
2527# # 2 arg form render for comparing
26- function render(mode:: BeforeAfter , reference, actual)
27- println(" - REFERENCE -------------------" )
28- render_item(mode, reference)
29- println(" -------------------------------" )
30- println(" - ACTUAL ----------------------" )
31- render_item(mode, actual)
32- println(" -------------------------------" )
28+ render(mode:: RenderMode , args... ) = render(stdout , mode, args... )
29+ function render(io:: IO , mode:: BeforeAfter , reference, actual)
30+ println(io, " - REFERENCE -------------------" )
31+ render_item(io, mode, reference)
32+ println(io, " -------------------------------" )
33+ println(io, " - ACTUAL ----------------------" )
34+ render_item(io, mode, actual)
35+ println(io, " -------------------------------" )
3336end
34- function render(:: Diff , reference, actual)
35- println(" - DIFF ------------------------" )
36- @withcolor println(deepdiff(reference, actual))
37- println(" -------------------------------" )
37+ function render(io :: IO , :: Diff , reference, actual)
38+ println(io, " - DIFF ------------------------" )
39+ @withcolor println(io, deepdiff(reference, actual))
40+ println(io, " -------------------------------" )
3841end
3942
4043# # 1 arg form render for new content
41- function render(mode:: RenderMode , actual)
42- println(" - NEW CONTENT -----------------" )
43- render_item(mode, actual)
44- println(" -------------------------------" )
44+ function render(io :: IO , mode:: RenderMode , actual)
45+ println(io, " - NEW CONTENT -----------------" )
46+ render_item(io, mode, actual)
47+ println(io, " -------------------------------" )
4548end
4649
50+ # We set the fallback as limited mode because it is not safe/efficient to fully render anything unless
51+ # * we have prior information that it is not long -- numbers
52+ # * or, we know how to fully render it efficiently without sending too much noise to IO
53+ # - Diff mode for strings
54+ # - BeforeAfterImage for images
55+ # Arrays, in general, should be rendered using limited mode.
4756"""
48- default_rendermode(::DataFormat, actual)
57+ default_rendermode(actual)
4958
50- Infer the most appropriate render mode according to type of reference file and `actual`.
59+ Infer the most appropriate render mode according to type of `actual`.
5160"""
52- default_rendermode(:: Type{<:DataFormat} , :: Any ) = BeforeAfterLimited()
53- default_rendermode(:: Type{<:DataFormat} , :: AbstractString ) = Diff()
54- default_rendermode(:: Type{<:DataFormat} , :: AbstractArray{<:Colorant} ) = BeforeAfterImage()
55-
56- # plain TXTs
57- default_rendermode(:: Type{DataFormat{:TXT}} , :: Any ) = Diff()
58- default_rendermode(:: Type{DataFormat{:TXT}} , :: AbstractString ) = Diff()
59- default_rendermode(:: Type{DataFormat{:TXT}} , :: Number ) = BeforeAfterFull()
60- default_rendermode(:: Type{DataFormat{:TXT}} , :: AbstractArray{<:Colorant} ) = BeforeAfterImage()
61-
62- # SHA256
63- default_rendermode(:: Type{DataFormat{:SHA256}} , :: Any ) = BeforeAfterFull()
64- default_rendermode(:: Type{DataFormat{:SHA256}} , :: AbstractString ) = BeforeAfterFull()
65- default_rendermode(:: Type{DataFormat{:SHA256}} , :: AbstractArray{<:Colorant} ) = BeforeAfterLimited()
61+ default_rendermode(:: Type ) = BeforeAfterLimited()
62+ default_rendermode(:: Type{T} ) where T<: Number = BeforeAfterFull()
63+ default_rendermode(:: Type{T} ) where T<: AbstractString = Diff()
64+ default_rendermode(:: Type{T} ) where T<: AbstractArray{<:AbstractString} = Diff()
65+ default_rendermode(:: Type{T} ) where T<: AbstractArray{<:Colorant} = BeforeAfterImage()
0 commit comments