@@ -17,14 +17,26 @@ defmodule Asciinema.Streaming.Parser.Json do
17
17
18
18
def handle_message ( % { "cols" => cols , "rows" => rows } = header , state )
19
19
when is_integer ( cols ) and is_integer ( rows ) do
20
- commands = [ reset: % { size: { cols , rows } , init: header [ "init" ] , time: header [ "time" ] } ]
20
+ commands = [
21
+ reset: % {
22
+ size: { cols , rows } ,
23
+ init: header [ "init" ] ,
24
+ time: header [ "time" ] ,
25
+ theme: parse_theme ( header [ "theme" ] )
26
+ }
27
+ ]
21
28
22
29
{ :ok , commands , % { state | first: false } }
23
30
end
24
31
25
- def handle_message ( % { "width" => cols , "height" => rows } , state )
32
+ def handle_message ( % { "width" => cols , "height" => rows } = header , state )
26
33
when is_integer ( cols ) and is_integer ( rows ) do
27
- commands = [ reset: % { size: { cols , rows } } ]
34
+ commands = [
35
+ reset: % {
36
+ size: { cols , rows } ,
37
+ theme: parse_theme ( header [ "theme" ] )
38
+ }
39
+ ]
28
40
29
41
{ :ok , commands , % { state | first: false } }
30
42
end
@@ -53,4 +65,14 @@ defmodule Asciinema.Streaming.Parser.Json do
53
65
def handle_message ( _message , _state ) do
54
66
{ :error , :message_invalid }
55
67
end
68
+
69
+ defp parse_theme ( nil ) , do: nil
70
+
71
+ defp parse_theme ( % { "fg" => fg , "bg" => bg , "palette" => palette } ) do
72
+ % {
73
+ fg: fg ,
74
+ bg: bg ,
75
+ palette: String . split ( palette , ":" )
76
+ }
77
+ end
56
78
end
0 commit comments