22
22
23
23
< 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 > ());
24
24
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
-
27
25
< 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 > ());
28
26
}
29
27
}</ pre > </ div >
30
28
< 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 >
32
30
< p > Plugin are simply classes that implement < code > IScriptPlugin</ code > interface and its < code > Register()</ code > method to extend the < code > ScriptContext</ code >
33
31
with additional functionality we want to make available:</ p >
34
32
< 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 >
48
46
< span class ="pl-k "> void</ span > < span class ="pl-en "> AfterPluginsLoaded</ span > (< span class ="pl-en "> ScriptContext</ span > < span class ="pl-smi "> context</ span > );
49
47
}</ pre > </ div >
50
48
< 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 >
52
50
</ h2 >
53
51
< p > Pre-registered plugins are useful when you want to easily < strong > remove</ strong > a pre-registered suite of functionality, e.g:</ p >
54
52
< 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 > {
58
56
.< 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 >
59
57
.< span class ="pl-en "> Init</ span > ();</ pre > </ div >
60
58
< 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 >
62
60
< p > The Default < a href ="/docs/blocks "> Script Blocks</ a > contain all the < strong > statement</ strong > functionality in < code > #Script</ code > which includes:</ p >
63
61
< 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 >
64
62
{
80
78
}
81
79
}</ pre > </ div >
82
80
< 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 >
84
82
< 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.
85
83
All html blocks inherit the same functionality with blocks registered for the most popular HTML elements, currently:</ p >
86
84
< 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>
127
125
}
128
126
}</ pre > </ div >
129
127
< 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 >
131
129
</ h2 >
132
130
< p > The < a href ="/docs/sharp-pages "> SharpPagesFeature</ a > in < code > ServiceStack.dll</ code > has access to more dependencies than < code > ScriptContext</ code > and
133
131
is able to pre-register more functionality by default including:</ p >
134
132
< 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 >
136
134
< p > Containing the < code > {{#minifyjs}}{{/minifyjs}}</ code > , < code > {{#minifycss}}{{/minifycss}}</ code > and < code > {{#minifyhtml}}{{/minifyhtml}}</ code > for minifying
137
135
its contents:</ p >
138
136
< 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 >
148
146
}
149
147
}</ pre > </ div >
150
148
< 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 >
152
150
< p > Adds Markdown supports to < a href ="/docs/sharp-pages "> #Script Pages</ a > by default:</ p >
153
151
< 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 >
154
152
{
@@ -163,18 +161,16 @@ <h3>
163
161
164
162
< 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 > ());
165
163
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
-
168
164
< 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 > ());
169
165
}
170
166
}</ pre > </ div >
171
167
< p > Added using:</ p >
172
168
< 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 >
173
169
< 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 >
175
171
< p > List of available plugins that's not pre-registered anywhere include:</ p >
176
172
< 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 >
178
174
< 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 >
179
175
{
180
176
< 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>
186
182
}</ pre > </ div >
187
183
< p > Although generally not required as < a href ="/docs/default-scripts#evalTemplate "> evalTemplate script method</ a > registered by default has equivalent functionality.</ p >
188
184
< 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 >
190
186
< 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 >
191
187
< div class ="highlight highlight-source-cs "> < pre > < span class ="pl-k "> new</ span > < span class ="pl-smi "> ScriptContext</ span > {
192
188
< span class ="pl-smi "> Plugins</ span > < span class ="pl-k "> =</ span > { < span class ="pl-k "> new</ span > < span class ="pl-en "> GitHubPlugin</ span > () },
193
189
}.< span class ="pl-en "> Init</ span > ();</ pre > </ div >
194
190
< 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 >
195
191
< p > Checkout < a href ="https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.Common/Script/Methods/GitHubScripts.cs "> GitHubScripts.cs</ a >
196
192
for 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 >
198
194
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 >
204
200
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 >
206
202
< 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 >
208
204
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 >
210
206
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 >
215
211
< p > Which renders the following GitHub Flavored Markdown output:</ p >
216
212
< table >
217
213
< thead >
296
292
</ tbody >
297
293
</ table >
298
294
< 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 >
300
296
< table >
301
297
< thead >
302
298
< tr >
0 commit comments