# EVE

EVE is an lightweight data-interchange format.

<br>

### Getting Started

These instructions will help you get started using EVE

<br>

### Installing

You can install it with pip (https://pypi.org/project/evepy/)

```
pip install evepy
```

Another way is to clone the repo and import the python file (`Eve.py`)
If none of them, you can also put the GitHub URL in your `requirements.txt` file (https://pip.pypa.io/en/stable/user_guide/#requirements-files)

<br>

### Upgrading Version

You can upgrade Eve with the following pip command:

```
pip install evepy -U
```

<br>

### Example use

Here are examples of how to use EVE

Example.eve

```
[
  @ Simple Stuff
  'String' :: 'Hello, World!'     @ A simple string : Hello, World
  'Int' :: 5                      @ A simple int    : 5
  'Float' :: 6.9                  @ A simple float  : 6.9
  'Bool' :: False                 @ A simple bool   : False
  'List' :: ('a', 1, False)       @ A simple list   : ['a', 1, False]

  @ Advanced Stuff
  {String.Upper}
  'Advanced_String' :: 'Hello, World!'      @ An advanced string    : HELLO, WORLD!
  {Math.Eval}
  'Advanced_Math' :: (5 + 2) * 3            @ Doing math            : 21
  {Math.Round}
  'Advanced_Float' :: 6.9                   @ Float rounding        : 7
  {Hash.MD5}
  'Advanced_Hashing' :: 'Hello, World!'     @ Hashing strings       : 65a8e27d8879283831b664bd8b7f0ad4
  {List.Lower}
  'Advanced_List' :: ('A', 'B', 'C')        @ Changing list values  : ['a', 'b', 'c']

  'Math_List' :: (10 + 10, (5 + 2) * 3)     @ Doing math in list    : [20, 21]

  @ And much more!
];

[
  @ Btw, you can have multiple sections.
  'IsGonnaUseEVE?' :: True
];
```
<br>
Example.py

```python
import Eve

# Load a file :: load(path)
Data = Eve.Load ('example.eve')

# Print variables (Prints: Hello, World!)
print (Result['String'])
```

<br>

### ATOM grammar syntax highlighting

You can find the syntax file which is named: `EVE.cson`

<br>

## Methods
### Load Method

The load method takes in a path to an eve file, and returns the content

```
Load (Path)
```

### Loads Method

The loads method takes in EVE data and returns a dict of the content

```
Loads (Data)
```

<br>

## Features
### Variable Marking

The variable defining feature let's you control different variables

Supported definers:
- String
  - Upper   : Makes the string uppercase
  - Lower   : Makes the string lowercase
- Math
  - Eval    : Calculates the variable value
  - Round   : Rounds up a float to nearest 1
- Hash
  - MD5     : Hashes the variable value with MD5
- List
  - Upper   : Makes all string values in the list uppercase
  - Lower   : Makes all string values in the list lowercase

Examples:

```
[
  @ This here will always make the string uppercase (Return: 'MARTIN')
  {String.Upper}
  'Name' :: 'martin'

  @ This here will add the numbers (Return: 7)
  {Math.Eval}
  'Number' :: 5 + 2

  @ This will round up the float (Return: 7)
  {Math.Round}
  'Float' :: 6.7
];
```

<br>

## Contribute

Feel free to make a pull request, so you can help create Eve!
And also feel free to create Eve in other languages!

## Authors

* **Dmunch04** - **Initial Work** - [EVE] (https://github.com/Dmunch04)

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details
