Trait sqruff_lib::core::parser::segments::base::Segment

source ·
pub trait Segment: Any + DynEq + DynClone + Debug + CloneSegment + Send + Sync {
Show 46 methods // Provided methods fn new(&self, _segments: Vec<ErasedSegment>) -> ErasedSegment { ... } fn reference(&self) -> Node<ObjectReferenceSegment> { ... } fn type_name(&self) -> &'static str { ... } fn get_start_loc(&self) -> (usize, usize) { ... } fn get_end_loc(&self) -> (usize, usize) { ... } fn to_serialised( &self, code_only: bool, show_raw: bool, include_meta: bool ) -> TupleSerialisedSegment { ... } fn select_children( &self, start_seg: Option<&ErasedSegment>, stop_seg: Option<&ErasedSegment>, select_if: Option<fn(_: &ErasedSegment) -> bool>, loop_while: Option<fn(_: &ErasedSegment) -> bool> ) -> Vec<ErasedSegment> { ... } fn is_templated(&self) -> bool { ... } fn iter_segments( &self, expanding: Option<&[&str]>, pass_through: bool ) -> Vec<ErasedSegment> { ... } fn recursive_crawl_all(&self, reverse: bool) -> Vec<ErasedSegment> { ... } fn recursive_crawl( &self, seg_types: &[&str], recurse_into: bool, no_recursive_seg_type: Option<&str>, allow_self: bool ) -> Vec<ErasedSegment> { ... } fn code_indices(&self) -> Vec<usize> { ... } fn get_parent(&self) -> Option<ErasedSegment> { ... } fn child(&self, seg_types: &[&str]) -> Option<ErasedSegment> { ... } fn children(&self, seg_types: &[&str]) -> Vec<ErasedSegment> { ... } fn iter_patches(&self, templated_file: &TemplatedFile) -> Vec<FixPatch> { ... } fn descendant_type_set(&self) -> AHashSet<&'static str> { ... } fn match_grammar(&self) -> Option<Arc<dyn Matchable>> { ... } fn raw(&self) -> Cow<'_, str> { ... } fn get_raw_upper(&self) -> Option<String> { ... } fn first_non_whitespace_segment_raw_upper(&self) -> Option<String> { ... } fn get_type(&self) -> &'static str { ... } fn is_type(&self, type_: &str) -> bool { ... } fn is_code(&self) -> bool { ... } fn is_comment(&self) -> bool { ... } fn is_whitespace(&self) -> bool { ... } fn is_meta(&self) -> bool { ... } fn get_default_raw(&self) -> Option<&'static str> { ... } fn get_position_marker(&self) -> Option<PositionMarker> { ... } fn set_position_marker(&mut self, position_marker: Option<PositionMarker>) { ... } fn segments(&self) -> &[ErasedSegment] { ... } fn gather_segments(&self) -> Vec<ErasedSegment> { ... } fn get_matched_length(&self) -> usize { ... } fn get_can_start_end_non_code(&self) -> bool { ... } fn get_allow_empty(&self) -> bool { ... } fn get_file_path(&self) -> Option<String> { ... } fn get_raw_segments(&self) -> Vec<ErasedSegment> { ... } fn iter_source_fix_patches( &self, templated_file: &TemplatedFile ) -> Vec<FixPatch> { ... } fn get_uuid(&self) -> Option<Uuid> { ... } fn get_source_fixes(&self) -> Vec<SourceFix> { ... } fn edit( &self, raw: Option<String>, source_fixes: Option<Vec<SourceFix>> ) -> ErasedSegment { ... } fn compute_anchor_edit_info( &self, fixes: &Vec<LintFix> ) -> AHashMap<Uuid, AnchorEditInfo> { ... } fn instance_types(&self) -> AHashSet<&'static str> { ... } fn combined_types(&self) -> AHashSet<&'static str> { ... } fn class_types(&self) -> AHashSet<&'static str> { ... } fn apply_fixes( &self, dialect: &Dialect, fixes: AHashMap<Uuid, AnchorEditInfo> ) -> (ErasedSegment, Vec<ErasedSegment>, Vec<ErasedSegment>, bool) { ... }
}

Provided Methods§

source

fn new(&self, _segments: Vec<ErasedSegment>) -> ErasedSegment

source

fn reference(&self) -> Node<ObjectReferenceSegment>

source

fn type_name(&self) -> &'static str

source

fn get_start_loc(&self) -> (usize, usize)

source

fn get_end_loc(&self) -> (usize, usize)

source

fn to_serialised( &self, code_only: bool, show_raw: bool, include_meta: bool ) -> TupleSerialisedSegment

source

fn select_children( &self, start_seg: Option<&ErasedSegment>, stop_seg: Option<&ErasedSegment>, select_if: Option<fn(_: &ErasedSegment) -> bool>, loop_while: Option<fn(_: &ErasedSegment) -> bool> ) -> Vec<ErasedSegment>

source

fn is_templated(&self) -> bool

source

fn iter_segments( &self, expanding: Option<&[&str]>, pass_through: bool ) -> Vec<ErasedSegment>

source

fn recursive_crawl_all(&self, reverse: bool) -> Vec<ErasedSegment>

source

fn recursive_crawl( &self, seg_types: &[&str], recurse_into: bool, no_recursive_seg_type: Option<&str>, allow_self: bool ) -> Vec<ErasedSegment>

source

fn code_indices(&self) -> Vec<usize>

source

fn get_parent(&self) -> Option<ErasedSegment>

source

fn child(&self, seg_types: &[&str]) -> Option<ErasedSegment>

source

fn children(&self, seg_types: &[&str]) -> Vec<ErasedSegment>

source

fn iter_patches(&self, templated_file: &TemplatedFile) -> Vec<FixPatch>

source

fn descendant_type_set(&self) -> AHashSet<&'static str>

source

fn match_grammar(&self) -> Option<Arc<dyn Matchable>>

source

fn raw(&self) -> Cow<'_, str>

source

fn get_raw_upper(&self) -> Option<String>

source

fn first_non_whitespace_segment_raw_upper(&self) -> Option<String>

source

fn get_type(&self) -> &'static str

source

fn is_type(&self, type_: &str) -> bool

source

fn is_code(&self) -> bool

source

fn is_comment(&self) -> bool

source

fn is_whitespace(&self) -> bool

source

fn is_meta(&self) -> bool

source

fn get_default_raw(&self) -> Option<&'static str>

source

fn get_position_marker(&self) -> Option<PositionMarker>

source

fn set_position_marker(&mut self, position_marker: Option<PositionMarker>)

source

fn segments(&self) -> &[ErasedSegment]

source

fn gather_segments(&self) -> Vec<ErasedSegment>

source

fn get_matched_length(&self) -> usize

Return the length of the segment in characters.

source

fn get_can_start_end_non_code(&self) -> bool

Are we able to have non-code at the start or end?

source

fn get_allow_empty(&self) -> bool

Can we allow it to be empty? Usually used in combination with the can_start_end_non_code.

source

fn get_file_path(&self) -> Option<String>

get_file_path returns the file path of the segment if it is a file segment.

source

fn get_raw_segments(&self) -> Vec<ErasedSegment>

Iterate raw segments, mostly for searching.

In sqlfluff only implemented for RawSegments and up

source

fn iter_source_fix_patches( &self, templated_file: &TemplatedFile ) -> Vec<FixPatch>

Yield any source patches as fixes now.

    NOTE: This yields source fixes for the segment and any of its
    children, so it's important to call it at the right point in
    the recursion to avoid yielding duplicates.
source

fn get_uuid(&self) -> Option<Uuid>

source

fn get_source_fixes(&self) -> Vec<SourceFix>

Return any source fixes as list.

source

fn edit( &self, raw: Option<String>, source_fixes: Option<Vec<SourceFix>> ) -> ErasedSegment

Stub.

source

fn compute_anchor_edit_info( &self, fixes: &Vec<LintFix> ) -> AHashMap<Uuid, AnchorEditInfo>

Group and count fixes by anchor, return dictionary.

source

fn instance_types(&self) -> AHashSet<&'static str>

source

fn combined_types(&self) -> AHashSet<&'static str>

source

fn class_types(&self) -> AHashSet<&'static str>

source

fn apply_fixes( &self, dialect: &Dialect, fixes: AHashMap<Uuid, AnchorEditInfo> ) -> (ErasedSegment, Vec<ErasedSegment>, Vec<ErasedSegment>, bool)

Trait Implementations§

source§

impl Hash for dyn Segment

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
source§

impl PartialEq for dyn Segment

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Implementors§