Package org.eclipse.core.variables

Provides support for defining and contributing variables for the purpose of string substitution.

Package Specification

This package provides classes and interfaces to support the definition and contribution of variables for the purpose of string substitution. The plug-in supports the recursive replacement of variables referenced by name in arbitrary strings with the value of the variable. Two types of variables are provided - value variables (IValueVariable) and dynamic variables (IDynamicVariable). A value variable has a simple setter and getter for its current value. A dynamic variable has an associated resolver that provides a variable's value each time it is referenced (replaced) in a string substitution. A dynamic variable may also provide an argument in its reference that can be used by its resolver to determine its substitution value.

A variable manager (IStringVariableManager) is provided to manage the set of defined variables. Value variables may be created via API on the variable manager, or contributed via the valueVariables extension point. Dynamic variables must be contributed via the dynamicVariables extension point. The variable manager also provides change notification for value variables. The variable manager also provides an API for performing string substitution, which accepts a string, and returns a string with all variable references replaced by associated variable values.

Variables are referenced in strings by enclosing them in braces, preceded with a dollar sign. For example, consider a variable defined with the name foo, and referenced in the following string: "abc${foo}ghi". If the value of foo is "def", the result of a string substitution would be "abcdefghi". In the case of a dynamic variable, an (optional) argument is supplied by appending a colon and argument value after the variable name. For example "${foo:bar}". In this case, the resolver associated with foo would be provided with the referenced argument (bar) when asked to resolve a value for the variable foo.