glrss_parser/rss

Look at https://www.rssboard.org/rss-specification or https://www.w3schools.com/xml/xml_rss.asp for more information.

The tags and attributes should mostly match the names here.

Types

pub type Category {
  Category(
    domain: option.Option(String),
    categories: List(String),
  )
}

Constructors

  • Category(domain: option.Option(String), categories: List(String))
pub type Channel {
  Channel(
    title: String,
    link: String,
    description: String,
    language: option.Option(String),
    copyright: option.Option(String),
    managing_editor: option.Option(String),
    web_master: option.Option(String),
    pub_date: option.Option(date.RssDate),
    last_build_date: option.Option(date.RssDate),
    category: option.Option(Category),
    generator: option.Option(String),
    docs: option.Option(String),
    cloud: option.Option(Cloud),
    ttl: option.Option(Int),
    image: option.Option(Image),
    rating: option.Option(String),
    text_input: option.Option(TextInput),
    skip_hours: List(Int),
    skip_days: List(date.DayOfWeek),
    item: List(Item),
  )
}

Constructors

pub type Cloud {
  Cloud(
    domain: String,
    port: Int,
    path: String,
    register_procedure: String,
    protocol: String,
  )
}

Constructors

  • Cloud(
      domain: String,
      port: Int,
      path: String,
      register_procedure: String,
      protocol: String,
    )
pub type Enclosure {
  Enclosure(url: String, length: Int, type_: String)
}

Constructors

  • Enclosure(url: String, length: Int, type_: String)
pub type Image {
  Image(
    url: String,
    title: String,
    link: String,
    width: option.Option(Int),
    height: option.Option(Int),
    description: option.Option(String),
  )
}

Constructors

pub type Item {
  Item(
    title: option.Option(String),
    link: option.Option(String),
    description: option.Option(String),
    author: option.Option(String),
    category: option.Option(Category),
    comments: option.Option(String),
    enclosure: option.Option(Enclosure),
    guid: option.Option(String),
    pub_date: option.Option(date.RssDate),
    source: option.Option(Source),
  )
}

Constructors

pub type ParseError {
  UnexpectedSignal(xmlm.Signal)
  UnexpectedAttribute(List(xmlm.Attribute))
  UnexpectedData(String)
  XmlmError(xmlm.InputError)
  PartyError(party.ParseError(Nil))
  NilError
}

Constructors

pub type Rss {
  Rss(version: String, channel: Channel)
}

Constructors

  • Rss(version: String, channel: Channel)
pub type Source {
  Source(url: String, name: option.Option(String))
}

Constructors

pub type TextInput {
  TextInput(
    title: String,
    description: String,
    name: String,
    link: String,
  )
}

Constructors

  • TextInput(
      title: String,
      description: String,
      name: String,
      link: String,
    )

Values

pub fn empty_rss() -> Rss
pub fn parse(
  rss_xml: String,
  skip_unknown_tags skip: Bool,
) -> Result(Rss, ParseError)
pub fn parse_bits(
  rss_xml: BitArray,
  skip_unknown_tags skip: Bool,
) -> Result(Rss, ParseError)
Search Document