summaryrefslogtreecommitdiff
path: root/support/texlab/src/syntax/latex/analysis/label_number.rs
blob: 93ad09523f68a4ae4522626dc9efbc96add1a9a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use crate::syntax::{latex, CstNode};

use super::LatexAnalyzerContext;

pub fn analyze_label_number(
    context: &mut LatexAnalyzerContext,
    node: &latex::SyntaxNode,
) -> Option<()> {
    let number = latex::LabelNumber::cast(node)?;
    let name = number.name()?.key()?.to_string();
    let text = number
        .text()?
        .syntax()
        .descendants_with_tokens()
        .filter_map(|element| element.into_node())
        .find(|node| node.kind() == latex::TEXT || node.kind() == latex::MIXED_GROUP)?
        .text()
        .to_string();

    context.extras.label_numbers_by_name.insert(name, text);
    Some(())
}