start on parsing pest representation into lsp types

This commit is contained in:
acereca 2023-04-13 16:34:30 +02:00
parent 62c9c3095b
commit f3c6ac488c
2 changed files with 12 additions and 6 deletions

View File

@ -31,7 +31,8 @@ impl SymbolCache {
} }
} }
pub fn update(&self, path: &str) -> Vec<CompletionItem> { pub fn update(&self, path: &str) {
self.symbols.insert(path.to_owned(), vec![]);
let parsed = parse_skill(path); let parsed = parse_skill(path);
for rule in parsed { for rule in parsed {
match parse_global_symbols(rule) { match parse_global_symbols(rule) {
@ -39,20 +40,19 @@ impl SymbolCache {
Err(_) => {} Err(_) => {}
} }
} }
return self.symbols.get(path).unwrap().to_vec();
} }
} }
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::cache::SymbolCache; // use crate::cache::SymbolCache;
// use std::collections::HashMap; // use std::collections::HashMap;
// use std::path::Path; // use std::path::Path;
#[test] #[test]
fn insert() { fn insert() {
let mut d = SymbolCache::new(); // let mut d = SymbolCache::new();
d.update(); // d.update();
// let mut comp = HashMap::new(); // let mut comp = HashMap::new();
// comp.insert(); // comp.insert();
// assert_eq!(d.documents, comp) // assert_eq!(d.documents, comp)

View File

@ -1,11 +1,17 @@
use pest::error::Error; use pest::error::Error;
use pest::iterators::Pair; use pest::iterators::Pair;
use pest::Parser;
use log::info;
#[derive(Parser)] #[derive(Parser)]
#[grammar = "./skill.pest"] #[grammar = "skill.pest"]
pub struct SkillParser; pub struct SkillParser;
pub fn parse_skill(path: &str) -> Vec<Pair<Rule>> { pub fn parse_skill(path: &str) -> Vec<Pair<Rule>> {
let parsed = SkillParser::parse(Rule::skill, path);
info!("{:?}", parsed);
vec![] vec![]
} }
pub fn parse_global_symbols(token: Pair<Rule>) -> Result<&str, Error<Rule>> { pub fn parse_global_symbols(token: Pair<Rule>) -> Result<&str, Error<Rule>> {