@@ -30,15 +30,53 @@ component {
3030 var highlighted = highlighter .highlight ( arguments .code , arguments .language , false );
3131
3232 if ( useTryCf ) {
33- var rawCode = ' <script type="text/template" id="code-#LCase ( Hash ( highlighted ) ) #" data-trycf="true" data-script="#( arguments .language == ' cfs' ) #">'
33+ var hashId = " code-#LCase ( Hash ( highlighted ) ) #" ;
34+ var rawCode = ' <script type="text/template" id="#hashId #" data-trycf="true" data-script="#( arguments .language == ' cfs' ) #">'
3435 & arguments .code
3536 & ' </script>' & Chr (10 );
36- return rawCode & highlighted ;
37+ var codeResult = getCodeResult (arguments .code , arguments .language )
38+ if ( isEmpty ( codeResult ) )
39+ return rawCode & highlighted ;
40+ var preview = ' <div id="result-#hashId #" style="display:none;">#toBase64 (codeResult ) #</div>' ;
41+ return rawCode & highlighted & preview ;
3742 }
3843
3944 return highlighted ;
4045 }
4146
47+ private function getCodeResult (code , lang ) output = false {
48+ var codeKey = createGUID ();
49+ server [" _luceeExamples_#codeKey #" ] = arguments .code ;
50+
51+ // alas server.system is read only
52+ // var env = duplicate(server.system.environment);
53+ // var props = duplicate(server.system.properties);
54+ // server.system.properties = {};
55+ // server.system.environment = {};
56+
57+ try {
58+ var res = _internalRequest (
59+ template : " /exampleRunner/index.cfm" ,
60+ form : {
61+ codeKey : codeKey ,
62+ lang : arguments .lang
63+ }
64+ );
65+ } catch (e ){
66+ // request.logger( e.message );
67+ // dump(arguments);
68+ // rethrow;
69+ return e .message ;
70+ }
71+
72+ // server.system.environment = env;
73+ // server.system.properties = props;
74+
75+ if (! structKeyExists (res , " fileContent" ))
76+ return " " ;
77+ return res .fileContent ;
78+ }
79+
4280// PRIVATE HELPERS
4381 private any function _getNextHighlight ( required string text , required string startPos = 1 ) {
4482 var referenceRegex = " ```([a-z\+]+)?\n(.*?)\n```" ;
0 commit comments