Skip to content
Deane Barker edited this page Jun 15, 2018 · 9 revisions

Some standard definitions for both editors and developers:

A pipeline is three things:

  1. A conceptual term for the progressive refinement of data
  2. An object to be instantiated by developers when working with Denina; the Pipeline type
  3. A series of commands created by editors; a Denina script can be referred to, collectively, as a "pipeline"

For editors, a command is a single line in a Denina script, like this:

Text.Append -suffix:foo

For developers this text is parsed into a PipelineCommand object, which is passed to filters.

A filter is the underlying method that performs the work. So, a command maps to a filter. The command is the thing that invokes the filter. This might seem like an unnecessarily granular distinction, but a filter might be invoked by more than one command.

The input is the value on which a filter is working at any given time. A filter takes input, does something to it, and generates output. That output becomes the input to the next filter.

An argument is a labeled value passed to a command.

Sql.GetXml -connection:MyDb -sql:"SELECT * FROM Contacts"

In that command, there are two arguments: connection and sql. Some commands take repeated arguments:

A category is a grouping of commands/filters. For example, the Text category has about a half-dozen available commands/filters:

Text.Append -suffix:foo
Text.Prepend -prefix:bar
Text.Replace -old:foo -new:bar

Categories are designed to prevent conflicts between commands. For example, the Xml, Html, and Json categories all have commands called Extract. Using the category name is the only way to accurately specify the one you want to invoke.

A fully-qualified name is the category name, a dot, and the command name.

Text.Append -suffix:foo

In that example, the category name is Text, the command name is Append, and the fully-qualified name is Text.Append.

A variable is a "holding bin" for the output of a filter. Normally, a filter outputs data to the next filter. However, this data can be "redirected" to a variable using =>, where it can be held until needed. For example:

Text.ReplaceAll -text:"James Bond" => $introduction

The output of that filter would be held in a location named "$introduction." It can be retrieved from this location later to be used as an argument value.

Text.Append -suffix:$introduction

A comment is simply a line of a Denina script that begins with a pound sign: #. This line will be ignored by the Denina execution, and is available simply for editors to explain their scripts if necessary:

# Read from the HTML file
File.Read -file:my-stuff.html

Clone this wiki locally