class interface KL_EXECUTION_ENVIRONMENT

feature(s) from KL_IMPORTED_STRING_ROUTINES
   --  Access

   STRING_: KL_STRING_ROUTINES
      --  Routines that ought to be in class STRING

      ensure
         string_routines_not_void: Result /= Void

feature(s) from KL_EXECUTION_ENVIRONMENT
   --  Access

   variable_value (a_variable: STRING): STRING
      --  Value of environment variable a_variable;
      --  Void if a_variable has not been set

      require
         a_variable_not_void: a_variable /= Void

feature(s) from KL_EXECUTION_ENVIRONMENT
   --  Setting

   set_variable_value (a_variable, a_value: STRING)
      --  Set environment variable a_variable to a_value.
      --  (This setting may fail on certain platforms.)

      require
         a_variable_not_void: a_variable /= Void;
         a_variable_not_empty: not a_variable.empty;
         a_value_not_void: a_value /= Void

feature(s) from KL_EXECUTION_ENVIRONMENT
   --  Conversion

   interpreted_string (a_string: STRING): STRING
      --  String where the environment variables have been
      --  replaced by their values. The environment variables
      --  are considered to be either ${[^}]*} or $[a-zA-Z0-9_]+
      --  and the dollar sign is escaped using $$. Non defined
      --  environment variables are replaced by empty strings.
      --  The result is not defined when a_string does not
      --  conform to the conventions above.
      --  Return a new string each time.

      require
         a_string_not_void: a_string /= Void
      ensure
         interpreted_string_not_void: Result /= Void


end of KL_EXECUTION_ENVIRONMENT