* Moves off of draining between filters. Instead, the sink will pull on the stream, and will drain element-wise. This moves the whole stream to being lazy. * Adds ctrl-c support and connects it into some of the key points where we pull on the stream. If a ctrl-c is detect, we immediately halt pulling on the stream and return to the prompt. * Moves away from having a SourceMap where anchor locations are stored. Now AnchorLocation is kept directly in the Tag. * To make this possible, split tag and span. Span is largely used in the parser and is copyable. Tag is now no longer copyable.
28 lines
777 B
Rust
28 lines
777 B
Rust
use crate::parser::hir::syntax_shape::flat_shape::FlatShape;
|
|
use crate::{Span, Spanned, SpannedItem};
|
|
use derive_new::new;
|
|
use getset::Getters;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Deserialize, Serialize)]
|
|
pub enum FlagKind {
|
|
Shorthand,
|
|
Longhand,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Getters, new)]
|
|
#[get = "pub(crate)"]
|
|
pub struct Flag {
|
|
pub(crate) kind: FlagKind,
|
|
pub(crate) name: Span,
|
|
}
|
|
|
|
impl Spanned<Flag> {
|
|
pub fn color(&self) -> Spanned<FlatShape> {
|
|
match self.item.kind {
|
|
FlagKind::Longhand => FlatShape::Flag.spanned(self.span),
|
|
FlagKind::Shorthand => FlatShape::ShorthandFlag.spanned(self.span),
|
|
}
|
|
}
|
|
}
|