Skip to main content

Expression

Enum Expression 

Source
pub enum Expression {
    Named {
        name: Name,
        sub: Tree,
    },
    Format {
        style: CompleteStyle,
        sub: Tree,
    },
    Group {
        d: Delimiter,
        sub: Tree,
    },
    Literal(String),
    Separator(Separator),
}
Expand description

The types of possible expressions which form an expression tree

The gist format has three types of valid expressions:

  1. Named expressions
  2. Group Expressions
  3. Literal Expressions

The interpreter transforms these expressions to their final output after they have been parsed from the input string.

Named expressions take one of two forms: the plain form with no arguments, or with arguments

  • name plain form
  • name(exp1exp2...exp3) any number of expressions

Group expressions are set of expressions, which are not comma seperated. There are a few base group types:

  • \() parentheses - wrap with parens
  • \{} curly braces - wrap with curly braces
  • \[] square brackets - wrap contents with square brackets
  • \<> angle brackets - wrap contenst with angle brackets

By nesting groups of expressions, we can create an implicit tree.

A literal expression is any valid utf8 characters between single quites, except for single quotes and backslashes.

'hello''we''are''literal''expressions''I am one including whitespace'

Variants§

§

Named

An expression with a name and optional arguments which represents git repository stats

Fields

§name: Name

Name of the expression

§sub: Tree

Arguments to the expression, zero or more

§

Format

An expression which represents terminal text formatting

Fields

§sub: Tree
§

Group

A group of sub-expressions which forms an expression tree

Fields

§d: Delimiter

Group delimiter type, [], <>, {}, or ()

§sub: Tree

A tree of sub expressions

§

Literal(String)

Literal characters including whitespace, surrounded by single quotes

§

Separator(Separator)

Separator between elements in a tree

Trait Implementations§

Source§

impl Clone for Expression

Source§

fn clone(&self) -> Expression

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Expression

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Expression

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Expression

Source§

impl PartialEq for Expression

Source§

fn eq(&self, other: &Expression) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Expression

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.