pobsd-parser

pobsd-parser is a parsing library for parsing the PlayOnBSD Database.

This library provides: * A Parser struct handling the parsing * A ParsingMode enum to choose between a strict or a relax parsing mode * A ParserResult struct to handle parsing with and without error * A Game struct representing a game of a database

Examples

Here is a first example loading a file in relaxed mode (by default). extern crate pobsd_parser; use pobsd_parser::{Parser, ParserResult}; // Create a parser let parser = Parser::default(); // Load the database let parser_result = parser.load_from_file("/path/to/games.db") .expect("Problem trying to open the file"); let games = match parser_result { ParserResult::WithoutError(games) => games, ParserResult::WithError(games, _) => games, };

The parser can also use a strict mode in which it will stop when encountering a parsing error and returning the games it has processed. ``` extern crate pobsdparser; use pobsdparser::{Parser, ParserResult, ParsingMode};

// Create a paser in strict mode let parser = Parser::new(ParsingMode::Strict); // Load the database let parserresult = parser.loadfromfile("/path/to/games.db") .expect("Problem trying to open the file"); let games = match parserresult { ParserResult::WithoutError(games) => games, ParserResult::WithError(games, _) => games, }; ```

The parser can also load from a &str or a String. ``` extern crate pobsdparser; use pobsdparser::{Parser, ParserResult, ParsingMode};

let games = r#"Game AaaaaAAaaaAAAaaAAAAaAAAAA!!! for the Awesome Cover AaaaaAfortheAwesomeCover.jpg Engine Setup Runtime HumblePlay Store https://www.humblebundle.com/store/aaaaaaaaaaaaaaaaaaaaaaaaa-for-the-awesome Hints Demo on HumbleBundle store page Genre Tags Year 2011 Dev Pub Version Status Added 1970-01-01 Updated 1970-01-01 IgdbId 12 Game The Adventures of Mr. Hat Cover Engine godot Setup Runtime godot Store https://store.steampowered.com/app/1869200/TheAdventuresofMrHat/ Hints Genre Puzzle Platformer Tags indie Year Dev AX-GAME Pub Fun Quarter Version Early Access Status runs (2022-05-13) Added 2022-05-13 Updated 2022-05-13 IgdbId 13"#;

let parser = Parser::default(); let games = match parser.loadfromstring(games) { ParserResult::WithoutError(games) => games, // Should not panic since the data are fine ParserResult::WithError(_, _) => panic!(), }; ```