@@ -11,57 +11,7 @@ export default class TerminalMessage extends Component {
1111let { content} = this . props ;
1212
1313if ( content . isTraceback ) {
14- return < div className = "tracebacks-container" >
15- < div className = "traceback-exception" >
16- < strong > Error traceback:</ strong >
17- </ div >
18- {
19- content . data . map ( ( traceback , tracebackIndex ) =>
20- < div className = "traceback" key = { tracebackIndex } >
21- {
22- traceback . frames . map ( ( frame , frameIndex ) =>
23- < div className = "traceback-frame" key = { frameIndex } >
24- { frameIndex > 0 && < div className = "traceback-frame-name" > { frame . name } :</ div > }
25- < table className = "traceback-lines-table" >
26- < tbody >
27- {
28- frame . lines . map ( line =>
29- < tr key = { line . lineno } >
30- < td className = "traceback-lineno" > { line . lineno } </ td >
31- < td className = "traceback-line-content codehilite"
32- dangerouslySetInnerHTML = { { __html :line . content } } />
33- </ tr >
34- )
35- }
36- </ tbody >
37- </ table >
38- < table className = "traceback-variables-table" >
39- < tbody >
40- {
41- frame . variables . map ( ( variable , variableIndex ) =>
42- < tr key = { variableIndex } >
43- < td className = "traceback-variable-name codehilite"
44- dangerouslySetInnerHTML = { { __html :variable . name } } />
45- < td className = "traceback-variable-value codehilite"
46- dangerouslySetInnerHTML = { { __html :variable . value } } />
47- </ tr >
48- )
49- }
50- </ tbody >
51- </ table >
52- </ div >
53- )
54- }
55- < div className = "traceback-exception" >
56- < strong > { traceback . exception . type } :</ strong > { traceback . exception . message }
57- </ div >
58- {
59- traceback . tail && < div className = "traceback-tail" > { traceback . tail } </ div >
60- }
61- </ div >
62- )
63- }
64- </ div >
14+ return < Tracebacks tracebacks = { content . data } />
6515}
6616
6717let color = "white" ;
@@ -80,3 +30,60 @@ export default class TerminalMessage extends Component {
8030/>
8131}
8232}
33+
34+
35+ const Tracebacks = ( { tracebacks} ) =>
36+ < div className = "tracebacks-container" >
37+ < div className = "traceback-exception" >
38+ < strong > Error traceback:</ strong >
39+ </ div >
40+ {
41+ tracebacks . map ( ( traceback , tracebackIndex ) =>
42+ < div className = "traceback" key = { tracebackIndex } >
43+ {
44+ traceback . frames . map ( ( frame , frameIndex ) =>
45+ < Frame frame = { frame } index = { frameIndex } key = { frameIndex } />
46+ )
47+ }
48+ < div className = "traceback-exception" >
49+ < strong > { traceback . exception . type } :</ strong > { traceback . exception . message }
50+ </ div >
51+ {
52+ traceback . tail && < div className = "traceback-tail" > { traceback . tail } </ div >
53+ }
54+ </ div >
55+ )
56+ }
57+ </ div >
58+
59+ const Frame = ( { frame, index} ) =>
60+ < div className = "traceback-frame" >
61+ { index > 0 && < div className = "traceback-frame-name" > { frame . name } :</ div > }
62+ < table className = "traceback-lines-table" >
63+ < tbody >
64+ {
65+ frame . lines . map ( line =>
66+ < tr key = { line . lineno } >
67+ < td className = "traceback-lineno" > { line . lineno } </ td >
68+ < td className = "traceback-line-content codehilite"
69+ dangerouslySetInnerHTML = { { __html :line . content } } />
70+ </ tr >
71+ )
72+ }
73+ </ tbody >
74+ </ table >
75+ < table className = "traceback-variables-table" >
76+ < tbody >
77+ {
78+ frame . variables . map ( ( variable , variableIndex ) =>
79+ < tr key = { variableIndex } >
80+ < td className = "traceback-variable-name codehilite"
81+ dangerouslySetInnerHTML = { { __html :variable . name } } />
82+ < td className = "traceback-variable-value codehilite"
83+ dangerouslySetInnerHTML = { { __html :variable . value } } />
84+ </ tr >
85+ )
86+ }
87+ </ tbody >
88+ </ table >
89+ </ div >