Give gemtext parser a more uniform interface wrt other parsers

[?]
Jan 13, 2021, 3:49 AM
RTDVYLFT3PRNC4F4TWU47YFMLQPXR65CAAB6IVS7FIY2EB7HJGJQC

Dependencies

  • [2] KP6SZZ34 Fix building without parsers
  • [3] Y55SCAUN Finish gemtext parsing implementation
  • [4] BOFUYB6I Add documentation and implement some feedback from Discord (https://discord.com/channels/273534239310479360/354038657075904544/796256815024701480)
  • [5] JBZGFYVO Add nom parsers for main types
  • [*] 5II6T7YE Add gemini library

Change contents

  • replacement in gemini/src/lib.rs at line 33
    [3.2225][3.2225:2277]()
    use crate::{header, request, response, status};
    [3.2225]
    [3.2277]
    use crate::{gemtext, header, request, response, status};
  • replacement in gemini/src/lib.rs at line 43
    [3.2473][3.2473:2595]()
    pub fn [< parse_ $name >]<'i>(input: impl AsRef<[u8]> + 'i) -> Result<$name::$type, Error<Vec<u8>>> {
    [3.2473]
    [3.2595]
    pub fn [< parse_ $name >](input: impl AsRef<[u8]>) -> Result<$name::$type, Error<Vec<u8>>> {
  • edit in gemini/src/lib.rs at line 68
    [3.3367]
    [3.3367]
    /// Parse a gemtext document from utf-8 text.
    pub fn parse_gemtext(input: impl AsRef<str>) -> Result<gemtext::Builder, Error<String>> {
    let input = input.as_ref();
    match gemtext::parse::document(input).finish() {
    Ok((_, b)) => Ok(b),
    Err(Error { input, code }) => Err({
    let input = input.to_string();
    Error { input, code }
    }),
    }
    }
  • replacement in gemini/src/lib.rs at line 83
    [2.28][2.28:107](),[3.32][3.3370:3446](),[2.107][3.3370:3446](),[3.3370][3.3370:3446]()
    pub use gemtext::parse::document as parse_gemtext;
    #[cfg(feature = "parsers")]
    pub use parse::{parse_header, parse_request, parse_response, parse_status};
    [2.28]
    pub use parse::{parse_gemtext, parse_header, parse_request, parse_response, parse_status};