1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use crate::{
    compilers::ParsedSource, resolver::parse::capture_outer_and_inner, utils::RE_VYPER_VERSION,
    ProjectPathsConfig,
};
use semver::VersionReq;
use std::path::{Path, PathBuf};

#[derive(Debug)]
pub struct VyperParsedSource {
    version_req: Option<VersionReq>,
}

impl ParsedSource for VyperParsedSource {
    fn parse(content: &str, _file: &Path) -> Self {
        let version_req = capture_outer_and_inner(content, &RE_VYPER_VERSION, &["version"])
            .first()
            .and_then(|(cap, _)| VersionReq::parse(cap.as_str()).ok());
        VyperParsedSource { version_req }
    }

    fn version_req(&self) -> Option<&VersionReq> {
        self.version_req.as_ref()
    }

    fn resolve_imports<C>(&self, _paths: &ProjectPathsConfig<C>) -> Vec<PathBuf> {
        vec![]
    }
}