vxde 2.0.0-beta.0

A Rust library to parse .vxd files containing key-value pairs used in games or configurations.
Documentation
# Full Documentation of Core Methods

### `VxdeParser::from_file`

```rust
pub fn from_file(file_path: &str) -> io::Result<Self>
```

This function opens the given file and parses its contents. The file should follow the `.vxd` format, where each line can contain one or more key-value pairs, with keys and values separated by an equal sign (`=`) and pairs separated by semicolons (`;`).

- Whitespace, tabs, and newlines are ignored.
- Keys and values are parsed as strings. If a value is enclosed in double quotes (`"`), the quotes are removed from the value.
- Keys and values are trimmed of leading and trailing whitespace.

### `VxdeParser::get_variables`

```rust
pub fn get_variables(&self) -> &HashMap<String, String>
```

This function returns the `HashMap` that holds the parsed key-value pairs from the `.vxd` file. You can use this method to access the parsed variables.

## Example `.vxd` File Formats

The following are valid `.vxd` file formats:

### 1. Single Line, Clean Format

```plaintext
USER_ISLOGGEDIN:Bool=true;USER_NAME:String="reanore";USER_PASS:i32="1234";
```

### 2. Spaced Out Format

```plaintext
USER_ISLOGGEDIN : Bool = true;
USER_NAME : Bool = "reanore";
USER_PASS : Bool = "1234";
```

### 3. Newlines Between Pairs

```plaintext
USER_ISLOGGEDIN : Bool =true;

USER_NAME : String ="reanore";

USER_PASS : String ="1234";
```

### 4. Mixed Spacing, Newlines, and Missing Values

```plaintext
USER_ISLOGGEDIN : Bool = true;

USER_NAME:String="reanore";

USER_PASS;
```

In the last example, the `USER_PASS` key has no value or type, and the parser will ignore it (i.e., no entry for `USER_PASS` will be in the `HashMap`).

---

## API Documentation

### `VxdeParser`

The core struct of the library that handles parsing the `.vxd` file.

#### `VxdeParser::from_file(file_path: &str) -> Result<VxdeParser, io::Error>`

Reads a `.vxd` file from the given path and parses its contents.

##### Arguments:

- `file_path`: A string slice representing the path to the `.vxd` file.

##### Returns:

- `Ok(VxdeParser)` if the file was parsed successfully.
- `Err(io::Error)` if there was an error opening or reading the file.

#### `VxdeParser::get_variables(&self) -> &HashMap<String, String>`

Returns a reference to the `HashMap` containing the parsed variables.

##### Returns:

- A reference to a `HashMap<String, String>`, where the keys are the variable names and the values are the corresponding values from the `.vxd` file.

---

## Usage

Here's a basic example of how to use the `VxdeParser` to read and parse a `.vxd` file:

### Example Code

```rust
use vxde::VxdeParser;

fn main() {
    // Read and parse a .vxd file
    let file_path = "path_to_your_file.vxd";
    match VxdeParser::from_file(file_path) {
        Ok(vxde) => {
            // Access the parsed variables
            let variables = vxde.get_variables();
            
            // Print each key-value pair
            for (key, value) in variables {
                println!("{} = {}", key, value);
            }
        }
        Err(e) => {
            eprintln!("Failed to parse file: {}", e);
        }
    }
}
```

### Example `.vxd` File Content

```plaintext
USER_ISLOGGEDIN:Bool=true;USER_NAME:String="reanore";USER_ID:I32=1234;
```

This will be parsed into a `HashMap` where the keys are `USER_ISLOGGEDIN`, `USER_NAME`, and `USER_PASS`, and the corresponding values will be `true`, `"reanore"`, and `1234`.

### Example Usage

```rust
use vxde::VxdeParser;

fn main() {
    let file_path = "config.vxd";
    let vxde = VxdeParser::from_file(file_path).unwrap();
    let variables = vxde.get_variables();

    println!("Parsed variables:");
    for (key, value) in variables {
        println!("{} = {}", key, value);
    }
}
```