Project Title
===



## Table of Contents
[TOC]
## Beginners Guide
If you are a total beginner to this, start here!
1. Visit hackmd.io
2. Click "Sign in"
3. Choose a way to sign in
4. Start writing note!
## Interchange Instrument
| Template | Value |
|-----------|-----------------------------|
| ^$^edi | Interchange Control Header |
| Name | Functional Group Header |
| About | Transaction Set Header |
| BGN | Beginning Segment |
| N9 | Reference Identification |
| TRN | Trace |
| AMT | Monetary Amount |
| QTY | Quantity |
| SE | Transaction Set Trailer |
| GE | Functional Group Trailer |
| IEA | Interchange Control Trailer |
| | |
# Language $edilet$
Creating a definition and expression to be evaluated
A condition that must evaluate to `true` before the statement in the `then` clause can execute
$edilet$ is a free format langauge, therefore you must terminate definitions and expressions
## Operators.
String Operations are done in two ways. Case sensitive and case insensitive to be more expressive.
There are only 8 different symbols that can be between an operator. We further reduce the possible combinations by enforcing a specific `dogma`. A `dogma` is a set of constraints on operators so that a formal domain may be specificed. For EDI, we limit the possible 256 combinations of the symbols to just 24 operators.
> For example, we wouldn't want to write =c
For example, we take
`i` `l` `e` `s` `c` `=` `>` `<`
`==` which is an equal sign and Case Sensitive
`==i` which is an equal sign and Case Insensitive
For a full list of string operations see Apendix B
`=s` starts with
`=si` starts with, case insensitive
`!s` does NOT start with
`!si` does NOT start with, case insensitive
`=e` ends with
`=ei` ends with, case insensitive
`!e` does not end with
`!ei` does not end with, case insensitive
`=l`
Equals
$==i \quad$ Equals
!= $\quad$ Not Equals
$!=i \quad$ Not Equals
Greater Than
Less Than
Greater Than Or Equal To
Less Than Or Equal To
$=c$
Contains
=ci $\quad$ Contains (Case Insensitive)
$! c$
Does Not Contain
!ci $\quad$ Does Not Contain (Case Insensitive)
$=s$
Starts With
$=\mathrm{s}$
Starts With (Case Insensitive)
$!$
Does Not Start With
$!$ si Does Not Start With (Case Insensitive)
Ends With
ei Ends With (Case Insensitive)
!e Does Not End With
รจ Does Not End With (Case Insensitive)
$=1 \quad$ Length Equals
!! $\quad$ Length Does Not Equals
<1 $\quad$ Length Less Than
## Running the Interpreter
assignChannel, handleMessage, setChannelRange, map(),
int assignChannel ( int noteNumber )
setChannelRange ( bool useRDP,
int lowChannel,
int highChannel
)
map()
float map ( float value,
float sourceMin,
float sourceMax,
float destMin,
float destMax
)
handleMessage
( int param1,
int param2,
int param3
)
--
## Functions
bool isMasterBlock ()
Returns true if this block is directly connected to the host, as opposed to only being connected to a different block via a connection port.
int getBlockTypeForID (int blockID)
Returns the type of the block with a given ID
handleMessage (int param1, int param2, int param3)
Called when a block receives a message.
assignChannel (int wholeNumber)
deassignChannel (int wholeNumber, int channel)
Deassigns a channel
logHex (int data)
Logs a hexadecimal value to the console
map (float value, float sourceMin, float sourceMax, float destMin, float destMax)
Remaps a value from a source range to a target range
clamp (int lowerLimit, int upperLimit, int valueToConstrain)
Constrains an integer value to keep it within a given range.
> Note: `clamp` is available in *float* and *int*
>
getHeapByte (int byteIndex)
Reads and returns the value of a single byte from the heap
---
User story
---
```gherkin=
Feature: Guess the word
# The first example has two steps
Scenario: Maker starts a game
When the Maker starts a game
Then the Maker waits for a Breaker to join
# The second example has three steps
Scenario: Breaker joins a game
Given the Maker has started a game with the word "silky"
When the Breaker joins the Maker's game
Then the Breaker must guess a word with 5 characters
```
> I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it. [name=Bill Gates]
```gherkin=
Feature: Shopping Cart
As a Shopper
I want to put items in my shopping cart
Because I want to manage items before I check out
Scenario: User adds item to cart
Given I'm a logged-in User
When I go to the Item page
And I click "Add item to cart"
Then the quantity of items in my cart should go up
And my subtotal should increment
And the warehouse inventory should decrement
```
> Read more about Gherkin here: https://docs.cucumber.io/gherkin/reference/
User flows
---
```sequence
Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!
Note left of Alice: Alice responds
Alice->Bob: Where have you been?
```
> Read more about sequence-diagrams here: http://bramp.github.io/js-sequence-diagrams/
Project Timeline
---
```mermaid
gantt
title A Gantt Diagram
section Section
A task :a1, 2014-01-01, 30d
Another task :after a1 , 20d
section Another
Task in sec :2014-01-12 , 12d
anther task : 24d
```
> Read more about mermaid here: http://mermaid-js.github.io/mermaid/
## Appendix and FAQ
:::info
**Find this document incomplete?** Leave a comment!
:::
###### tags: `Templates` `Documentation`