use super::{SyntaxKind, SyntaxNode, SyntaxToken, YamlLanguage};
use rowan::ast::{
AstChildren, AstNode,
support::{child, children, token},
};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Properties {
syntax: SyntaxNode,
}
impl Properties {
pub fn anchor_property(&self) -> Option<AnchorProperty> {
child(&self.syntax)
}
pub fn tag_property(&self) -> Option<TagProperty> {
child(&self.syntax)
}
}
impl AstNode for Properties {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::PROPERTIES
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Properties { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TagProperty {
syntax: SyntaxNode,
}
impl TagProperty {
pub fn verbatim_tag(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::VERBATIM_TAG)
}
pub fn shorthand_tag(&self) -> Option<ShorthandTag> {
child(&self.syntax)
}
pub fn non_specific_tag(&self) -> Option<NonSpecificTag> {
child(&self.syntax)
}
}
impl AstNode for TagProperty {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::TAG_PROPERTY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(TagProperty { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TagHandle {
syntax: SyntaxNode,
}
impl TagHandle {
pub fn primary(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::TAG_HANDLE_PRIMARY)
}
pub fn secondary(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::TAG_HANDLE_SECONDARY)
}
pub fn named(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::TAG_HANDLE_NAMED)
}
}
impl AstNode for TagHandle {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::TAG_HANDLE
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(TagHandle { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ShorthandTag {
syntax: SyntaxNode,
}
impl ShorthandTag {
pub fn tag_handle(&self) -> Option<TagHandle> {
child(&self.syntax)
}
pub fn tag_char(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::TAG_CHAR)
}
}
impl AstNode for ShorthandTag {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::SHORTHAND_TAG
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(ShorthandTag { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct NonSpecificTag {
syntax: SyntaxNode,
}
impl NonSpecificTag {
pub fn exclamation_mark(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::EXCLAMATION_MARK)
}
}
impl AstNode for NonSpecificTag {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::NON_SPECIFIC_TAG
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(NonSpecificTag { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct AnchorProperty {
syntax: SyntaxNode,
}
impl AnchorProperty {
pub fn ampersand(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::AMPERSAND)
}
pub fn anchor_name(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::ANCHOR_NAME)
}
}
impl AstNode for AnchorProperty {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::ANCHOR_PROPERTY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(AnchorProperty { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Alias {
syntax: SyntaxNode,
}
impl Alias {
pub fn asterisk(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::ASTERISK)
}
pub fn anchor_name(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::ANCHOR_NAME)
}
}
impl AstNode for Alias {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::ALIAS
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Alias { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FlowSeq {
syntax: SyntaxNode,
}
impl FlowSeq {
pub fn l_bracket(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::L_BRACKET)
}
pub fn entries(&self) -> Option<FlowSeqEntries> {
child(&self.syntax)
}
pub fn r_bracket(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::R_BRACKET)
}
}
impl AstNode for FlowSeq {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW_SEQ
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(FlowSeq { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FlowSeqEntries {
syntax: SyntaxNode,
}
impl FlowSeqEntries {
pub fn entries(&self) -> AstChildren<FlowSeqEntry> {
children(&self.syntax)
}
}
impl AstNode for FlowSeqEntries {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW_SEQ_ENTRIES
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(FlowSeqEntries { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FlowSeqEntry {
syntax: SyntaxNode,
}
impl FlowSeqEntry {
pub fn flow(&self) -> Option<Flow> {
child(&self.syntax)
}
pub fn flow_pair(&self) -> Option<FlowPair> {
child(&self.syntax)
}
}
impl AstNode for FlowSeqEntry {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW_SEQ_ENTRY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(FlowSeqEntry { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FlowMap {
syntax: SyntaxNode,
}
impl FlowMap {
pub fn l_brace(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::L_BRACE)
}
pub fn entries(&self) -> Option<FlowMapEntries> {
child(&self.syntax)
}
pub fn r_brace(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::R_BRACE)
}
}
impl AstNode for FlowMap {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW_MAP
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(FlowMap { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FlowMapEntries {
syntax: SyntaxNode,
}
impl FlowMapEntries {
pub fn entries(&self) -> AstChildren<FlowMapEntry> {
children(&self.syntax)
}
}
impl AstNode for FlowMapEntries {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW_MAP_ENTRIES
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(FlowMapEntries { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FlowMapEntry {
syntax: SyntaxNode,
}
impl FlowMapEntry {
pub fn key(&self) -> Option<FlowMapKey> {
child(&self.syntax)
}
pub fn colon(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::COLON)
}
pub fn value(&self) -> Option<FlowMapValue> {
child(&self.syntax)
}
}
impl AstNode for FlowMapEntry {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW_MAP_ENTRY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(FlowMapEntry { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FlowMapKey {
syntax: SyntaxNode,
}
impl FlowMapKey {
pub fn question_mark(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::QUESTION_MARK)
}
pub fn flow(&self) -> Option<Flow> {
child(&self.syntax)
}
}
impl AstNode for FlowMapKey {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW_MAP_KEY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(FlowMapKey { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FlowMapValue {
syntax: SyntaxNode,
}
impl FlowMapValue {
pub fn flow(&self) -> Option<Flow> {
child(&self.syntax)
}
}
impl AstNode for FlowMapValue {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW_MAP_VALUE
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(FlowMapValue { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct FlowPair {
syntax: SyntaxNode,
}
impl FlowPair {
pub fn key(&self) -> Option<FlowMapKey> {
child(&self.syntax)
}
pub fn colon(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::COLON)
}
pub fn value(&self) -> Option<FlowMapValue> {
child(&self.syntax)
}
}
impl AstNode for FlowPair {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW_PAIR
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(FlowPair { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Flow {
syntax: SyntaxNode,
}
impl Flow {
pub fn properties(&self) -> Option<Properties> {
child(&self.syntax)
}
pub fn double_qouted_scalar(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::DOUBLE_QUOTED_SCALAR)
}
pub fn single_quoted_scalar(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::SINGLE_QUOTED_SCALAR)
}
pub fn plain_scalar(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::PLAIN_SCALAR)
}
pub fn flow_seq(&self) -> Option<FlowSeq> {
child(&self.syntax)
}
pub fn flow_map(&self) -> Option<FlowMap> {
child(&self.syntax)
}
pub fn alias(&self) -> Option<Alias> {
child(&self.syntax)
}
}
impl AstNode for Flow {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::FLOW
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Flow { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ChompingIndicator {
syntax: SyntaxNode,
}
impl ChompingIndicator {
pub fn plus(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::PLUS)
}
pub fn minus(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::MINUS)
}
}
impl AstNode for ChompingIndicator {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::CHOMPING_INDICATOR
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(ChompingIndicator { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BlockScalar {
syntax: SyntaxNode,
}
impl BlockScalar {
pub fn bar(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::BAR)
}
pub fn greater_than(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::GREATER_THAN)
}
pub fn indent_indicator(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::INDENT_INDICATOR)
}
pub fn chomping_indicator(&self) -> Option<ChompingIndicator> {
child(&self.syntax)
}
pub fn text(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::BLOCK_SCALAR_TEXT)
}
}
impl AstNode for BlockScalar {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::BLOCK_SCALAR
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(BlockScalar { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BlockSeq {
syntax: SyntaxNode,
}
impl BlockSeq {
pub fn entries(&self) -> AstChildren<BlockSeqEntry> {
children(&self.syntax)
}
}
impl AstNode for BlockSeq {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::BLOCK_SEQ
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(BlockSeq { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BlockSeqEntry {
syntax: SyntaxNode,
}
impl BlockSeqEntry {
pub fn minus(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::MINUS)
}
pub fn block(&self) -> Option<Block> {
child(&self.syntax)
}
pub fn flow(&self) -> Option<Flow> {
child(&self.syntax)
}
}
impl AstNode for BlockSeqEntry {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::BLOCK_SEQ_ENTRY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(BlockSeqEntry { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BlockMap {
syntax: SyntaxNode,
}
impl BlockMap {
pub fn entries(&self) -> AstChildren<BlockMapEntry> {
children(&self.syntax)
}
}
impl AstNode for BlockMap {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::BLOCK_MAP
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(BlockMap { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BlockMapEntry {
syntax: SyntaxNode,
}
impl BlockMapEntry {
pub fn key(&self) -> Option<BlockMapKey> {
child(&self.syntax)
}
pub fn colon(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::COLON)
}
pub fn value(&self) -> Option<BlockMapValue> {
child(&self.syntax)
}
}
impl AstNode for BlockMapEntry {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::BLOCK_MAP_ENTRY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(BlockMapEntry { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BlockMapKey {
syntax: SyntaxNode,
}
impl BlockMapKey {
pub fn question_mark(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::QUESTION_MARK)
}
pub fn block(&self) -> Option<Block> {
child(&self.syntax)
}
pub fn flow(&self) -> Option<Flow> {
child(&self.syntax)
}
}
impl AstNode for BlockMapKey {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::BLOCK_MAP_KEY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(BlockMapKey { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct BlockMapValue {
syntax: SyntaxNode,
}
impl BlockMapValue {
pub fn block(&self) -> Option<Block> {
child(&self.syntax)
}
pub fn flow(&self) -> Option<Flow> {
child(&self.syntax)
}
}
impl AstNode for BlockMapValue {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::BLOCK_MAP_VALUE
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(BlockMapValue { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Block {
syntax: SyntaxNode,
}
impl Block {
pub fn properties(&self) -> Option<Properties> {
child(&self.syntax)
}
pub fn block_scalar(&self) -> Option<BlockScalar> {
child(&self.syntax)
}
pub fn block_seq(&self) -> Option<BlockSeq> {
child(&self.syntax)
}
pub fn block_map(&self) -> Option<BlockMap> {
child(&self.syntax)
}
}
impl AstNode for Block {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::BLOCK
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Block { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct YamlDirective {
syntax: SyntaxNode,
}
impl YamlDirective {
pub fn directive_name(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::DIRECTIVE_NAME)
}
pub fn yaml_version(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::YAML_VERSION)
}
}
impl AstNode for YamlDirective {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::YAML_DIRECTIVE
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(YamlDirective { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct TagDirective {
syntax: SyntaxNode,
}
impl TagDirective {
pub fn directive_name(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::DIRECTIVE_NAME)
}
pub fn tag_handle(&self) -> Option<TagHandle> {
child(&self.syntax)
}
pub fn tag_prefix(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::TAG_PREFIX)
}
}
impl AstNode for TagDirective {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::TAG_DIRECTIVE
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(TagDirective { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ReservedDirective {
syntax: SyntaxNode,
}
impl ReservedDirective {
pub fn directive_name(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::DIRECTIVE_NAME)
}
pub fn directive_param(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::DIRECTIVE_PARAM)
}
}
impl AstNode for ReservedDirective {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::RESERVED_DIRECTIVE
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(ReservedDirective { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Directive {
syntax: SyntaxNode,
}
impl Directive {
pub fn percent(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::PERCENT)
}
pub fn yaml_directive(&self) -> Option<YamlDirective> {
child(&self.syntax)
}
pub fn tag_directive(&self) -> Option<TagDirective> {
child(&self.syntax)
}
pub fn reserved_directive(&self) -> Option<ReservedDirective> {
child(&self.syntax)
}
}
impl AstNode for Directive {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::DIRECTIVE
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Directive { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Document {
syntax: SyntaxNode,
}
impl Document {
pub fn directives(&self) -> AstChildren<Directive> {
children(&self.syntax)
}
pub fn directives_end(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::DIRECTIVES_END)
}
pub fn block(&self) -> Option<Block> {
child(&self.syntax)
}
pub fn flow(&self) -> Option<Flow> {
child(&self.syntax)
}
pub fn document_end(&self) -> Option<SyntaxToken> {
token(&self.syntax, SyntaxKind::DOCUMENT_END)
}
}
impl AstNode for Document {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::DOCUMENT
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Document { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Root {
syntax: SyntaxNode,
}
impl Root {
pub fn documents(&self) -> AstChildren<Document> {
children(&self.syntax)
}
}
impl AstNode for Root {
type Language = YamlLanguage;
fn can_cast(kind: SyntaxKind) -> bool {
kind == SyntaxKind::ROOT
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Root { syntax })
} else {
None
}
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
}
}