2018-08-04 03:28:27 +01:00
# Contribution Guidelines
## Writing Code
* Include documentation reference(s) at the top of each file:
2018-08-04 04:03:08 +01:00
```js
2018-08-04 03:28:27 +01:00
// http://officeopenxml.com/WPdocument.php
```
* Follow Prettier standards, and consider using the [Prettier VSCode ](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode ) plugin.
* Follow the `TSLint` rules
2018-08-07 01:25:28 +01:00
## Add vs Create
This is just a guideline, and the rules can sometimes be broken.
* Use `create` if the method `new` 's up an element inside:
```js
public createParagraph() {
const paragraph = new Paragraph();
this.root.push(paragraph);
}
```
* Use `add` if you add the element into the method as a parameter:
```js
2018-08-09 03:23:07 +01:00
public addParagraph(paragraph: Paragraph) {
2018-08-07 01:25:28 +01:00
this.root.push(paragraph);
}
```
## Getters and Setters
Getters and Setters are done with a capital letter like so:
```js
public get Level() {
}
```
There is no performance advantage by doing this. It means we don't need to prefix all private variables with the ugly `_` :
**Do not:**
```js
private get _level: string;
```
**Do**
```js
private get level: string;
```
2018-08-04 03:28:27 +01:00
## Testing
Please write a test of every file you make and suffix it with `.spec.ts` .
Here is a template of a test:
2018-08-04 04:03:08 +01:00
```js
2018-08-04 03:28:27 +01:00
import { assert } from "chai";
describe("ClassName", () => {
beforeEach(() => {
// TODO
});
describe("#methodName ()", () => {
it("should ", () => {
// TODO
});
});
});
```