Table of Contents

Class CsScriptSemantic

Namespace
Hi.NcParsers.Semantics
Assembly
HiMech.dll

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

string

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

Func<Dictionary<FileLineIndex, string>>

ScriptKey

protected abstract string ScriptKey { get; }

Property Value

string

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

baseDirectory string

The base directory for resolving relative paths

relFile string

The relative file path for the XML source

exhibitionOnly bool

if 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

syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
dependencyList List<INcDependency>
ncDiagnosticProgress NcDiagnosticProgress

Returns

IEnumerable<IAct>