<commit_before>#Driver Interface

**This file contains a lot of information duplicated in [platform drivers](./platform_drivers.md)**

There is no standard communication protocol or interface for drivers.  The driver stack operates by 

1. The platform drivers bundle, e.g. `./app/drivers/CHROME/` will declare it's `ifaces` in `config.yml`
2. During compilation, the `application.js` file is embedded with `lsiface()`
3. Your application may now use `lsiface()` to dynamically alter it's behavior to be suitable.  The application may then make function calls that are specified in the `./app/drivers/iface/$YOUR_INTERFACE.js`.

#What are Driver Interfaces?
An interface is just a javascript file with a set of function definitions a-lot like C header files.  They are located in `./app/drivers/iface`.  These are not actually used in your compiled program but serve as a reference to other developers on how to implement your interface.  We have future plans to use the interface files themselves so please, please, please... implement the interface files.

Here is an example interface file for a printer.

```js
//./app/drivers/iface/printer.js<commit_msg>Update driver_interface.md<commit_after>#Driver Interface

**This file contains a lot of information duplicated in [platform drivers](./platform_drivers.md)**

There is no standard communication protocol or interface for drivers.  The driver stack operates by 

1. The platform drivers bundle, e.g. `./app/drivers/CHROME/` will declare it's `ifaces` in `config.yml`
2. During compilation, the `application.js` file is embedded with `IFACES`
3. Your application may now use `IFACES` to dynamically alter it's behavior to be suitable.

#What are Driver Interfaces?
An interface is just a javascript file with a set of function definitions a-lot like C header files.  They are located in `./app/drivers/iface`.  These are not actually used in your compiled program but serve as a reference to other developers on how to implement your interface.  We have future plans to use the interface files themselves so please, please, please... implement the interface files.

Here is an example interface file for a printer.

```js
//./app/drivers/iface/printer.js
{'fraction_non_alphanumeric': 0.07462686567164178, 'fraction_numerical': 0.0027137042062415195, 'mean_word_length': 4.3951219512195125, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6684493', 'n_tokens_mistral': 586, 'n_tokens_neox': 560, 'n_words': 303}