1#[macro_use]
2extern crate ego_tree;
3
4mod extractor;
5mod parser;
6mod util;
7
8pub use extractor::ExtractorError;
9pub use parser::{
10 Argument, Field, Method, MethodArgs, Object, ObjectData, ParseError, Parsed, Type,
11};
12
13pub const CORE_TELEGRAM_URL: &str = "https://core.telegram.org";
14pub const BOT_API_DOCS_URL: &str = "https://core.telegram.org/bots/api/";
15
16use extractor::Extractor;
17
18#[derive(Debug, thiserror::Error)]
19pub enum Error {
20 #[error("Extractor: {0}")]
21 Extractor(
22 #[from]
23 #[source]
24 ExtractorError,
25 ),
26 #[error("Parser: {0}")]
27 Parse(
28 #[from]
29 #[source]
30 ParseError,
31 ),
32}
33
34pub fn get(html_doc: &str) -> Result<Parsed, Error> {
35 let extractor = Extractor::from_str(html_doc);
36 let extracted = extractor.extract()?;
37 let parsed = parser::parse(extracted)?;
38 Ok(parsed)
39}