2222
2323 < span class ="pl-smi "> context</ span > .< span class ="pl-smi "> ScriptMethods</ span > .< span class ="pl-en "> Add</ span > (< span class ="pl-k "> new</ span > < span class ="pl-en "> MarkdownScriptMethods</ span > ());
2424
25- < span class ="pl-smi "> ScriptConfig</ span > .< span class ="pl-smi "> DontEvaluateBlocksNamed</ span > .< span class ="pl-en "> Add</ span > (< span class ="pl-s "> < span class ="pl-pds "> "</ span > markdown< span class ="pl-pds "> "</ span > </ span > );
26-
2725 < span class ="pl-smi "> context</ span > .< span class ="pl-smi "> ScriptBlocks</ span > .< span class ="pl-en "> Add</ span > (< span class ="pl-k "> new</ span > < span class ="pl-en "> MarkdownScriptBlock</ span > ());
2826 }
2927}</ pre > </ div >
3028< h3 >
31- < a id ="user-content- creating-plugins " class ="anchor " href ="#creating-plugins " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Creating Plugins</ h3 >
29+ < a id ="creating-plugins " class ="anchor " href ="#creating-plugins " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Creating Plugins</ h3 >
3230< p > Plugin are simply classes that implement < code > IScriptPlugin</ code > interface and its < code > Register()</ code > method to extend the < code > ScriptContext</ code >
3331with additional functionality we want to make available:</ p >
3432< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-k "> public</ span > < span class ="pl-k "> interface</ span > < span class ="pl-en "> IScriptPlugin</ span >
4846 < span class ="pl-k "> void</ span > < span class ="pl-en "> AfterPluginsLoaded</ span > (< span class ="pl-en "> ScriptContext</ span > < span class ="pl-smi "> context</ span > );
4947}</ pre > </ div >
5048< h2 >
51- < a id ="user-content- pre-registered-plugins-in-scriptcontext " class ="anchor " href ="#pre-registered-plugins-in-scriptcontext " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Pre-registered Plugins in < code > ScriptContext</ code >
49+ < a id ="pre-registered-plugins-in-scriptcontext " class ="anchor " href ="#pre-registered-plugins-in-scriptcontext " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Pre-registered Plugins in < code > ScriptContext</ code >
5250</ h2 >
5351< p > Pre-registered plugins are useful when you want to easily < strong > remove</ strong > a pre-registered suite of functionality, e.g:</ p >
5452< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-k "> var</ span > < span class ="pl-smi "> context</ span > < span class ="pl-k "> =</ span > < span class ="pl-k "> new</ span > < span class ="pl-en "> ScriptContext</ span > {
5856 .< span class ="pl-en "> RemovePlugins</ span > (< span class ="pl-smi "> x</ span > < span class ="pl-k "> =></ span > < span class ="pl-smi "> x</ span > < span class ="pl-k "> is</ span > < span class ="pl-en "> HtmlScriptBlocks</ span > ) < span class ="pl-c "> < span class ="pl-c "> //</ span > Remove all html blocks</ span >
5957 .< span class ="pl-en "> Init</ span > ();</ pre > </ div >
6058< h3 >
61- < a id ="user-content- defaultscriptblocks " class ="anchor " href ="#defaultscriptblocks " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > DefaultScriptBlocks</ h3 >
59+ < a id ="defaultscriptblocks " class ="anchor " href ="#defaultscriptblocks " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > DefaultScriptBlocks</ h3 >
6260< p > The Default < a href ="/docs/blocks "> Script Blocks</ a > contain all the < strong > statement</ strong > functionality in < code > #Script</ code > which includes:</ p >
6361< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-k "> public</ span > < span class ="pl-k "> class</ span > < span class ="pl-en "> DefaultScriptBlocks</ span > : < span class ="pl-en "> IScriptPlugin</ span >
6462{
8078 }
8179}</ pre > </ div >
8280< h3 >
83- < a id ="user-content- htmlscriptblocks " class ="anchor " href ="#htmlscriptblocks " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > HtmlScriptBlocks</ h3 >
81+ < a id ="htmlscriptblocks " class ="anchor " href ="#htmlscriptblocks " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > HtmlScriptBlocks</ h3 >
8482< p > The purpose of the < a href ="/docs/blocks#html "> HTML Script Blocks</ a > is to pack a suite of generically useful functionality commonly used when generating html.
8583All html blocks inherit the same functionality with blocks registered for the most popular HTML elements, currently:</ p >
8684< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-k "> public</ span > < span class ="pl-k "> class</ span > < span class ="pl-en "> HtmlScriptBlocks</ span > : < span class ="pl-en "> IScriptPlugin</ span >
@@ -127,12 +125,12 @@ <h3>
127125 }
128126}</ pre > </ div >
129127< h2 >
130- < a id ="user-content- pre-registered-plugins-in-sharppagesfeature " class ="anchor " href ="#pre-registered-plugins-in-sharppagesfeature " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Pre-registered Plugins in < code > SharpPagesFeature</ code >
128+ < a id ="pre-registered-plugins-in-sharppagesfeature " class ="anchor " href ="#pre-registered-plugins-in-sharppagesfeature " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Pre-registered Plugins in < code > SharpPagesFeature</ code >
131129</ h2 >
132130< p > The < a href ="/docs/sharp-pages "> SharpPagesFeature</ a > in < code > ServiceStack.dll</ code > has access to more dependencies than < code > ScriptContext</ code > and
133131is able to pre-register more functionality by default including:</ p >
134132< h3 >
135- < a id ="user-content- servicestackscriptblocks " class ="anchor " href ="#servicestackscriptblocks " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > ServiceStackScriptBlocks</ h3 >
133+ < a id ="servicestackscriptblocks " class ="anchor " href ="#servicestackscriptblocks " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > ServiceStackScriptBlocks</ h3 >
136134< p > Containing the < code > {{#minifyjs}}{{/minifyjs}}</ code > , < code > {{#minifycss}}{{/minifycss}}</ code > and < code > {{#minifyhtml}}{{/minifyhtml}}</ code > for minifying
137135its contents:</ p >
138136< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-k "> public</ span > < span class ="pl-k "> class</ span > < span class ="pl-en "> ServiceStackScriptBlocks</ span > : < span class ="pl-en "> IScriptPlugin</ span >
148146 }
149147}</ pre > </ div >
150148< h3 >
151- < a id ="user-content- markdownscriptplugin " class ="anchor " href ="#markdownscriptplugin " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > MarkdownScriptPlugin</ h3 >
149+ < a id ="markdownscriptplugin " class ="anchor " href ="#markdownscriptplugin " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > MarkdownScriptPlugin</ h3 >
152150< p > Adds Markdown supports to < a href ="/docs/sharp-pages "> #Script Pages</ a > by default:</ p >
153151< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-k "> public</ span > < span class ="pl-k "> class</ span > < span class ="pl-en "> MarkdownScriptPlugin</ span > : < span class ="pl-en "> IScriptPlugin</ span >
154152{
@@ -163,18 +161,16 @@ <h3>
163161
164162 < span class ="pl-smi "> context</ span > .< span class ="pl-smi "> ScriptMethods</ span > .< span class ="pl-en "> Add</ span > (< span class ="pl-k "> new</ span > < span class ="pl-en "> MarkdownScriptMethods</ span > ());
165163
166- < span class ="pl-smi "> ScriptConfig</ span > .< span class ="pl-smi "> DontEvaluateBlocksNamed</ span > .< span class ="pl-en "> Add</ span > (< span class ="pl-s "> < span class ="pl-pds "> "</ span > markdown< span class ="pl-pds "> "</ span > </ span > );
167-
168164 < span class ="pl-smi "> context</ span > .< span class ="pl-smi "> ScriptBlocks</ span > .< span class ="pl-en "> Add</ span > (< span class ="pl-k "> new</ span > < span class ="pl-en "> MarkdownScriptBlock</ span > ());
169165 }
170166}</ pre > </ div >
171167< p > Added using:</ p >
172168< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-smi "> Plugins</ span > .< span class ="pl-en "> Add</ span > (< span class ="pl-k "> new</ span > < span class ="pl-en "> MarkdownScriptPlugin</ span > { < span class ="pl-smi "> RegisterPageFormat</ span > < span class ="pl-k "> =</ span > < span class ="pl-c1 "> false</ span > });</ pre > </ div >
173169< h2 >
174- < a id ="user-content- available-plugins " class ="anchor " href ="#available-plugins " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Available Plugins</ h2 >
170+ < a id ="available-plugins " class ="anchor " href ="#available-plugins " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Available Plugins</ h2 >
175171< p > List of available plugins that's not pre-registered anywhere include:</ p >
176172< h3 >
177- < a id ="user-content- protectedscriptblocks " class ="anchor " href ="#protectedscriptblocks " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > ProtectedScriptBlocks</ h3 >
173+ < a id ="protectedscriptblocks " class ="anchor " href ="#protectedscriptblocks " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > ProtectedScriptBlocks</ h3 >
178174< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-k "> public</ span > < span class ="pl-k "> class</ span > < span class ="pl-en "> ProtectedScriptBlocks</ span > : < span class ="pl-en "> IScriptPlugin</ span >
179175{
180176 < span class ="pl-k "> public</ span > < span class ="pl-k "> void</ span > < span class ="pl-en "> Register</ span > (< span class ="pl-en "> ScriptContext</ span > < span class ="pl-smi "> context</ span > )
@@ -186,32 +182,32 @@ <h3>
186182}</ pre > </ div >
187183< p > Although generally not required as < a href ="/docs/default-scripts#evalTemplate "> evalTemplate script method</ a > registered by default has equivalent functionality.</ p >
188184< h3 >
189- < a id ="user-content- githubplugin " class ="anchor " href ="#githubplugin " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > GitHubPlugin</ h3 >
185+ < a id ="githubplugin " class ="anchor " href ="#githubplugin " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > GitHubPlugin</ h3 >
190186< p > ServiceStack's available GitHub integration can be used in your < code > #Script</ code > by adding < code > GitHubPlugin</ code > to your < code > ScriptContext</ code > or < code > SharpPagesFeature</ code > :</ p >
191187< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-k "> new</ span > < span class ="pl-smi "> ScriptContext</ span > {
192188 < span class ="pl-smi "> Plugins</ span > < span class ="pl-k "> =</ span > { < span class ="pl-k "> new</ span > < span class ="pl-en "> GitHubPlugin</ span > () },
193189}.< span class ="pl-en "> Init</ span > ();</ pre > </ div >
194190< p > This is enabled by default in the < code > web</ code > and < code > app</ code > dotnet tools so they can be used in < code > #Script</ code > < strong > .ss</ strong > scripts.</ p >
195191< p > Checkout < a href ="https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.Common/Script/Methods/GitHubScripts.cs "> GitHubScripts.cs</ a >
196192for the full API available. Here's < a href ="https://developer.github.com/v3/gists/#example "> GitHub's Gist API</ a > example of creating gists in < code > #Script</ code > :</ p >
197- < div class ="highlight highlight-source-js "> < pre > < span class ="pl-en "> githubGateway</ span > ( < span class ="pl-s " > < span class ="pl-pds "> '</ span > GITHUB_GIST_TOKEN < span class ="pl-pds " > ' </ span > </ span > . < span class ="pl-en " > envVariable </ span > ()) < span class ="pl-k " > | </ span > < span class ="pl-k "> ></ span > < span class ="pl-smi "> to</ span > < span class ="pl-k "> =></ span > gateway
193+ < div class ="highlight highlight-source-js "> < pre > < span class ="pl-en "> githubGateway</ span > < span class ="pl-kos " > ( </ span > < span class ="pl-s "> 'GITHUB_GIST_TOKEN' </ span > < span class ="pl-kos " > . </ span > < span class =" pl-en " > envVariable < /span > < span class ="pl-kos " > ( </ span > < span class =" pl-kos " > ) </ span > < span class ="pl-kos " > ) </ span > | < span class ="pl-c1 "> ></ span > < span class ="pl-s1 "> to</ span > < span class ="pl-c1 "> =></ span > < span class =" pl-s1 " > gateway</ span >
198194
199- {{ < span class ="pl-smi "> gateway</ span > . < span class ="pl-en " > githubCreateGist </ span > ( < span class ="pl-s " > < span class ="pl-pds " > ' </ span > Hello World Examples< span class ="pl-pds " > ' </ span > </ span > , {
200- < span class ="pl-s "> < span class =" pl-pds " > ' </ span > hello_world_ruby.txt< span class =" pl-pds " > '</ span > </ span > < span class =" pl-k " > : </ span > < span class ="pl-s "> < span class =" pl-pds " > ' </ span > Run `ruby hello_world.rb` to print Hello World< span class ="pl-pds " > ' </ span > </ span > ,
201- < span class ="pl-s "> < span class =" pl-pds " > ' </ span > hello_world_python.txt< span class =" pl-pds " > '</ span > </ span > < span class =" pl-k " > : </ span > < span class ="pl-s "> < span class =" pl-pds " > ' </ span > Run `python hello_world.py` to print Hello World< span class ="pl-pds " > ' </ span > </ span > ,
202- })
203- < span class ="pl-k " > | </ span > < span class ="pl-k " > ></ span > < span class ="pl-smi " > to </ span > < span class ="pl-k " > => </ span > newGist }}
195+ < span class =" pl-kos " > { </ span > < span class =" pl-kos " > { </ span > < span class ="pl-s1 "> gateway</ span > < span class ="pl-kos " > . </ span > < span class ="pl-en " > githubCreateGist </ span > < span class ="pl-kos " > ( </ span > < span class =" pl-s " > ' Hello World Examples' </ span > < span class ="pl-kos " > , </ span > < span class =" pl-kos " > { </ span >
196+ < span class ="pl-s "> ' hello_world_ruby.txt'</ span > : < span class ="pl-s "> ' Run `ruby hello_world.rb` to print Hello World' </ span > < span class ="pl-kos " > , </ span >
197+ < span class ="pl-s "> ' hello_world_python.txt'</ span > : < span class ="pl-s "> ' Run `python hello_world.py` to print Hello World' </ span > < span class ="pl-kos " > , </ span >
198+ < span class =" pl-kos " > } </ span > < span class =" pl-kos " > ) </ span >
199+ | < span class ="pl-c1 " > > </ span > < span class ="pl-s1 " > to </ span > < span class =" pl-c1 " > = ></ span > < span class ="pl-s1 " > newGist </ span > < span class ="pl-kos " > } </ span > < span class =" pl-kos " > } </ span >
204200
205- { < span class ="pl-k " > ...</ span > newGist, Files < span class ="pl-k " > : </ span > < span class ="pl-c1 "> null</ span > , Owner < span class ="pl-k " > : </ span > < span class ="pl-c1 "> null</ span > } < span class ="pl-k " > | </ span > < span class ="pl-k "> ></ span > < span class ="pl-en "> textDump</ span > ({ caption < span class ="pl-k " > : </ span > < span class ="pl-s " > < span class ="pl-pds " > ' </ span > new gist < span class ="pl-pds "> '</ span > < /span > }) </ pre > </ div >
201+ < span class ="pl-kos " > { </ span > ...< span class =" pl-s1 " > newGist</ span > < span class =" pl-kos " > , </ span > < span class ="pl-c1 " > Files </ span > : < span class ="pl-c1 "> null</ span > < span class =" pl-kos " > , </ span > < span class ="pl-c1 " > Owner </ span > : < span class ="pl-c1 "> null</ span > < span class ="pl-kos " > } </ span > | < span class ="pl-c1 "> ></ span > < span class ="pl-en "> textDump</ span > < span class ="pl-kos " > ( </ span > < span class ="pl-kos " > { </ span > < span class ="pl-c1 " > caption </ span > : < span class ="pl-s "> 'new gist' </ span > < span class =" pl-kos " > } < /span > < span class =" pl-kos " > ) </ span > </ pre > </ div >
206202< p > View Gist files and metadata example:</ p >
207- < div class ="highlight highlight-source-js "> < pre > < span class ="pl-smi "> gateway</ span > . < span class ="pl-en "> githubGist</ span > (gistId) < span class ="pl-k " > | </ span > < span class ="pl-k "> ></ span > < span class ="pl-smi "> to</ span > < span class ="pl-k "> =></ span > gist
203+ < div class ="highlight highlight-source-js "> < pre > < span class ="pl-s1 "> gateway</ span > < span class =" pl-kos " > . </ span > < span class ="pl-en "> githubGist</ span > < span class =" pl-kos " > ( </ span > < span class =" pl-s1 " > gistId </ span > < span class ="pl-kos " > ) </ span > | < span class ="pl-c1 "> ></ span > < span class ="pl-s1 "> to</ span > < span class ="pl-c1 "> =></ span > < span class =" pl-s1 " > gist</ span >
208204
209- { < span class ="pl-k " > ...</ span > gist, Files < span class ="pl-k " > : </ span > < span class ="pl-c1 "> null</ span > , Owner < span class ="pl-k " > : </ span > < span class ="pl-c1 "> null</ span > } < span class ="pl-k " > | </ span > < span class ="pl-k "> ></ span > < span class ="pl-en "> textDump</ span > ({ caption < span class ="pl-k " > : </ span > < span class ="pl-s " > < span class ="pl-pds " > ' </ span > gist < span class ="pl-pds "> '</ span > < /span > })
205+ < span class ="pl-kos " > { </ span > ...< span class =" pl-s1 " > gist</ span > < span class =" pl-kos " > , </ span > < span class ="pl-c1 " > Files </ span > : < span class ="pl-c1 "> null</ span > < span class =" pl-kos " > , </ span > < span class ="pl-c1 " > Owner </ span > : < span class ="pl-c1 "> null</ span > < span class =" pl-kos " > } </ span > | < span class ="pl-s1 " > </ span > < span class ="pl-c1 "> ></ span > < span class ="pl-en "> textDump</ span > < span class ="pl-kos " > ( </ span > < span class ="pl-kos " > { </ span > < span class ="pl-c1 " > caption </ span > : < span class ="pl-s "> 'gist' </ span > < span class =" pl-kos " > } < /span > < span class =" pl-kos " > ) </ span >
210206
211- < span class ="pl-s "> < span class =" pl-pds " > ` </ span > #### Gist Files< span class =" pl-pds " > ` </ span > </ span >
212- #each file < span class ="pl-k "> in</ span > < span class ="pl-smi "> gist</ span > . < span class ="pl-smi "> Files</ span > . < span class ="pl-smi "> Keys</ span >
213- < span class ="pl-smi "> gist</ span > . < span class ="pl-smi "> Files</ span > [file] < span class ="pl-k " > | </ span > < span class ="pl-k "> ></ span > < span class ="pl-en "> textDump</ span > ({ caption < span class ="pl-k " > : </ span > file })
214- < span class ="pl-k " > / </ span > each </ pre > </ div >
207+ < span class ="pl-s "> ` #### Gist Files` </ span >
208+ #< span class =" pl-s1 " > each</ span > < span class =" pl-s1 " > file</ span > < span class ="pl-k "> in</ span > < span class ="pl-s1 "> gist</ span > < span class =" pl-kos " > . </ span > < span class ="pl-c1 "> Files</ span > < span class =" pl-kos " > . </ span > < span class ="pl-c1 "> Keys</ span >
209+ < span class ="pl-s1 "> gist</ span > < span class =" pl-kos " > . </ span > < span class ="pl-c1 "> Files</ span > < span class =" pl-kos " > [ </ span > < span class =" pl-s1 " > file </ span > < span class ="pl-kos " > ] </ span > | < span class ="pl-c1 "> ></ span > < span class ="pl-en "> textDump</ span > < span class =" pl-kos " > ( </ span > < span class =" pl-kos " > { </ span > < span class ="pl-c1 " > caption </ span > : < span class =" pl-s1 " > file</ span > < span class =" pl-kos " > } </ span > < span class =" pl-kos " > ) </ span >
210+ / < span class ="pl-s1 " > each </ span > </ pre > </ div >
215211< p > Which renders the following GitHub Flavored Markdown output:</ p >
216212< table >
217213< thead >
296292</ tbody >
297293</ table >
298294< h4 >
299- < a id ="user-content- gist-files " class ="anchor " href ="#gist-files " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Gist Files</ h4 >
295+ < a id ="gist-files " class ="anchor " href ="#gist-files " aria-hidden ="true "> < span aria-hidden ="true " class ="octicon octicon-link "> </ span > </ a > Gist Files</ h4 >
300296< table >
301297< thead >
302298< tr >
0 commit comments