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
29
30
31
32
33
34
35
36
37
38
#[macro_use]
extern crate ego_tree;
mod extractor;
mod parser;
mod util;
pub use extractor::ExtractorError;
pub use parser::{
Argument, Field, Method, MethodArgs, Object, ObjectData, ParseError, Parsed, Type,
};
pub const BOT_API_DOCS_URL: &str = "https://core.telegram.org/bots/api/";
use extractor::Extractor;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("Extractor: {0}")]
Extractor(
#[from]
#[source]
ExtractorError,
),
#[error("Parser: {0}")]
Parse(
#[from]
#[source]
ParseError,
),
}
pub fn get(html_doc: &str) -> Result<Parsed, Error> {
let extractor = Extractor::from_str(html_doc);
let extracted = extractor.extract()?;
let parsed = parser::parse(extracted)?;
Ok(parsed)
}