Trait conch_runtime::eval::WordEval [] [src]

pub trait WordEval<E: ?Sized>: Sized {
    type EvalResult: StringWrapper;
    type Error;
    type EvalFuture: EnvFuture<E, Item = Fields<Self::EvalResult>, Error = Self::Error>;
    fn eval_with_config(self, env: &E, cfg: WordEvalConfig) -> Self::EvalFuture;

    fn eval(self, env: &E) -> Self::EvalFuture { ... }
fn eval_as_assignment(self, env: &E) -> Assignment<Self::EvalFuture>
    where
        E: VariableEnvironment,
        E::VarName: Borrow<String>,
        E::Var: Borrow<String>
, { ... }
fn eval_as_pattern(self, env: &E) -> Pattern<Self::EvalFuture> { ... } }

A trait for evaluating shell words with various rules for expansion.

Associated Types

The underlying representation of the evaulation type (e.g. String, Rc<String>).

An error that can arise during evaluation.

A future which will carry out the evaluation.

Required Methods

Evaluate and take a provided config into account.

Generally $* should always be joined by the first char of $IFS or have all fields concatenated if $IFS is null or $* is in double quotes.

If cfg.split_fields_further is false then all empty fields will be kept.

The caller is responsible for doing path expansions.

Provided Methods

Evaluates a word in a given environment and performs all expansions.

Tilde, parameter, command substitution, and arithmetic expansions are performed first. All resulting fields are then further split based on the contents of the IFS variable (no splitting is performed if IFS is set to be the empty or null string). Finally, quotes and escaping backslashes are removed from the original word (unless they themselves have been quoted).

Evaluates a word in a given environment without doing field and pathname expansions.

Tilde, parameter, command substitution, arithmetic expansions, and quote removals will be performed, however. In addition, if multiple fields arise as a result of evaluating $@ or $*, the fields will be joined with a single space.

Evaluates a word just like eval, but converts the result into a glob::Pattern.

Implementations on Foreign Types

impl<W, E: ?Sized> WordEval<E> for ComplexWord<W> where
    W: WordEval<E>, 
[src]

[src]

[src]

[src]

[src]

impl<'a, W, E: ?Sized> WordEval<E> for &'a ComplexWord<W> where
    &'a W: WordEval<E>, 
[src]

[src]

[src]

[src]

[src]

impl<T, P, W, C, A, E> WordEval<E> for ParameterSubstitution<P, W, C, A> where
    T: StringWrapper,
    P: ParamEval<E, EvalResult = T> + Display,
    W: WordEval<E, EvalResult = T>,
    W::Error: From<ExpansionError> + From<C::Error>,
    C: Spawn<E>,
    C::Error: IsFatalError + From<IoError>,
    A: ArithEval<E>,
    E: AsyncIoEnvironment + FileDescEnvironment + LastStatusEnvironment + ReportErrorEnvironment + SubEnvironment + VariableEnvironment<VarName = T, Var = T>,
    E::FileHandle: FileDescWrapper,
    E::Read: AsyncRead
[src]

[src]

Evaluates a parameter subsitution in the context of some environment, optionally splitting fields.

Note: even if the caller specifies no splitting should be done, multiple fields can occur if $@ or $* is evaluated.

[src]

[src]

[src]

impl<'a, T, P, W, C, A, E> WordEval<E> for &'a ParameterSubstitution<P, W, C, A> where
    T: StringWrapper,
    P: ParamEval<E, EvalResult = T> + Display,
    &'a W: WordEval<E, EvalResult = T>,
    <&'a W as WordEval<E>>::Error: From<ExpansionError> + From<<&'a C as Spawn<E>>::Error>,
    &'a C: Spawn<E>,
    <&'a C as Spawn<E>>::Error: IsFatalError + From<IoError>,
    A: ArithEval<E>,
    E: AsyncIoEnvironment + FileDescEnvironment + LastStatusEnvironment + ReportErrorEnvironment + SubEnvironment + VariableEnvironment<VarName = T, Var = T>,
    E::FileHandle: FileDescWrapper,
    E::Read: AsyncRead
[src]

[src]

Evaluates a parameter subsitution in the context of some environment, optionally splitting fields.

Note: even if the caller specifies no splitting should be done, multiple fields can occur if $@ or $* is evaluated.

[src]

[src]

[src]

impl<T, P, S, E: ?Sized> WordEval<E> for SimpleWord<T, P, S> where
    T: StringWrapper,
    P: ParamEval<E, EvalResult = T>,
    S: WordEval<E, EvalResult = T>,
    E: VariableEnvironment<Var = T>,
    E::VarName: Borrow<String>, 
[src]

[src]

[src]

[src]

[src]

impl<'a, T, P, S, E: ?Sized> WordEval<E> for &'a SimpleWord<T, P, S> where
    T: StringWrapper,
    P: ParamEval<E, EvalResult = T>,
    &'a S: WordEval<E, EvalResult = T>,
    E: VariableEnvironment<Var = T>,
    E::VarName: Borrow<String>, 
[src]

[src]

[src]

[src]

[src]

impl<T, W, E: ?Sized> WordEval<E> for Word<T, W> where
    T: StringWrapper,
    W: WordEval<E, EvalResult = T>,
    E: VariableEnvironment<Var = T>,
    E::VarName: Borrow<String>, 
[src]

[src]

[src]

[src]

[src]

impl<'a, T, W, E: ?Sized> WordEval<E> for &'a Word<T, W> where
    T: StringWrapper,
    &'a W: WordEval<E, EvalResult = T>,
    E: VariableEnvironment<Var = T>,
    E::VarName: Borrow<String>, 
[src]

[src]

[src]

[src]

[src]

impl<E: ?Sized, W: WordEval<E>> WordEval<E> for Box<W>
[src]

[src]

[src]

[src]

[src]

impl<'a, E: ?Sized, W: 'a> WordEval<E> for &'a Box<W> where
    &'a W: WordEval<E>, 
[src]

[src]

[src]

[src]

[src]

impl<T, E: ?Sized> WordEval<E> for TopLevelWord<T> where
    T: 'static + StringWrapper + Display,
    E: 'static + AsyncIoEnvironment + ArgumentsEnvironment<Arg = T> + ExecutableEnvironment + ExportedVariableEnvironment<VarName = T, Var = T> + FileDescEnvironment + FunctionEnvironment + IsInteractiveEnvironment + LastStatusEnvironment + ReportErrorEnvironment + SetArgumentsEnvironment + SubEnvironment + UnsetVariableEnvironment + WorkingDirectoryEnvironment,
    E::Args: From<Vec<E::Arg>>,
    E::FileHandle: FileDescWrapper,
    E::FnName: From<T>,
    E::Fn: Clone + From<Rc<SpawnBoxed<E, Error = RuntimeError> + 'static>> + Spawn<E, Error = RuntimeError>, 
[src]

[src]

[src]

[src]

[src]

impl<'a, T, E: ?Sized> WordEval<E> for &'a TopLevelWord<T> where
    T: 'static + StringWrapper + Display,
    E: 'static + AsyncIoEnvironment + ArgumentsEnvironment<Arg = T> + ExecutableEnvironment + ExportedVariableEnvironment<VarName = T, Var = T> + FileDescEnvironment + FunctionEnvironment + IsInteractiveEnvironment + LastStatusEnvironment + ReportErrorEnvironment + SetArgumentsEnvironment + SubEnvironment + UnsetVariableEnvironment + WorkingDirectoryEnvironment,
    E::Args: From<Vec<E::Arg>>,
    E::FileHandle: FileDescWrapper,
    E::FnName: From<T>,
    E::Fn: Clone + From<Rc<SpawnBoxed<E, Error = RuntimeError> + 'static>> + Spawn<E, Error = RuntimeError>, 
[src]

[src]

[src]

[src]

[src]

impl<T, E: ?Sized> WordEval<E> for AtomicTopLevelWord<T> where
    T: 'static + StringWrapper + Display + Send + Sync,
    E: 'static + AsyncIoEnvironment + ArgumentsEnvironment<Arg = T> + ExecutableEnvironment + ExportedVariableEnvironment<VarName = T, Var = T> + FileDescEnvironment + FunctionEnvironment + IsInteractiveEnvironment + LastStatusEnvironment + ReportErrorEnvironment + SetArgumentsEnvironment + SubEnvironment + UnsetVariableEnvironment + WorkingDirectoryEnvironment,
    E::Args: From<Vec<E::Arg>>,
    E::FileHandle: FileDescWrapper,
    E::FnName: From<T>,
    E::Fn: Clone + From<Arc<SpawnBoxed<E, Error = RuntimeError> + Send + Sync + 'static>> + Spawn<E, Error = RuntimeError>, 
[src]

[src]

[src]

[src]

[src]

impl<'a, T, E: ?Sized> WordEval<E> for &'a AtomicTopLevelWord<T> where
    T: 'static + StringWrapper + Display + Send + Sync,
    E: 'static + AsyncIoEnvironment + ArgumentsEnvironment<Arg = T> + ExecutableEnvironment + ExportedVariableEnvironment<VarName = T, Var = T> + FileDescEnvironment + FunctionEnvironment + IsInteractiveEnvironment + LastStatusEnvironment + ReportErrorEnvironment + SetArgumentsEnvironment + SubEnvironment + UnsetVariableEnvironment + WorkingDirectoryEnvironment,
    E::Args: From<Vec<E::Arg>>,
    E::FileHandle: FileDescWrapper,
    E::FnName: From<T>,
    E::Fn: Clone + From<Arc<SpawnBoxed<E, Error = RuntimeError> + Send + Sync + 'static>> + Spawn<E, Error = RuntimeError>, 
[src]

[src]

[src]

[src]

[src]

Implementors