44/*global $, _*/
55
66const markdownit = require ( 'markdown-it' ) ;
7+ const tokensToUntypedTemplateMark = require ( '@accordproject/markdown-template' ) . templatemarkutil . tokensToUntypedTemplateMark ;
78
89var mdurl = require ( 'mdurl' ) ;
910
@@ -72,7 +73,7 @@ var defaults = {
7273 // options below are for demo only
7374 _highlight : true ,
7475 _strict : false ,
75- _view : 'html' // html / src / debug
76+ _view : 'html' // html / src / debug / ast
7677} ;
7778
7879defaults . highlight = function ( str , lang ) {
@@ -117,6 +118,7 @@ function setResultView(val) {
117118 $ ( 'body' ) . removeClass ( 'result-as-html' ) ;
118119 $ ( 'body' ) . removeClass ( 'result-as-src' ) ;
119120 $ ( 'body' ) . removeClass ( 'result-as-debug' ) ;
121+ $ ( 'body' ) . removeClass ( 'result-as-ast' ) ;
120122 $ ( 'body' ) . addClass ( 'result-as-' + val ) ;
121123 defaults . _view = val ;
122124}
@@ -172,7 +174,7 @@ function updateResult() {
172174 var source = $ ( '.source' ) . val ( ) ;
173175
174176 // Update only active view to avoid slowdowns
175- // (debug & src view with highlighting are a bit slow)
177+ // (debug & ast & src view with highlighting are a bit slow)
176178 if ( defaults . _view === 'src' ) {
177179 setHighlightedlContent ( '.result-src-content' , mdSrc . render ( source ) , 'html' ) ;
178180
@@ -183,6 +185,13 @@ function updateResult() {
183185 'json'
184186 ) ;
185187
188+ } else if ( defaults . _view === 'ast' ) {
189+ setHighlightedlContent (
190+ '.result-ast-content' ,
191+ JSON . stringify ( tokensToUntypedTemplateMark ( mdSrc . parse ( source , { references : { } } ) , 'contract' ) , null , 2 ) ,
192+ 'json'
193+ ) ;
194+
186195 } else { /*defaults._view === 'html'*/
187196 $ ( '.result-html' ) . html ( mdHtml . render ( source ) ) ;
188197 }
@@ -377,7 +386,7 @@ function loadPermalink() {
377386 } ) ;
378387
379388 // sanitize for sure
380- if ( [ 'html' , 'src' , 'debug' ] . indexOf ( defaults . _view ) === - 1 ) {
389+ if ( [ 'html' , 'src' , 'debug' , 'ast' ] . indexOf ( defaults . _view ) === - 1 ) {
381390 defaults . _view = 'html' ;
382391 }
383392}
0 commit comments