-
Notifications
You must be signed in to change notification settings - Fork 0
Context
A SsgContext is provided to Ssg methods (SsgStep.execute(content) and ReplaceCommand.execute(context)) to carry information about :
- the current
locale - the current
inputFilethat has been read - the current
outputFilethat is about to be written - variables
- a logger to customize logging.
- an optional
nameto customize logging.
It also has a clone() method.
A SsgContext holds context variables that can be updated or queried by any code (typically Steps or ContentStep's Replacements).
A context is with a locale and a set of variables, which can be initially empty:
const context = new SsgContextImpl("fr", {})or non-empty, even with a specified type if needed:
const myVars: MyVars = {myVar: "myValue"}
const context = new SsgContextImpl<MyVars>("fr", myVars)Variables can be:
- read using
context.getVar(myVar) - set using
context.setVar(myVar, myValue)in your steps/replacements code, or among tags, SSI style (for instance<!--#set var="myVar" value="myValue" -->thanks to the predefinedSsiSetVarReplaceCommand) - inserted into files using:
-
<!--#echo var="varName" -->among HTML tags (thanks to the predefiendSsiEchoVarReplaceCommand) -
${varName}in strings (for instance<a href="mailto:${varName}">) thanks to the predefiendStringEchoVarReplaceCommand
-
Attributes of the context.inputFile (including as a HtmlSsgFile) are implicitly available as variables,
so that you can include <!--#echo var="title" --> in your files where you want the HTML title to be inserted for instance.
A Context is also a Logger, with log()/warn()/error()/debug() methods.
A DefaultLogger will be used unless a custom logger is provided at construction.
You can optionally set a context name, that will be reflecting in logging. For instance:
const context = new SsgContextImpl<MyVars>("fr", {}, "My Ssg")The default context name is "Ssg".
You can design your own context by implementing the SsgContext interface
(typically to provide custom info to custom steps). A convenient way to do so is to extend the default SsgContextImpl implementation.