start on parsing pest representation into lsp types
This commit is contained in:
parent
62c9c3095b
commit
f3c6ac488c
10
src/cache.rs
10
src/cache.rs
|
@ -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)
|
||||||
|
|
|
@ -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>> {
|
||||||
|
|
Loading…
Reference in New Issue