@@ -9,57 +9,57 @@ struct BeforeAfterLimited <: BeforeAfter end
9
9
struct BeforeAfterFull <: BeforeAfter end
10
10
struct BeforeAfterImage <: BeforeAfter end
11
11
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)
16
17
end
17
- function render_item (:: BeforeAfterImage , item)
18
+ function render_item (io:: IO , :: BeforeAfterImage , item:: AbstractMatrix )
19
+ # FIXME : encodeimg only support 2d cases right now
18
20
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)
23
25
end
24
26
25
27
# # 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, " -------------------------------" )
33
36
end
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, " -------------------------------" )
38
41
end
39
42
40
43
# # 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, " -------------------------------" )
45
48
end
46
49
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.
47
56
"""
48
- default_rendermode(::DataFormat, actual)
57
+ default_rendermode(actual)
49
58
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`.
51
60
"""
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