96 lines
1.9 KiB
Markdown
96 lines
1.9 KiB
Markdown
![]() |
---
|
||
|
title: Structure of a part
|
||
|
order: 150
|
||
|
---
|
||
|
|
||
|
Let's get rid of the example box first.
|
||
|
Open `src/bib.js` and make sure it looks like this:
|
||
|
|
||
|
```js
|
||
|
export default function(part) {
|
||
|
let { Point, points, Path, paths } = part.shorthand();
|
||
|
// Design pattern here
|
||
|
|
||
|
// Complete?
|
||
|
if (complete) {
|
||
|
if (sa) {
|
||
|
}
|
||
|
// Paperless?
|
||
|
if (paperless) {
|
||
|
}
|
||
|
}
|
||
|
return part;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
This is an empty skeleton for a pattern part. Anytime you want to create a new part,
|
||
|
this is a good starting point.
|
||
|
|
||
|
Let's quickly go over the different sections.
|
||
|
Even if there's not much going on yet, it's always good to understand what's going on.
|
||
|
|
||
|
## The draft method
|
||
|
|
||
|
```js
|
||
|
export default function(part) {
|
||
|
|
||
|
// ...
|
||
|
|
||
|
return part;
|
||
|
}
|
||
|
|
||
|
```
|
||
|
|
||
|
This is the boilerplate of our `draftBib` method. It takes the part as an argument, and returns it.
|
||
|
|
||
|
<Note>
|
||
|
|
||
|
If you're new to JavaScript, and don't intuitively *get this*, stick with it. It will become second nature soon enough.
|
||
|
|
||
|
</Note>
|
||
|
|
||
|
## Using shorthand
|
||
|
|
||
|
```js
|
||
|
let {
|
||
|
Point,
|
||
|
points,
|
||
|
Path,
|
||
|
paths,
|
||
|
} = part.shorthand();
|
||
|
```
|
||
|
|
||
|
This is FreeSewing's **shorthand** method. It returns an object with a bunch of handy helpers
|
||
|
and you use JavaScript's *object destructuring* to only get what you need.
|
||
|
|
||
|
The example above makes the following variables available:
|
||
|
|
||
|
- `Point`: The Point constructor
|
||
|
- `points`: A reference to the part's points
|
||
|
- `Path`: The Path constructor
|
||
|
- `paths`: A reference to the part's paths
|
||
|
|
||
|
<Note>
|
||
|
|
||
|
This will all become clear, but if you're curious, the API docs have all the details
|
||
|
on [the Part.shorthand() method](/reference/api/part/#shorthand)
|
||
|
|
||
|
</Note>
|
||
|
|
||
|
## Part boilerplate
|
||
|
|
||
|
```js
|
||
|
// Complete?
|
||
|
if (complete) {
|
||
|
if (sa) {
|
||
|
}
|
||
|
// Paperless?
|
||
|
if (paperless) {
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
This is some more boilerplate that makes sure we respect the `complete`, `sa`, and `paperless` settings.
|
||
|
|
||
|
For now, you don't need to worry about this. Let's just start designing our bib.
|