@@ -17,6 +17,9 @@ public interface IScriptFilter : IFilter
1717 [ JsonProperty ( PropertyName = "script_id" ) ]
1818 string ScriptId { get ; set ; }
1919
20+ [ JsonProperty ( "script_file" ) ]
21+ string ScriptFile { get ; set ; }
22+
2023 [ JsonProperty ( PropertyName = "params" ) ]
2124 [ JsonConverter ( typeof ( DictionaryKeysAreNotPropertyNamesJsonConverter ) ) ]
2225 Dictionary < string , object > Params { get ; set ; }
@@ -34,6 +37,7 @@ protected internal override void WrapInContainer(IFilterContainer container)
3437
3538 public string Script { get ; set ; }
3639 public string ScriptId { get ; set ; }
40+ public string ScriptFile { get ; set ; }
3741 public Dictionary < string , object > Params { get ; set ; }
3842 public string Lang { get ; set ; }
3943 }
@@ -44,10 +48,14 @@ protected internal override void WrapInContainer(IFilterContainer container)
4448 /// </summary>
4549 public class ScriptFilterDescriptor : FilterBase , IScriptFilter
4650 {
51+ private IScriptFilter Self { get { return this ; } }
52+
4753 string IScriptFilter . Script { get ; set ; }
4854
4955 string IScriptFilter . ScriptId { get ; set ; }
5056
57+ string IScriptFilter . ScriptFile { get ; set ; }
58+
5159 string IScriptFilter . Lang { get ; set ; }
5260
5361 Dictionary < string , object > IScriptFilter . Params { get ; set ; }
@@ -56,33 +64,39 @@ bool IFilter.IsConditionless
5664 {
5765 get
5866 {
59- return ( ( IScriptFilter ) this ) . Script . IsNullOrEmpty ( ) ;
67+ return this . Self . Script . IsNullOrEmpty ( ) ;
6068 }
6169 }
6270
6371 /// <summary>
64- /// Filter script.
72+ /// Inline script to execute
6573 /// </summary>
66- /// <param name="script">script</param>
67- /// <returns>this</returns>
6874 public ScriptFilterDescriptor Script ( string script )
6975 {
70- ( ( IScriptFilter ) this ) . Script = script ;
76+ this . Self . Script = script ;
7177 return this ;
7278 }
7379
7480 /// <summary>
75- /// Indexed script can be referenced by script id
76- /// </summary>
77- /// <param name="scriptId">Indexed script id</param>
78- /// <returns>this</returns>
81+ /// Id of an indexed script to execute
82+ /// </summary
7983 public ScriptFilterDescriptor ScriptId ( string scriptId )
8084 {
8185 scriptId . ThrowIfNull ( "scriptId" ) ;
82- ( ( IScriptFilter ) this ) . ScriptId = scriptId ;
86+ this . Self . ScriptId = scriptId ;
8387 return this ;
8488 }
8589
90+ /// <summary>
91+ /// File name of a script to execute
92+ /// </summary>
93+ public ScriptFilterDescriptor ScriptFile ( string scriptFile )
94+ {
95+ scriptFile . ThrowIfNull ( "scriptFile" ) ;
96+ this . Self . ScriptFile = scriptFile ;
97+ return this ;
98+ }
99+
86100 /// <summary>
87101 /// Scripts are compiled and cached for faster execution.
88102 /// If the same script can be used, just with different parameters provider,
@@ -96,7 +110,7 @@ public ScriptFilterDescriptor ScriptId(string scriptId)
96110 public ScriptFilterDescriptor Params ( Func < FluentDictionary < string , object > , FluentDictionary < string , object > > paramDictionary )
97111 {
98112 paramDictionary . ThrowIfNull ( "paramDictionary" ) ;
99- ( ( IScriptFilter ) this ) . Params = paramDictionary ( new FluentDictionary < string , object > ( ) ) ;
113+ this . Self . Params = paramDictionary ( new FluentDictionary < string , object > ( ) ) ;
100114 return this ;
101115 }
102116
@@ -108,7 +122,7 @@ public ScriptFilterDescriptor Params(Func<FluentDictionary<string, object>, Flue
108122 public ScriptFilterDescriptor Lang ( string lang )
109123 {
110124 lang . ThrowIfNull ( "lang" ) ;
111- ( ( IScriptFilter ) this ) . Lang = lang ;
125+ this . Self . Lang = lang ;
112126 return this ;
113127 }
114128
@@ -120,7 +134,7 @@ public ScriptFilterDescriptor Lang(string lang)
120134 public ScriptFilterDescriptor Lang ( ScriptLang lang )
121135 {
122136 lang . ThrowIfNull ( "lang" ) ;
123- ( ( IScriptFilter ) this ) . Lang = lang . GetStringValue ( ) ;
137+ this . Self . Lang = lang . GetStringValue ( ) ;
124138 return this ;
125139 }
126140 }
0 commit comments