DiagramElements-FreezeValue/en

Aus expecco Wiki (Version 2.x)
Zur Navigation springen Zur Suche springen

Introduction[Bearbeiten]

A so called "Freeze Value" is a constant value attached to an input pin. When executed, that value will be presented to the action.

Be aware, that frozen pin values should normally not be consumed (i.e. in case the step is executed twice, the value is still present for the second incarnation). Thus, the diagram editor will automatically change the pin's behavior to non-triggering and non-consuming (i.e. make it a "parameter pin").

The following describes the data format and syntax used in pin freeze values. In general, the text entered as freeze value is parsed by the input pin's datatype.

Format for Particular Types[Bearbeiten]

Integer[Bearbeiten]

Integer constants can be entered in one of the following formats:

  • decimal (for example: "1234" , "-1234)
  • with Smalltalk radix prefix: (for example: "16rCAFE" , "16r-AA, "8r100, "2r101010000) any radix between 2 and 36 is allowed.
  • with C radix prefix: (for example: "0xCAFE" , "-0xAA, "0b101010000) (0x for hex, 0o for octal, ob for binary).
    Notice that the C-octal notation (prefix 0) is not supported (ie. "0377" will be read as 377).

Float[Bearbeiten]

  • regular floats such as: "123.0", "+123.0", "-123.0", ".123", "123.", "123.0e+2", "123.0e-2"

String[Bearbeiten]

If the pin's datatype is String, then no leading/trailing quotes are needed (actually: if there are quotes, these will be part of the string). However, quotes are needed if the type is not unambiguously a String type (i.e. Any or a Union type).

By default, NO C-style escape sequences are interpreted - i.e. the string is taken "as-is". If you want or need those, enable the "C-Escapes" toggle via the freeze-value's popup menu. You can then use the escapes:

  • "\n" for a newline character
  • "\r" for a return character
  • "\t" for a tab
  • "\b" for a backspace
  • "\xXX" for a single byte hex-character code
  • "\uXXXX" for a 32bit hex-character code
  • "\\" for the "\" character.
  • "\0" for a null character (null byte)

By default, variables of the form "$(xxx)" are expanded from either an expecco variable or the shell environment. Thus,

  • "$(HOME)/foo/bar" will expand to the name of a subdirectory "foo/bar" under your home directory (in unix). Or if you have a variable named "HOME" in the expecco environment, to whatever that value is.

This behavior can be disabled via the freeze value's popup menu.

In addition, variables of the form "%(xxx)" are expanded by the value of the input pin named "xxx". This expansion is also controlled by a flag in the popup menu.

Freeze value expansion can be suppressed either in the basket itself (the freeze-menu), or globally via a flag in the project, to enforce backward compatibility of a whole library (in the rare situation, that an older library depends on such freeze values being unchanged).

Be reminded, that these variable expansions are only done for freeze values. If the value comes from another pin, it is passed unchanged.

Bytes (ByteArray)[Bearbeiten]

Byte data can be entered in multiple forms:

  • Smalltalk format: "#[ 1 2 3 ]" (spaces between byte values)
  • JSON format: "[ 1, 2, 3 ]" (commas between byte values)
  • C format: "{ 1, 2, 3 }" (braces and commas between byte values)
  • hex format: "xxXXxxXX" (two hex characters per byte; no spaces in-between)
  • hex format: "xx XX xx XX" (two hex characters per byte; with spaces in-between)

Any[Bearbeiten]

To distinguish between strings and non-strings, String-constants for an Any-typed pin must be quoted. For example:

  • "1234" - will be an integer value
  • "1234.56" - will be an float value
  • "'1234'" - will be a string value

Variable Expansion[Bearbeiten]

Inside a freeze value, variable values can be embedded using the "$(...)" notation. In addition to the visible environment variables, the following builtin names are allowed: If the script must run somewhere else, you can provide the path at the block's "execDir" input pin (or for shell scripts, you can also specify it in the editor, which is effectively defining the directory as a freeze value). The execution directory pathname (provided at the pin) may contain placeholders in the form "$(xxx)", where "xxx" is either a shell environment variable, or one of the special builtin placeholder variables:

  • AttachmentsDirectory - the directory, where all attachments of the suite are located.
  • Attachments - the same, but a little shorter
  • ExecutionDirectory - a temporary directory, which vanishes after the execution
  • ExpeccoInstallationDirectory - the directory, where expecco was installed
  • ExpeccoPluginDirectory - the directory, where expecco's plugins are installed
  • ProjectDirectory - the temporary project directory
  • HomeDirectory - the user's home directory
  • TmpDirectory - a temporary directory (subfolder of the system's tmp directory)
  • CurrentDirectory - the "current" directory (see below)
  • DocumentsDirectory - the "documents" directory
  • DesktopDirectory - the "desktop" directory
  • LoginName - your login name (username under Unix/Linux/OSX)
  • UserName - your full name (if known, otherwise the login name)



Copyright © 2014-2024 eXept Software AG