properties-file-parser

Crates.ioproperties-file-parser
lib.rsproperties-file-parser
version0.1.4
sourcesrc
created_at2024-11-12 13:19:28.635408
updated_at2024-11-16 17:19:31.179453
descriptionThis is a project for .properties file parsing (https://en.wikipedia.org/wiki/.properties)
homepage
repository
max_upload_size
id1444925
size41,551
(AMykolaD)

documentation

README

properties-file-parser

Overview

Brief description

This is a project for .properties file parsing (https://en.wikipedia.org/wiki/.properties)
This project is uploaded on crates.io:
https://crates.io/crates/properties-file-parser

.properties

.properties is a file extension used by Java technologies.
This extension is similar to .ini
Example of syntax:

name="John"
familyName="Smith"

# Age in years
age="35"

In property age="35", for example, age is property key, "35" is value.
# Age in years is comment.

Instead of =, you can also use : or empty space in property:

name: "John"
familyName "Smith"

Keys can have no value:

familyName

Comments can also start with !:

! Age in years

Tabs and spaces at the beginning of line or between key and value are ignored, so this syntax is also viable:

name    = "John"
    familyName="Smith"
    # Age in years
age=     "35"

Goal

This project's main purpose is to allow Rust users to parse .properties and use the results in their own code.

Project structure

The project structure is following:
img.png

grammar.pest

File which includes all pest grammar

lib.rs

Contains the code to parse .properties
It has methods parse_properties and parse_properties_as_string to parse string as a vector of properties as Rust structure and convert it to readable format

main.rs

Contains the code for CLI. The commands are following:

parse [INPUT_FILE_NAME]
// parses the contents of .properties file and shows readable result

parse [INPUT_FILE_NAME] [OUTPUT_FILE_NAME]
// parses the contents of .properties file and stores the readable result in file

help
// shows help

grammar_tests.rs

Contains the tests for the grammar

Pest

This project is created with pest crate. The pest grammar is following:

comment

Parses comment, which can start with # or !

spaces

One or more spaces or tabs

property

property, such as:

key=value
key:value
key value
key

key

key in property

value

value in property

file

parses the whole file .properties

silentEOI

used in order not to get "EOI" in output

Commit count: 0

cargo fmt