@@ -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