33
44namespace Contentstack . Utils . Models
55{
6- public class Options : IRenderable
6+ public class Options : IRenderable
77 {
88 #region #region Public
9- public Options() {}
10-
9+ public Options() { }
10+
1111 public Options ( IEntryEmbedable entry )
1212 {
1313 this . entry = entry ;
@@ -20,64 +20,139 @@ public virtual string RenderOption(IEmbeddedObject embeddedObject, Metadata meta
2020 switch ( metadata . StyleType )
2121 {
2222 case Enums . StyleType . Block :
23- string renderString = "<div><p>" + embeddedObject . Uid + "</p>" ;
24- if ( embeddedObject is IEmbeddedEntry ) {
25- renderString += "<p>Content type: <span>" + ( ( IEmbeddedEntry ) embeddedObject ) . Title + "</span></p>" ;
26- } else {
27- renderString += "<p>Content type: <span>" + embeddedObject . ContentTypeUid + "</span></p>" ;
23+ string renderString = "<div><p>" + embeddedObject . Uid + "</p>" ;
24+ if ( embeddedObject is IEmbeddedEntry )
25+ {
26+ renderString += "<p>Content type: <span>" + ( ( IEmbeddedEntry ) embeddedObject ) . Title + "</span></p>" ;
27+ }
28+ else
29+ {
30+ renderString += "<p>Content type: <span>" + embeddedObject . ContentTypeUid + "</span></p>" ;
2831 }
2932 renderString = renderString + "</div>" ;
3033 return renderString ;
3134
3235 case Enums . StyleType . Inline :
33- if ( embeddedObject is IEmbeddedEntry ) {
34- return "<span>" + ( ( IEmbeddedEntry ) embeddedObject ) . Title + "</span>" ;
36+ if ( embeddedObject is IEmbeddedEntry )
37+ {
38+ return "<span>" + ( ( IEmbeddedEntry ) embeddedObject ) . Title + "</span>" ;
3539 }
36- return "<span>" + embeddedObject . Uid + "</span>" ;
40+ return "<span>" + embeddedObject . Uid + "</span>" ;
3741
3842 case Enums . StyleType . Link :
39- if ( embeddedObject is IEmbeddedEntry ) {
40- return "<a href=\" " + embeddedObject . Uid + "\" >" + ( metadata . Text ?? ( ( IEmbeddedEntry ) embeddedObject ) . Title ) + "</a>" ;
43+ if ( embeddedObject is IEmbeddedEntry )
44+ {
45+ return "<a href=\" " + embeddedObject . Uid + "\" >" + ( metadata . Text ?? ( ( IEmbeddedEntry ) embeddedObject ) . Title ) + "</a>" ;
4146 }
42- return "<a href=\" " + embeddedObject . Uid + "\" >" + ( metadata . Text ?? embeddedObject . Uid ) + "</a>" ;
47+ return "<a href=\" " + embeddedObject . Uid + "\" >" + ( metadata . Text ?? embeddedObject . Uid ) + "</a>" ;
4348
4449 case Enums . StyleType . Display :
4550 if ( embeddedObject is IEmbeddedAsset )
4651 {
47- return "<img src=\" " + ( ( IEmbeddedAsset ) embeddedObject ) . Url + "\" alt=\" " + ( ( IEmbeddedAsset ) embeddedObject ) . Title + "\" />" ;
52+ return "<img src=\" " + ( ( IEmbeddedAsset ) embeddedObject ) . Url + "\" alt=\" " + ( ( IEmbeddedAsset ) embeddedObject ) . Title + "\" />" ;
4853 }
49- return "<img src=\" " + embeddedObject . Uid + "\" alt=\" " + embeddedObject . Uid + "\" />" ;
54+ return "<img src=\" " + embeddedObject . Uid + "\" alt=\" " + embeddedObject . Uid + "\" />" ;
5055
5156 case Enums . StyleType . Download :
5257 if ( embeddedObject is IEmbeddedAsset )
5358 {
54- return "<a href=\" " + ( ( IEmbeddedAsset ) embeddedObject ) . Url + "\" >" + ( metadata . Text ?? ( ( IEmbeddedAsset ) embeddedObject ) . Title ) + "</a>" ;
59+ return "<a href=\" " + ( ( IEmbeddedAsset ) embeddedObject ) . Url + "\" >" + ( metadata . Text ?? ( ( IEmbeddedAsset ) embeddedObject ) . Title ) + "</a>" ;
5560 }
56- return "<a href=\" " + embeddedObject . Uid + "\" >" + ( metadata . Text ?? embeddedObject . Uid ) + "</a>" ;
61+ return "<a href=\" " + embeddedObject . Uid + "\" >" + ( metadata . Text ?? embeddedObject . Uid ) + "</a>" ;
5762 }
58- return "" ;
63+ return "" ;
5964 }
6065
61- public string RenderMark ( MarkType markType , string text )
66+ public virtual string RenderMark ( MarkType markType , string text )
6267 {
63- switch ( markType ) {
68+ switch ( markType )
69+ {
6470 case MarkType . Bold :
65- return "<strong>" + text + " </strong>";
71+ return $ "<strong>{ text } </strong>";
6672 case MarkType . Italic :
67- return "<em>" + text + " </em>";
73+ return $ "<em>{ text } </em>";
6874 case MarkType . Underline :
69- return "<u>" + text + " </u>";
75+ return $ "<u>{ text } </u>";
7076 case MarkType . Strikethrough :
71- return "<strike>" + text + " </strike>";
77+ return $ "<strike>{ text } </strike>";
7278 case MarkType . InlineCode :
73- return "<span>" + text + " </span>";
79+ return $ "<span>{ text } </span>";
7480 case MarkType . Subscript :
75- return "<sub>" + text + " </sub>";
81+ return $ "<sub>{ text } </sub>";
7682 case MarkType . Superscript :
77- return "<sup>" + text + " </sup>";
83+ return $ "<sup>{ text } </sup>";
7884 }
7985 return text ;
8086 }
81- #endregion
87+
88+ public virtual string RenderNode ( NodeType nodeType , Node node , NodeChildrenCallBack callBack )
89+ {
90+ string href = "" ;
91+
92+ switch ( nodeType )
93+ {
94+ case NodeType . Paragraph :
95+ return $ "<p>{ callBack ( node . children ) } </p>";
96+ case NodeType . Link :
97+ if ( node . attrs . ContainsKey ( "url" ) )
98+ {
99+ href = ( string ) node . attrs [ "url" ] ;
100+ }
101+ return $ "<a href=\" { href } \" >{ callBack ( node . children ) } </a>";
102+ case NodeType . Image :
103+ if ( node . attrs . ContainsKey ( "url" ) )
104+ {
105+ href = ( string ) node . attrs [ "url" ] ;
106+ }
107+ return $ "<img src=\" { href } \" />{ callBack ( node . children ) } ";
108+ case NodeType . Embed :
109+ if ( node . attrs . ContainsKey ( "url" ) )
110+ {
111+ href = ( string ) node . attrs [ "url" ] ;
112+ }
113+ return $ "<iframe src=\" { href } \" >{ callBack ( node . children ) } </iframe>";
114+ case NodeType . Heading_1 :
115+ return $ "<h1>{ callBack ( node . children ) } </h1>";
116+ case NodeType . Heading_2 :
117+ return $ "<h2>{ callBack ( node . children ) } </h2>";
118+ case NodeType . Heading_3 :
119+ return $ "<h3>{ callBack ( node . children ) } </h3>";
120+ case NodeType . Heading_4 :
121+ return $ "<h4>{ callBack ( node . children ) } </h4>";
122+ case NodeType . Heading_5 :
123+ return $ "<h5>{ callBack ( node . children ) } </h5>";
124+ case NodeType . Heading_6 :
125+ return $ "<h6>{ callBack ( node . children ) } </h6>";
126+ case NodeType . OrderList :
127+ return $ "<ol>{ callBack ( node . children ) } </ol>";
128+ case NodeType . UnOrderList :
129+ return $ "<ul>{ callBack ( node . children ) } </ul>";
130+ case NodeType . ListItem :
131+ return $ "<li>{ callBack ( node . children ) } </li>";
132+ case NodeType . Hr :
133+ return $ "<hr>";
134+ case NodeType . Table :
135+ return $ "<table>{ callBack ( node . children ) } </table>";
136+ case NodeType . TableHeader :
137+ return $ "<thead>{ callBack ( node . children ) } </thead>";
138+ case NodeType . TableBody :
139+ return $ "<tbody>{ callBack ( node . children ) } </tbody>";
140+ case NodeType . TableFooter :
141+ return $ "<tfoot>{ callBack ( node . children ) } </tfoot>";
142+ case NodeType . TableRow :
143+ return $ "<tr>{ callBack ( node . children ) } </tr>";
144+ case NodeType . TableHead :
145+ return $ "<th>{ callBack ( node . children ) } </th>";
146+ case NodeType . TableData :
147+ return $ "<td>{ callBack ( node . children ) } </td>";
148+ case NodeType . BlockQuote :
149+ return $ "<blockquote>{ callBack ( node . children ) } </blockquote>";
150+ case NodeType . Code :
151+ return $ "<code>{ callBack ( node . children ) } </code>";
152+ default :
153+ return callBack ( node . children ) ;
154+ }
155+ #endregion
156+ }
82157 }
83158}
0 commit comments