| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | 
							- using InABox.Core;
 
- using InABox.Scripting;
 
- namespace InABox.Poster.Shared;
 
- public abstract class BasePosterEngine<TPostable, TPoster, TSettings> : PosterEngine<TPostable, TPoster, TSettings>
 
-     where TPostable : Entity, IPostable, IRemotable, IPersistent, new()
 
-     where TPoster : class, IPoster<TPostable, TSettings>
 
-     where TSettings : PosterSettings, new()
 
- {
 
-     private ScriptDocument? _script;
 
-     private bool _hasCheckedScript;
 
-     protected ScriptDocument? GetScriptDocument()
 
-     {
 
-         if (_hasCheckedScript)
 
-         {
 
-             return _script;
 
-         }
 
-         var settings = GetSettings();
 
-         _script = GetScriptDocument(settings);
 
-         _hasCheckedScript = true;
 
-         return _script;
 
-     }
 
-     public static ScriptDocument? GetScriptDocument(TSettings settings)
 
-     {
 
-         if (settings.ScriptEnabled && !string.IsNullOrWhiteSpace(settings.Script))
 
-         {
 
-             var document = new ScriptDocument(settings.Script);
 
-             if (!document.Compile())
 
-             {
 
-                 throw new Exception("Script failed to compile!");
 
-             }
 
-             return document;
 
-         }
 
-         else
 
-         {
 
-             return null;
 
-         }
 
-     }
 
- }
 
 
  |