Class CsScriptSemantic
Base class for resolving CsScript JSON entries into ActLineCsScript. Subclasses specify which script key to read (BeginScript or EndScript).
Also supports an external script dictionary via ExternalScripts. When set, each NC block's FileLineIndex is looked up in the dictionary and the matched script is emitted as an additional ActLineCsScript. This allows runtime injection of per-line scripts without modifying the NC file.
public abstract class CsScriptSemantic : INcSemantic, IMakeXmlSource
- Inheritance
-
CsScriptSemantic
- Implements
- Derived
- Inherited Members
- Extension Methods
Properties
DisplayName
The process name shown on UI.
public abstract string DisplayName { get; }
Property Value
ExternalScripts
Optional external script source keyed by FileLineIndex. Set at session start to inject per-line scripts without editing NC files. The Func is evaluated each resolve call so the dictionary can be modified at runtime.
public Func<Dictionary<FileLineIndex, string>> ExternalScripts { get; set; }
Property Value
ScriptKey
protected abstract string ScriptKey { get; }
Property Value
Methods
MakeXmlSource(string, string, bool)
Creates an XML representation of the object. This method may also generate additional resources such as related files.
public abstract XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
Parameters
baseDirectorystringThe base directory for resolving relative paths
relFilestringThe relative file path for the XML source
exhibitionOnlyboolif true, the extended file creation is suppressed.
Returns
- XElement
An XML element representing the object's state
Remarks
For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The baseDirectory is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.
Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)
Resolve the syntaxPieceNode into a sequence of IAct.
May also mutate SyntaxPiece.JsonObject for downstream semantics.
public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
Parameters
syntaxPieceNodeLazyLinkedListNode<SyntaxPiece>dependencyListList<INcDependency>ncDiagnosticProgressNcDiagnosticProgress