pub struct ComponentSpecification {
pub id: String,
pub name: String,
pub declaration_type: DeclarationType,
pub arguments: ArgumentList,
pub applicators: Vec<ApplicatorSpecification>,
pub children: Vec<ComponentSpecification>,
pub metadata: MetaData,
}Expand description
The main component specification representing a parsed component
Fields§
§id: String§name: String§declaration_type: DeclarationType§arguments: ArgumentList§applicators: Vec<ApplicatorSpecification>§children: Vec<ComponentSpecification>§metadata: MetaDataImplementations§
Source§impl ComponentSpecification
impl ComponentSpecification
pub fn new( id: String, name: String, arguments: ArgumentList, applicators: Vec<ApplicatorSpecification>, children: Vec<ComponentSpecification>, metadata: MetaData, ) -> Self
pub fn with_declaration_type(self, declaration_type: DeclarationType) -> Self
Sourcepub fn flatten(&self) -> Vec<ComponentSpecification>
pub fn flatten(&self) -> Vec<ComponentSpecification>
Flatten the component tree into a list
Examples found in repository?
129fn example_4() {
130 println!("Example 4: Navigating the component tree\n");
131
132 let input = r#"
133 Column {
134 Text("Header")
135 .fontSize(24)
136
137 Row {
138 Button("Left")
139 Button("Right")
140 }
141
142 Text("Footer")
143 }
144 "#;
145 println!("Input: {}\n", input);
146
147 match parse_component(input) {
148 Ok(component) => {
149 println!("✓ Root component: {}", component.name);
150 println!("✓ Children count: {}", component.children.len());
151
152 // Walk the tree
153 println!("\nComponent tree:");
154 print_tree(&component, 0);
155
156 // Flatten to list
157 let all_components = component.flatten();
158 println!("\nFlattened tree ({} total components):", all_components.len());
159 for comp in &all_components {
160 println!(
161 " - {} (applicators: {})",
162 comp.name,
163 comp.applicators.len()
164 );
165 }
166 }
167 Err(errors) => {
168 print_parse_errors("input.hypen", input, &errors);
169 }
170 }
171}Sourcepub fn to_applicator(&self) -> ApplicatorSpecification
pub fn to_applicator(&self) -> ApplicatorSpecification
Convert a component to an applicator (when it starts with ‘.’)
Trait Implementations§
Source§impl Clone for ComponentSpecification
impl Clone for ComponentSpecification
Source§fn clone(&self) -> ComponentSpecification
fn clone(&self) -> ComponentSpecification
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ComponentSpecification
impl Debug for ComponentSpecification
Source§impl<'de> Deserialize<'de> for ComponentSpecification
impl<'de> Deserialize<'de> for ComponentSpecification
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for ComponentSpecification
impl PartialEq for ComponentSpecification
Source§impl Serialize for ComponentSpecification
impl Serialize for ComponentSpecification
impl StructuralPartialEq for ComponentSpecification
Auto Trait Implementations§
impl Freeze for ComponentSpecification
impl RefUnwindSafe for ComponentSpecification
impl Send for ComponentSpecification
impl Sync for ComponentSpecification
impl Unpin for ComponentSpecification
impl UnwindSafe for ComponentSpecification
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);