chore(markdown): Linting of dev docs
This commit is contained in:
parent
1d8beedd44
commit
265ad404da
317 changed files with 1281 additions and 1503 deletions
|
@ -14,6 +14,7 @@ This Code of Conduct is an almost verbatim copy of the [Contributor Covenant][ho
|
|||
available at [http://contributor-covenant.org/version/2/0][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
|
||||
[version]: http://contributor-covenant.org/version/2/0/
|
||||
|
||||
</Note>
|
||||
|
|
|
@ -4,12 +4,14 @@ order: 10
|
|||
---
|
||||
|
||||
##### Community Impact
|
||||
Use of inappropriate language or other behavior
|
||||
|
||||
Use of inappropriate language or other behavior
|
||||
deemed unprofessional or unwelcome in the community.
|
||||
|
||||
##### Consequence
|
||||
A private, written warning from community leaders,
|
||||
providing clarity around the nature of the violation and an
|
||||
explanation of why the behavior was inappropriate.
|
||||
|
||||
|
||||
A private, written warning from community leaders,
|
||||
providing clarity around the nature of the violation and an
|
||||
explanation of why the behavior was inappropriate.
|
||||
|
||||
A public apology may be requested.
|
||||
|
|
|
@ -3,8 +3,8 @@ title: Enforcement Guidelines
|
|||
order: 60
|
||||
---
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines
|
||||
in determining the consequences for any action they deem
|
||||
Community leaders will follow these Community Impact Guidelines
|
||||
in determining the consequences for any action they deem
|
||||
in violation of FreeSewing's Code of Conduct:
|
||||
|
||||
<ReadMore list />
|
||||
|
|
|
@ -4,10 +4,12 @@ order: 40
|
|||
---
|
||||
|
||||
##### Community Impact
|
||||
Demonstrating a pattern of violation of
|
||||
community standards, including sustained inappropriate behavior,
|
||||
harassment of an individual, or aggression toward or
|
||||
|
||||
Demonstrating a pattern of violation of
|
||||
community standards, including sustained inappropriate behavior,
|
||||
harassment of an individual, or aggression toward or
|
||||
disparagement of classes of individuals.
|
||||
|
||||
##### Consequence
|
||||
|
||||
A permanent ban from any sort of public interaction within the community.
|
||||
|
|
|
@ -3,18 +3,19 @@ title: Temporary ban
|
|||
order: 30
|
||||
---
|
||||
|
||||
##### Community Impact
|
||||
A serious violation of community standards,
|
||||
##### Community Impact
|
||||
|
||||
A serious violation of community standards,
|
||||
including sustained inappropriate behavior.
|
||||
|
||||
##### Consequence
|
||||
A temporary ban from any sort of interaction or
|
||||
public communication with the community for a specified period
|
||||
of time.
|
||||
|
||||
No public or private interaction with the people
|
||||
involved, including unsolicited interaction with those enforcing
|
||||
the Code of Conduct, is allowed during this period.
|
||||
A temporary ban from any sort of interaction or
|
||||
public communication with the community for a specified period
|
||||
of time.
|
||||
|
||||
No public or private interaction with the people
|
||||
involved, including unsolicited interaction with those enforcing
|
||||
the Code of Conduct, is allowed during this period.
|
||||
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
|
|
|
@ -4,14 +4,16 @@ order: 20
|
|||
---
|
||||
|
||||
##### Community Impact
|
||||
|
||||
A violation through a single incident or series of actions.
|
||||
|
||||
|
||||
##### Consequence
|
||||
A warning with consequences for continued behavior.
|
||||
No interaction with the people involved, including unsolicited
|
||||
interaction with those enforcing the Code of Conduct, for a
|
||||
specified period of time. This includes avoiding interactions
|
||||
|
||||
A warning with consequences for continued behavior.\
|
||||
No interaction with the people involved, including unsolicited
|
||||
interaction with those enforcing the Code of Conduct, for a
|
||||
specified period of time. This includes avoiding interactions
|
||||
in community spaces as well as external channels like social
|
||||
media.
|
||||
media.
|
||||
|
||||
Violating these terms may lead to a temporary or permanent ban.
|
||||
|
|
|
@ -3,12 +3,12 @@ title: Enforcement responsibilities
|
|||
order: 30
|
||||
---
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards
|
||||
of acceptable behavior and will take appropriate and fair corrective action
|
||||
in response to any behavior that they deem inappropriate, threatening,
|
||||
Community leaders are responsible for clarifying and enforcing our standards
|
||||
of acceptable behavior and will take appropriate and fair corrective action
|
||||
in response to any behavior that they deem inappropriate, threatening,
|
||||
offensive, or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, and will communicate reasons
|
||||
Community leaders have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, and will communicate reasons
|
||||
for moderation decisions when appropriate.
|
||||
|
|
|
@ -6,11 +6,10 @@ order: 50
|
|||
Instances of abusive, harassing, or otherwise unacceptable behavior
|
||||
may be reported to the community leaders responsible for enforcement:
|
||||
|
||||
- Joost De Cock (joost@joost.at)
|
||||
- Sorcha Ní Dhubhghaill (nidhubhs@gmail.com)
|
||||
- Joost De Cock (joost@joost.at)
|
||||
- Sorcha Ní Dhubhghaill (nidhubhs@gmail.com)
|
||||
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and
|
||||
All community leaders are obligated to respect the privacy and
|
||||
security of the reporter of any incident.
|
||||
|
||||
|
|
|
@ -3,14 +3,13 @@ title: Our pledge
|
|||
order: 10
|
||||
---
|
||||
|
||||
We as members, contributors, and leaders of the FreeSewing community pledge
|
||||
We as members, contributors, and leaders of the FreeSewing community pledge
|
||||
to make participation in our community a harassment-free experience for everyone.
|
||||
|
||||
Everyone, regardless of age, body size, visible or invisible disability,
|
||||
ethnicity, sex characteristics, gender identity and expression, level of experience,
|
||||
education, socio-economic status, nationality, personal appearance, race,
|
||||
Everyone, regardless of age, body size, visible or invisible disability,
|
||||
ethnicity, sex characteristics, gender identity and expression, level of experience,
|
||||
education, socio-economic status, nationality, personal appearance, race,
|
||||
religion, or sexual identity and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
|
|
|
@ -5,16 +5,16 @@ order: 20
|
|||
|
||||
Examples of behavior that contributes to a positive environment for our community include:
|
||||
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
|
||||
- Focusing on what is best not just for us as individuals, but for the overall community
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
|
||||
- Focusing on what is best not just for us as individuals, but for the overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
- The use of sexualized language or imagery, and sexual attention or advances of any kind
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others’ private information, such as a physical or email address, without their explicit permission
|
||||
- Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
- The use of sexualized language or imagery, and sexual attention or advances of any kind
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others’ private information, such as a physical or email address, without their explicit permission
|
||||
- Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
|
|
@ -3,10 +3,9 @@ title: Scope
|
|||
order: 40
|
||||
---
|
||||
|
||||
This Code of Conduct applies within all FreeSewing community spaces, and also applies
|
||||
when an individual is officially representing the FreeSewing community in public spaces.
|
||||
This Code of Conduct applies within all FreeSewing community spaces, and also applies
|
||||
when an individual is officially representing the FreeSewing community in public spaces.
|
||||
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed representative
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed representative
|
||||
at an online or offline event.
|
||||
|
||||
|
|
|
@ -10,10 +10,10 @@ documentation can help you find your feet, and figure out what goes where.
|
|||
|
||||
Our documentation is divided into four different types:
|
||||
|
||||
- [**Tutorials**](/tutorials) are lessons that lead you through a series of steps to complete a project.
|
||||
- [**Guides**](/guides) tell a story to further your understanding of a specific topic.
|
||||
- [**Howtos**](/howtos) give you concrete steps to solve a common problem or challenge.
|
||||
- [**Reference**](/reference) holds technical descriptions of the underlying technology and how to make use of it.
|
||||
- [**Tutorials**](/tutorials) are lessons that lead you through a series of steps to complete a project.
|
||||
- [**Guides**](/guides) tell a story to further your understanding of a specific topic.
|
||||
- [**Howtos**](/howtos) give you concrete steps to solve a common problem or challenge.
|
||||
- [**Reference**](/reference) holds technical descriptions of the underlying technology and how to make use of it.
|
||||
|
||||
Each time you write documentation, you have to ask yourself: Is it a tutorial? Is it a Guide?
|
||||
Is it a Howto? Or is it Reference documentation.
|
||||
|
@ -21,24 +21,21 @@ Is it a Howto? Or is it Reference documentation.
|
|||
If you find it hard to answer that question, the illustration below might help you figure out
|
||||
where your documentation should go based on what it's trying to accomplish:
|
||||
|
||||

|
||||
|
||||
|
||||
- Write a **Tutorial** is your aim is to help people learn the platform
|
||||
- Write a **Guide** if your aim is to further people's understanding of a topic by going a bit deeper
|
||||
- Write a **Howto** if your ain is to help people accomplish a task
|
||||
- Write **Reference** documentation to detail how things work under the hood
|
||||
- Refer people to **Discord or Github** for things that are not (yet) covered in our documentation
|
||||
|
||||
- Write a **Tutorial** is your aim is to help people learn the platform
|
||||
- Write a **Guide** if your aim is to further people's understanding of a topic by going a bit deeper
|
||||
- Write a **Howto** if your ain is to help people accomplish a task
|
||||
- Write **Reference** documentation to detail how things work under the hood
|
||||
- Refer people to **Discord or Github** for things that are not (yet) covered in our documentation
|
||||
|
||||
<Note>
|
||||
|
||||
##### Based on a talk by Daniele Procida
|
||||
|
||||
This structure is loosely based
|
||||
This structure is loosely based
|
||||
on [this talk by Daniele Procida](https://www.youtube.com/watch?v=t4vKPhjcMZg) at
|
||||
PyCon AU 2017.
|
||||
|
||||
</Note>
|
||||
|
||||
|
|
|
@ -3,8 +3,7 @@ title: Guides
|
|||
order: zbb
|
||||
---
|
||||
|
||||
You can find a list of all FreeSewing guides below:
|
||||
|
||||
You can find a list of all FreeSewing guides below:
|
||||
|
||||
<ReadMore recurse />
|
||||
|
||||
|
@ -20,4 +19,3 @@ guides take more time to explain in-depth what is being done and why.
|
|||
For more details, refer to [How we structure our documentation](/guides/docs).
|
||||
|
||||
</Related>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ title: Code and code blocks
|
|||
order: 80
|
||||
---
|
||||
|
||||
Especially for our developer documentation, there's a lot of times we include source code
|
||||
Especially for our developer documentation, there's a lot of times we include source code
|
||||
in the documentation.
|
||||
You can make these look pretty by using a code block.
|
||||
|
||||
|
@ -15,7 +15,7 @@ let me = 'you'
|
|||
```
|
||||
````
|
||||
|
||||
Gives you:
|
||||
Gives you:
|
||||
|
||||
```text
|
||||
let me = 'you'
|
||||
|
@ -38,14 +38,11 @@ let me = 'you'
|
|||
|
||||
The following language codes are supported:
|
||||
|
||||
- `js` for Javascript code
|
||||
- `markdown` for Markdown
|
||||
- `html` for HTML
|
||||
- `svg` for SVG
|
||||
- `bash` for Bash or shell scripts
|
||||
- `mdx` for MDX
|
||||
- `jsx` for JSX
|
||||
- `json` for JSON
|
||||
|
||||
|
||||
|
||||
- `js` for Javascript code
|
||||
- `markdown` for Markdown
|
||||
- `html` for HTML
|
||||
- `svg` for SVG
|
||||
- `bash` for Bash or shell scripts
|
||||
- `mdx` for MDX
|
||||
- `jsx` for JSX
|
||||
- `json` for JSON
|
||||
|
|
|
@ -3,7 +3,7 @@ title: Custom components
|
|||
order: 90
|
||||
---
|
||||
|
||||
The way we render markdown on our websites is through the use of [MDX](https://mdxjs.com/).
|
||||
The way we render markdown on our websites is through the use of [MDX](https://mdxjs.com/).\
|
||||
This allows us to extend Markdown with our own so-called *custom components*.
|
||||
|
||||
Such custom components allow us to put things in Markdown content that would
|
||||
|
@ -42,7 +42,6 @@ The **Comment** component requires a `by` attribute that lists the author of the
|
|||
<Comment by="joost">**Do** try this at home</Comment>
|
||||
```
|
||||
|
||||
|
||||
## Fixme
|
||||
|
||||
<Fixme>
|
||||
|
@ -62,7 +61,6 @@ or can't fix it now.
|
|||
</Fixme>
|
||||
```
|
||||
|
||||
|
||||
## Note
|
||||
|
||||
<Note>
|
||||
|
@ -91,6 +89,7 @@ It's typically used on overview pages, such as out [markdown guide](/guides/mark
|
|||
It won't show anything on this page, since this page has not child-pages.
|
||||
|
||||
## Related
|
||||
|
||||
<Related>
|
||||
This snippet is provided by [the buttons plugin](/reference/plugins/buttons)
|
||||
</Related>
|
||||
|
@ -104,6 +103,7 @@ Use **Related** to add something that is relevant to the current topic.
|
|||
```
|
||||
|
||||
## Tip
|
||||
|
||||
<Tip>
|
||||
Comparing yourself to others is the fastest way to become unhappy
|
||||
</Tip>
|
||||
|
@ -117,6 +117,7 @@ Use **Tip** for, you know, tips.
|
|||
```
|
||||
|
||||
## Warning
|
||||
|
||||
<Warning>
|
||||
##### Please make a backup
|
||||
Following these instructions will remove all your data
|
||||
|
@ -142,7 +143,7 @@ Embed a video:
|
|||
```markdown
|
||||
<YouTube id='Rz6ShSftDlI' />
|
||||
```
|
||||
|
||||
|
||||
Embed a playlist:
|
||||
|
||||
<YouTube id='PL1gv5yv3DoZOFSXz7yydeV1H8m6pfwstn' playlist />
|
||||
|
@ -150,6 +151,3 @@ Embed a playlist:
|
|||
```md
|
||||
<YouTube id='PL1gv5yv3DoZOFSXz7yydeV1H8m6pfwstn' playlist />
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ goals:
|
|||
- Learn about the different custom components
|
||||
---
|
||||
|
||||
Markdown is a lightweight markup language with plain text formatting syntax.
|
||||
Markdown is a lightweight markup language with plain text formatting syntax.
|
||||
It is designed to be easily readable by humans, and computers alike.
|
||||
|
||||
Markdown is often used to format documentation, online comments,
|
||||
|
@ -24,6 +24,5 @@ In this guide, we'll look at the following topics:
|
|||
|
||||
<ReadMore list />
|
||||
|
||||
This will be enough to get you started. If you'd like to learn more,
|
||||
This will be enough to get you started. If you'd like to learn more,
|
||||
visit [markdownguide.org](https://www.markdownguide.org/).
|
||||
|
||||
|
|
|
@ -7,33 +7,33 @@ Some things to keep in mind when working in Markdown are:
|
|||
|
||||
## Use remark-jargon for glossary terms
|
||||
|
||||
There is no need to add a *glossary* section to documentation.
|
||||
We use a plugin called [remark-jargon][rj] to explain terms.
|
||||
There is no need to add a *glossary* section to documentation.
|
||||
We use a plugin called [remark-jargon][rj] to explain terms.
|
||||
Information can be found at the link.
|
||||
|
||||
[rj]: https://github.com/freesewing/freesewing/blob/develop/packages/remark-jargon/README.md
|
||||
|
||||
## Let lists be lists
|
||||
|
||||
Please make sure to use Markdown proper, doing things such as hardcoding
|
||||
numbers for lists and using `·` for bulleted lists won't be rendered
|
||||
properly and will be styled differently.
|
||||
Using Markdown in the same way for everything ensures the site and
|
||||
documentation look clean and professional. You can use a Markdown editor
|
||||
Please make sure to use Markdown proper, doing things such as hardcoding
|
||||
numbers for lists and using `·` for bulleted lists won't be rendered
|
||||
properly and will be styled differently.
|
||||
Using Markdown in the same way for everything ensures the site and
|
||||
documentation look clean and professional. You can use a Markdown editor
|
||||
like [StackEdit](https://stackedit.io/) to preview your text.
|
||||
|
||||
<Note>
|
||||
Github itself also allows working in Markdown and will give you a handy preview!
|
||||
</Note>
|
||||
|
||||
If you get lost or have a question about how to do something, feel free to come
|
||||
ask on the Discord. We've all had to learn Markdown at some point and would be
|
||||
delighted to pass knowledge on.
|
||||
If you get lost or have a question about how to do something, feel free to come
|
||||
ask on the Discord. We've all had to learn Markdown at some point and would be
|
||||
delighted to pass knowledge on.
|
||||
|
||||
## Create meaningful links
|
||||
|
||||
When adding links please do not link them using a structure like:
|
||||
Link [here][yt]. Instead put the link under the relevant term.
|
||||
When adding links please do not link them using a structure like:
|
||||
Link [here][yt]. Instead put the link under the relevant term.
|
||||
See first list item for an example.
|
||||
|
||||
[yt]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
||||
|
@ -42,22 +42,23 @@ See first list item for an example.
|
|||
|
||||
### Lining within the same website
|
||||
|
||||
When you are linking within freesewing.dev or freesewing.org you can use a relative link from
|
||||
the site root.
|
||||
When you are linking within freesewing.dev or freesewing.org you can use a relative link from
|
||||
the site root.\
|
||||
Use:
|
||||
|
||||
```text
|
||||
/guides/markdown/frequent-mistakes
|
||||
```
|
||||
instead of
|
||||
|
||||
instead of
|
||||
|
||||
```text
|
||||
https://freesewing.dev/guides/markdown/frequent-mistakes
|
||||
```
|
||||
```
|
||||
|
||||
### Linking images
|
||||
|
||||
Images can be put in the same folder you are working on with a link
|
||||
Images can be put in the same folder you are working on with a link
|
||||
to the filename. For example:
|
||||
|
||||
```markdown
|
||||
|
@ -66,16 +67,16 @@ This is [a picture of a banana](banana.jpg)
|
|||
|
||||
## Avoid ambiguity when lising a number of steps
|
||||
|
||||
If you're writing documentation that involves steps, please do not mix levels
|
||||
of steps. Steps written out in documentation are there to facilitate brainless
|
||||
If you're writing documentation that involves steps, please do not mix levels
|
||||
of steps. Steps written out in documentation are there to facilitate brainless
|
||||
execution. Don't be afraid to repeat yourself.
|
||||
|
||||
If you use substeps we want those substeps to take away ambiguity rather
|
||||
than introduce it into your instructions. In the next example the substep
|
||||
introduces something that ought to be done before the previous steps.
|
||||
This creates confusion about when that step ought to be executed.
|
||||
If you use substeps we want those substeps to take away ambiguity rather
|
||||
than introduce it into your instructions. In the next example the substep
|
||||
introduces something that ought to be done before the previous steps.
|
||||
This creates confusion about when that step ought to be executed.
|
||||
|
||||
An example of what not to do:
|
||||
An example of what not to do:
|
||||
|
||||
```md
|
||||
1. cut collar
|
||||
|
@ -87,18 +88,18 @@ An example of what not to do:
|
|||
|
||||
## Be mindful of whitespace
|
||||
|
||||
Markdown sytax around white space is a little unintuitive. If you want a
|
||||
paragraph break but no white space you need to add two spaces at the end of
|
||||
your line. I've found it helpful to experiment and keep checking the preview
|
||||
to see how things look. Not all the empty lines and whitespace in your
|
||||
document will render in the preview.
|
||||
Markdown sytax around white space is a little unintuitive. If you want a
|
||||
paragraph break but no white space you need to add two spaces at the end of
|
||||
your line. I've found it helpful to experiment and keep checking the preview
|
||||
to see how things look. Not all the empty lines and whitespace in your
|
||||
document will render in the preview.
|
||||
|
||||
## Using custom components
|
||||
|
||||
When you're using custom components you want to leave an empty line before
|
||||
and after your component.
|
||||
When you're using custom components you want to leave an empty line before
|
||||
and after your component.
|
||||
|
||||
```markdown
|
||||
```markdown
|
||||
Lorem ipsum dolor sit amet,
|
||||
|
||||
<Note>
|
||||
|
@ -108,9 +109,8 @@ consectetur adipisci elit,
|
|||
sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
|
||||
```
|
||||
|
||||
If you're using any markdown syntax within a custom component you want to also
|
||||
leave an empty line at the start and end of your component.
|
||||
|
||||
If you're using any markdown syntax within a custom component you want to also
|
||||
leave an empty line at the start and end of your component.
|
||||
|
||||
```markdown
|
||||
Lorem ipsum dolor sit amet,
|
||||
|
@ -125,11 +125,7 @@ sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
|
|||
```
|
||||
|
||||
## Don't be shy to ask a friend
|
||||
Learning a new language can be intimidating, whether its Javascript, Norse or
|
||||
Markdown but everyone in the Freesewing community is glad you're here and
|
||||
helping us make the site even more awesome.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Learning a new language can be intimidating, whether its Javascript, Norse or
|
||||
Markdown but everyone in the Freesewing community is glad you're here and
|
||||
helping us make the site even more awesome.
|
||||
|
|
|
@ -20,9 +20,8 @@ followed by a space and the image title between quotes.
|
|||
|
||||
##### Images go in the same folder as your markdown file
|
||||
|
||||
The convention is to always place your images in the same folder as the
|
||||
The convention is to always place your images in the same folder as the
|
||||
text where you are including the image. That way, you just need to specify
|
||||
the image name, and not the path to its location.
|
||||
|
||||
</Tip>
|
||||
|
||||
|
|
|
@ -7,10 +7,11 @@ order: 30
|
|||
You can make text *italic* or **bold**
|
||||
by wrapping it in 1 or 2 asterisk respectively.
|
||||
```
|
||||
|
||||
You can make text *italic* or **bold** by wrapping it in 1 or 2 asterisk respectively:
|
||||
|
||||
```md
|
||||
Alternatively, you can also use underscores to mark _italic_ or __bold__.
|
||||
```
|
||||
Alternatively, you can also use underscores to mark _italic_ or __bold__.
|
||||
|
||||
Alternatively, you can also use underscores to mark *italic* or **bold**.
|
||||
|
|
|
@ -11,6 +11,5 @@ Like
|
|||
this.
|
||||
```
|
||||
|
||||
Like
|
||||
Like\
|
||||
this.
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ Links combine square brackets for the link text with round brackets for the dest
|
|||
```md
|
||||
[Like this](https://freesewing.org)
|
||||
```
|
||||
|
||||
[Like this](https://freesewing.org)
|
||||
|
||||
An alternative notation allows you to include the links as such:
|
||||
|
@ -22,6 +23,7 @@ See [the reference documentation][1] on [freesewing.dev][2]
|
|||
See [the reference documentation][1] on [freesewing.dev][2]
|
||||
|
||||
[1]: https://freesewing.dev/reference
|
||||
|
||||
[2]: https://freesewing.dev/reference
|
||||
|
||||
You don't have to use numbers, but can also use named references.
|
||||
|
@ -35,4 +37,3 @@ We moved the markdown content to [our monorepo][monorepo]
|
|||
We moved the markdown content to [our monorepo][monorepo]
|
||||
|
||||
[monorepo]: https://github.com/freesewing/freesewing
|
||||
|
||||
|
|
|
@ -12,12 +12,12 @@ To make a list, just do as you would in plain text:
|
|||
- item
|
||||
```
|
||||
|
||||
- a bullet
|
||||
- list
|
||||
- a sublist
|
||||
- item
|
||||
- a bullet
|
||||
- list
|
||||
- a sublist
|
||||
- item
|
||||
|
||||
If you want an numbered list, just write numbers.
|
||||
If you want an numbered list, just write numbers.
|
||||
They don't even have to be the correct numbers:
|
||||
|
||||
```md
|
||||
|
@ -27,7 +27,6 @@ They don't even have to be the correct numbers:
|
|||
2. Item 3
|
||||
```
|
||||
|
||||
1. Item 1
|
||||
2. Item 2
|
||||
2. Item 3
|
||||
|
||||
1. Item 1
|
||||
2. Item 2
|
||||
3. Item 3
|
||||
|
|
|
@ -5,7 +5,6 @@ order: 70
|
|||
|
||||
If you need them, you can create tables too, using a structure as shown below:
|
||||
|
||||
|
||||
```md
|
||||
| Name | Description |
|
||||
| ---- | ----------- |
|
||||
|
@ -35,4 +34,3 @@ You can change the alignment of the columns by using a colon (`:`) on the line b
|
|||
| Compound | A substance composed of two or more elements. Chemically combined in definite proportions by weight |
|
||||
| Mixture | Two or more substances that are not chemically united, such as air |
|
||||
| Solution | A uniform mixture of varying proportions of a solvent and a solute |
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ You can just start writing.
|
|||
|
||||
An empty line starts a new paragraph.
|
||||
```
|
||||
|
||||
You can just start writing.
|
||||
|
||||
An empty line starts a new paragraph.
|
||||
|
||||
|
|
|
@ -12,11 +12,11 @@ The pattern configuration holds important information about the pattern
|
|||
A pattern's [configuration](/reference/config/) is created by the pattern designer
|
||||
and details a number of important things about the pattern, like:
|
||||
|
||||
- The **measurements** that are required to draft the pattern
|
||||
- The different **parts** in the pattern and how they depend on each other
|
||||
- The different **options** that are available to tweak the pattern
|
||||
- The **measurements** that are required to draft the pattern
|
||||
- The different **parts** in the pattern and how they depend on each other
|
||||
- The different **options** that are available to tweak the pattern
|
||||
|
||||
The configuration is part of the pattern's code. It is created by the designer and
|
||||
The configuration is part of the pattern's code. It is created by the designer and
|
||||
it is the same for everybody using the pattern.
|
||||
In other words, you cannot change the configuration. Instead, the configuration
|
||||
specifies what kind of settings the pattern accepts.
|
||||
|
|
|
@ -3,12 +3,12 @@ title: How patterns work
|
|||
---
|
||||
|
||||
This short guide will illustrate and explain how patterns work in FreeSewing.
|
||||
Not to be confused with how sewing pattern work — although there's [great books
|
||||
about that](https://www.assembil.com/how-patterns-work-book/) if you're
|
||||
Not to be confused with how sewing pattern work — although there's [great books
|
||||
about that](https://www.assembil.com/how-patterns-work-book/) if you're
|
||||
interested — it's about what goes on under the hood each time a sewing
|
||||
pattern is generated by FreeSewing.
|
||||
|
||||
This illustration is a good starting point to gain a better
|
||||
This illustration is a good starting point to gain a better
|
||||
understanding of the structure of a FreeSewing pattern:
|
||||
|
||||
<Example part="docs_overview">
|
||||
|
@ -17,9 +17,9 @@ A schematic overview of FreeSewing
|
|||
|
||||
If we look at our image, it can be divided into three areas:
|
||||
|
||||
- The left area with the **settings** box
|
||||
- The middle area with the **Pattern** box and everything in it
|
||||
- The right area with the **draft** box and the *SVG* and *React* logos
|
||||
- The left area with the **settings** box
|
||||
- The middle area with the **Pattern** box and everything in it
|
||||
- The right area with the **draft** box and the *SVG* and *React* logos
|
||||
|
||||
Let's take a closer look at everything that is contained within our central **Pattern** box:
|
||||
|
||||
|
@ -34,5 +34,3 @@ application.
|
|||
That part is outside the scope of this guide.
|
||||
|
||||
</Note>
|
||||
|
||||
|
||||
|
|
|
@ -8,12 +8,11 @@ Parts divide your pattern into re-usable components
|
|||
</Example>
|
||||
|
||||
Parts are a container for the points, paths, and snippets of (a part of) your pattern.
|
||||
They are also re-usable by other patterns, which makes them a powerful tool to build
|
||||
They are also re-usable by other patterns, which makes them a powerful tool to build
|
||||
a pattern library.
|
||||
|
||||
If you design a T-shirt pattern with a `front`, `back`, and `sleeve`, each of those would be a part.
|
||||
If you then wanted to make a long-sleeved version of your T-shirt pattern, you only need to design
|
||||
If you then wanted to make a long-sleeved version of your T-shirt pattern, you only need to design
|
||||
a new sleeve part. You can re-use the `front` and `back` parts of your short-sleeved T-shirt pattern, as they did not change.
|
||||
|
||||
When developing a FreeSewing pattern, you will spend most of your time designing the individual parts.
|
||||
|
||||
|
|
|
@ -12,15 +12,15 @@ Paths are the lines and curves that make up your pattern.
|
|||
They are made up of a set of drawing operations that together make up the path.
|
||||
FreeSewing supports the following types of drawing operations:
|
||||
|
||||
- The **move** operation moves our virtual pen but does not draw anything.
|
||||
- The **line** operation draws a straight line
|
||||
- The **curve** operation draws a [Bézier curve](/guides/overview/about/beziercurves/)
|
||||
- The **close** operation closes the path
|
||||
- The **move** operation moves our virtual pen but does not draw anything.
|
||||
- The **line** operation draws a straight line
|
||||
- The **curve** operation draws a [Bézier curve](/guides/overview/about/beziercurves/)
|
||||
- The **close** operation closes the path
|
||||
|
||||
To crucial thing to keep in mind is that, with the exception of the **move** operation,
|
||||
all drawing operations start from wherever you are currently on your virtual sheet of paper.
|
||||
|
||||
For example, you might expect the **line** operation to take a start- and endpoint.
|
||||
For example, you might expect the **line** operation to take a start- and endpoint.
|
||||
But in fact, it only takes an endpoint, and will draw a straight line from where our virtual pen
|
||||
currently is to said endpoint.
|
||||
|
||||
|
@ -35,8 +35,7 @@ Understanding that each drawing operation builds upon the next one is an importa
|
|||
|
||||
<Tip>
|
||||
|
||||
Our example image (which, if you hadn't realized was created with FreeSewing) has a lot of
|
||||
Our example image (which, if you hadn't realized was created with FreeSewing) has a lot of
|
||||
paths in it. Each box, the arrows, the lines in the React logo, and so on.
|
||||
|
||||
</Tip>
|
||||
|
||||
|
|
|
@ -14,7 +14,6 @@ and the store.
|
|||
In reality, your pattern will be a *constructor* that takes the user's settings as
|
||||
input and will return a new instance of your pattern.
|
||||
|
||||
That pattern instance will have a `draft()` method which will do the actual work of
|
||||
drafting the pattern. Once drafted, you can either call the `render()` method on
|
||||
That pattern instance will have a `draft()` method which will do the actual work of
|
||||
drafting the pattern. Once drafted, you can either call the `render()` method on
|
||||
the pattern instance, or pass it to [our React component](/packages/components) to render it in the browser.
|
||||
|
||||
|
|
|
@ -14,25 +14,24 @@ Before we can draw any line, we need to know where it starts from, and where it
|
|||
That's why we have **points**. They are the most basic building block of a
|
||||
FreeSewing pattern, and their role is to store coordinates.
|
||||
|
||||
Each point must have:
|
||||
Each point must have:
|
||||
|
||||
- A **X-coordinate**
|
||||
- A **Y-coordinate**
|
||||
- A **X-coordinate**
|
||||
- A **Y-coordinate**
|
||||
|
||||
Together, these coordinates determine the location of the point in the 2-dimensional plane we're drawing on.
|
||||
|
||||
<Note>
|
||||
|
||||
Points are unlikely to confuse you. The only gotcha is [the
|
||||
coordinate system](/guides/prerequisites/coordinate-system/) which has a Y-axis that is inverted to what you
|
||||
coordinate system](/guides/prerequisites/coordinate-system/) which has a Y-axis that is inverted to what you
|
||||
may intuitively expect.
|
||||
|
||||
</Note>
|
||||
|
||||
<Tip>
|
||||
|
||||
Our example image (which, if you hadn't realized was created with FreeSewing) has a lot of
|
||||
Our example image (which, if you hadn't realized was created with FreeSewing) has a lot of
|
||||
points in it. The corners of the boxes, the location where the text goes, and so on.
|
||||
|
||||
</Tip>
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ Snippets are little embelishments that go on your pattern
|
|||
</Example>
|
||||
|
||||
Snippets are little embellishments you can use and re-use on your pattern.
|
||||
They are typically used for things like logos or buttons.
|
||||
They are typically used for things like logos or buttons.
|
||||
|
||||
Each snippet must have:
|
||||
|
||||
- An anchor point that determine where the snippet will be located
|
||||
- The name of the snippet to insert
|
||||
- An anchor point that determine where the snippet will be located
|
||||
- The name of the snippet to insert
|
||||
|
||||
Since our example image does not have any snippets in it, here's another example
|
||||
of a `button`, `buttonhole`, and `logo` snippet added to a FreeSewing pattern:
|
||||
|
@ -21,4 +21,3 @@ of a `button`, `buttonhole`, and `logo` snippet added to a FreeSewing pattern:
|
|||
<Example part="snippet">
|
||||
An example of the use of snippets
|
||||
</Example>
|
||||
|
||||
|
|
|
@ -11,4 +11,3 @@ The store provides key-value storage that is shared across your pattern.
|
|||
|
||||
If you have some information in one part that you want to make available
|
||||
outside that part (in another part) you can save it to the store.
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ const condition = settings => {
|
|||
else return false // Do not load the plugin
|
||||
}
|
||||
```
|
||||
|
||||
You pass your plugin and condition method as a third parameter to the Design constructor
|
||||
with the `plugin` and `condition` keys respectively.
|
||||
|
||||
|
@ -50,16 +51,15 @@ const Pattern = new freesewing.Design(
|
|||
|
||||
Our condition method will return `true` only if the following conditions are met:
|
||||
|
||||
- A `settings` object is passed into the method
|
||||
- `settings.options` is _truthy_
|
||||
- `settings.options.draftForHighBust` is _truthy_
|
||||
- `settings.options.measurements.highBust` is _truthy_
|
||||
- A `settings` object is passed into the method
|
||||
- `settings.options` is *truthy*
|
||||
- `settings.options.draftForHighBust` is *truthy*
|
||||
- `settings.options.measurements.highBust` is *truthy*
|
||||
|
||||
This is a real-world example from our Teagan pattern. A t-shirt pattern that can be
|
||||
drafted to the high bust (rather than the full chest circumference) if the user
|
||||
drafted to the high bust (rather than the full chest circumference) if the user
|
||||
choses so.
|
||||
|
||||
But that feat is handled auto-magically by `plugin-bust` which is a build-time plugin.
|
||||
So whether to load this plugin or not hinges on the user settings, which is why we
|
||||
load this plugin conditionally.
|
||||
|
||||
|
|
|
@ -5,17 +5,16 @@ order: 60
|
|||
|
||||
A **hook** is a lifecycle event. The available hooks are:
|
||||
|
||||
- [preRender](/reference/hooks/prerender/): Called at the start of [`Pattern.render()`](/reference/api/pattern#render)
|
||||
- [postRender](/reference/hooks/postrender/): Called at the end of [`Pattern.render()`](/reference/api/pattern#render)
|
||||
- [insertText](/reference/hooks/inserttext/): Called when inserting text
|
||||
- [preDraft](/reference/hooks/predraft/): Called at the start of [`Pattern.draft()`](/reference/api/pattern#draft)
|
||||
- [postDraft](/reference/hooks/postdraft/): Called at the end of [`Pattern.draft()`](/reference/api/pattern#draft)
|
||||
- [preSample](/reference/hooks/presample/): Called at the start of [`Pattern.sample()`](/reference/api/pattern#sample)
|
||||
- [postSample](/reference/hooks/postsample/): Called at the end of [`Pattern.sample()`](/reference/api/pattern#sample)
|
||||
- [preRender](/reference/hooks/prerender/): Called at the start of [`Pattern.render()`](/reference/api/pattern#render)
|
||||
- [postRender](/reference/hooks/postrender/): Called at the end of [`Pattern.render()`](/reference/api/pattern#render)
|
||||
- [insertText](/reference/hooks/inserttext/): Called when inserting text
|
||||
- [preDraft](/reference/hooks/predraft/): Called at the start of [`Pattern.draft()`](/reference/api/pattern#draft)
|
||||
- [postDraft](/reference/hooks/postdraft/): Called at the end of [`Pattern.draft()`](/reference/api/pattern#draft)
|
||||
- [preSample](/reference/hooks/presample/): Called at the start of [`Pattern.sample()`](/reference/api/pattern#sample)
|
||||
- [postSample](/reference/hooks/postsample/): Called at the end of [`Pattern.sample()`](/reference/api/pattern#sample)
|
||||
|
||||
You can register a method for a hook. When the hook is triggered, your method will be
|
||||
called. It will receive two parameters:
|
||||
|
||||
- An object relevant to the hook. See the [hooks API reference](/reference/hooks/) for details.
|
||||
- Data passed when the hook was registered (optional)
|
||||
|
||||
- An object relevant to the hook. See the [hooks API reference](/reference/hooks/) for details.
|
||||
- Data passed when the hook was registered (optional)
|
||||
|
|
|
@ -3,7 +3,7 @@ title: Loading build-time plugins
|
|||
order: 20
|
||||
---
|
||||
|
||||
Build-time plugins are loaded at build time, by passing them to
|
||||
Build-time plugins are loaded at build time, by passing them to
|
||||
the [`freesewing.Design`](/reference/api/#design) constructor:
|
||||
|
||||
```js
|
||||
|
@ -24,4 +24,3 @@ import config from "../config"
|
|||
|
||||
const Pattern = new freesewing.Design(config, [plugins, gorePlugin] )
|
||||
```
|
||||
|
||||
|
|
|
@ -22,5 +22,3 @@ const myAaron = new Aaron()
|
|||
Plugins that use only hooks are typically run-time plugins
|
||||
|
||||
</Tip>
|
||||
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@ order: 90
|
|||
|
||||
Plugin structure for macros is similar, with a few changes:
|
||||
|
||||
- Rather than the hook name, you provide the macro name (that you choose yourself)
|
||||
- The context (`this`) of a macro method is **always** a [Part](/reference/api/part) object.
|
||||
- Rather than the hook name, you provide the macro name (that you choose yourself)
|
||||
- The context (`this`) of a macro method is **always** a [Part](/reference/api/part) object.
|
||||
|
||||
Apart from these, the structure is very similar:
|
||||
|
||||
|
@ -35,7 +35,7 @@ export default {
|
|||
}
|
||||
```
|
||||
|
||||
Did you figure out what this plugin does?
|
||||
Did you figure out what this plugin does?
|
||||
It provides a `box` macro that draws a box on our pattern in a given location with a give size.
|
||||
|
||||
We can use it like this:
|
||||
|
@ -48,7 +48,7 @@ macro('box', {
|
|||
});
|
||||
```
|
||||
|
||||
Obviously, you can expect to learn how to call a macro in its documentation,
|
||||
Obviously, you can expect to learn how to call a macro in its documentation,
|
||||
rather than have to comb through its code.
|
||||
|
||||
<Note>
|
||||
|
@ -61,4 +61,3 @@ to a macro needs to be contained in a single argument.
|
|||
Typically, you use a single plain object to configure the macro.
|
||||
|
||||
</Note>
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@ title: Plugin structure
|
|||
order: 50
|
||||
---
|
||||
|
||||
Plugins can do two things:
|
||||
Plugins can do two things:
|
||||
|
||||
- They can use hooks
|
||||
- They can provide macros
|
||||
- They can use hooks
|
||||
- They can provide macros
|
||||
|
||||
Your plugin should export an object with the following structure:
|
||||
|
||||
|
@ -19,7 +19,6 @@ Your plugin should export an object with the following structure:
|
|||
};
|
||||
```
|
||||
|
||||
The `name` and `version` attributes are self-explanatory.
|
||||
The `name` and `version` attributes are self-explanatory.
|
||||
The [hooks](/guides/plugins/hooks/) and [macros](/guides/plugins/macros/) sections
|
||||
explain the `hooks` and `macros` properties.
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@ order: 10
|
|||
|
||||
Plugins come in two flavours:
|
||||
|
||||
- [Build-time plugins](#build-time-plugins)
|
||||
- [Run-time plugins](#run-time-plugins)
|
||||
- [Build-time plugins](#build-time-plugins)
|
||||
- [Run-time plugins](#run-time-plugins)
|
||||
|
||||
When writing a plugin, ask yourself whether it's a run-time or a build-time plugin.
|
||||
And if the answer is both, please split them into two plugins.
|
||||
|
@ -25,14 +25,12 @@ Our [plugin bundle](/reference/plugins/bundle/) bundles build-time plugins that
|
|||
|
||||
<Note>Plugins that provide a macro are typically build-time plugins</Note>
|
||||
|
||||
|
||||
## Run-time plugins
|
||||
|
||||
A plugin is a run-time plugin if it can be added after instantiating your pattern.
|
||||
Think of it as a plugin to be used in the front-end.
|
||||
|
||||
Run-time plugins are not a dependecy of the pattern. They just _add something_ to it.
|
||||
Run-time plugins are not a dependecy of the pattern. They just *add something* to it.
|
||||
|
||||
Our [theme plugin](/reference/plugins/theme/) is a good example of a run-time plugin.
|
||||
If it's missing, your pattern will still work, it just won't look pretty.
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ title: Using hooks without a plugin
|
|||
order: 85
|
||||
---
|
||||
|
||||
You can attach a method to a hook at run-time without the need for a plugin
|
||||
You can attach a method to a hook at run-time without the need for a plugin
|
||||
using the [Pattern.on()](/reference/api/pattern/on) method.
|
||||
|
||||
The method takes the hook name as its first argument, and the hook method as its second.
|
||||
|
@ -17,4 +17,3 @@ pattern.on('preRender', function(svg) {
|
|||
```
|
||||
|
||||
Congratulations, you've just made your pattern yellow.
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ that as the second object.
|
|||
|
||||
Remember that:
|
||||
|
||||
- The `insertText` hook will receive a locale and string and you should return a string.
|
||||
- All other hooks receive an object. You don't need to return anything, but rather modify the object you receive.
|
||||
- The `insertText` hook will receive a locale and string and you should return a string.
|
||||
- All other hooks receive an object. You don't need to return anything, but rather modify the object you receive.
|
||||
|
||||
Let's look at an example:
|
||||
|
||||
|
@ -39,8 +39,8 @@ export default {
|
|||
|
||||
This is a complete plugin, ready to be published on NPM. It uses two hooks:
|
||||
|
||||
- `preRender` : We add some style and defs to our SVG
|
||||
- `insertText` : We transfer all text to UPPERCASE
|
||||
- `preRender` : We add some style and defs to our SVG
|
||||
- `insertText` : We transfer all text to UPPERCASE
|
||||
|
||||
<Note>
|
||||
|
||||
|
@ -52,8 +52,7 @@ the SVG tag with the name and version of our plugin.
|
|||
We check for this attribute when the `preRender` hook runs, thereby avoiding that
|
||||
our styles and defs will be added twice.
|
||||
|
||||
It is good practice to wrap you hook methods in a call like this, because you have
|
||||
It is good practice to wrap you hook methods in a call like this, because you have
|
||||
no guarantee the user won't render your pattern more than once.
|
||||
|
||||
</Note>
|
||||
|
||||
|
|
|
@ -3,40 +3,38 @@ title: Understanding Bézier curves
|
|||
order: 50
|
||||
---
|
||||
|
||||
While lines on computers are easy to store with a start and end point,
|
||||
While lines on computers are easy to store with a start and end point,
|
||||
curves require more information.
|
||||
In FreeSewing — as in SVG and countless of other computer applications —
|
||||
curves are stored as [Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve),
|
||||
named after French engineer [Pierre Bézier](https://en.wikipedia.org/wiki/Pierre_B%C3%A9zier) who
|
||||
curves are stored as [Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve),
|
||||
named after French engineer [Pierre Bézier](https://en.wikipedia.org/wiki/Pierre_B%C3%A9zier) who
|
||||
popularized their use back in the 1960s.
|
||||
|
||||
In FreeSewing, we use so-called cubic Bézier curves which have:
|
||||
|
||||
- A start point
|
||||
- A first control point that’s linked to the start point
|
||||
- A second control point that’s linked to the end point
|
||||
- An end point
|
||||
- A start point
|
||||
- A first control point that’s linked to the start point
|
||||
- A second control point that’s linked to the end point
|
||||
- An end point
|
||||
|
||||
<Example settings_complete="0" part="path_curve">
|
||||
An example of a Bézier curve drawn by the Path.curve() method
|
||||
</Example>
|
||||
|
||||
Bézier curves and their *handles* or *control points* are surprisingly intuitive.
|
||||
Bézier curves and their *handles* or *control points* are surprisingly intuitive.
|
||||
The following illustration does a great job at explaining how they are constructed:
|
||||
|
||||

|
||||
|
||||
You don't need understand the mathematics behind Bézier Curves.
|
||||
You don't need understand the mathematics behind Bézier Curves.
|
||||
As long as you intuitively *get* how the control points influence the curve, you're good to go.
|
||||
|
||||
<Note>
|
||||
|
||||
###### More on Bézier curves
|
||||
|
||||
Wikipedia has a good [introduction to Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve).
|
||||
For a deep-dive into the subject, check out [A Primer on Bézier Curves](https://pomax.github.io/bezierinfo/) by
|
||||
Wikipedia has a good [introduction to Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve).\
|
||||
For a deep-dive into the subject, check out [A Primer on Bézier Curves](https://pomax.github.io/bezierinfo/) by
|
||||
[Pomax](https://github.com/Pomax).
|
||||
|
||||
|
||||
</Note>
|
||||
|
||||
|
|
|
@ -24,4 +24,3 @@ This is a common point of confusion so keep in mind that the Y-axis may
|
|||
not behave as you would have intuitively expected.
|
||||
|
||||
</Note>
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ goals:
|
|||
---
|
||||
|
||||
Drawing lines and curves on paper is a skill most people have been practicing since kindergarten.
|
||||
In FreeSewing, we draw lines and curves with code, which is a bit more abstract
|
||||
In FreeSewing, we draw lines and curves with code, which is a bit more abstract
|
||||
but doesn't have to be complicated once you understand a few basic building blocks.
|
||||
|
||||
Understanding the concepts that are involved in designing sewing patterns in code will pay dividents later.
|
||||
|
@ -30,12 +30,11 @@ That is why we recommend you familiarize yourself with the following topics:
|
|||
|
||||
FreeSewing sits at the intersection of the world of makers and developers.
|
||||
If your background is in development, you will need no explaining what SVG is, but might not
|
||||
know much about designing sewing patterns.
|
||||
know much about designing sewing patterns.
|
||||
If on the other hand your background is in sewing or pattern design, you might wonder what
|
||||
the heck Node JS is and why you should care.
|
||||
|
||||
Few people straddle both worlds, so as you start using FreeSewing, chances are
|
||||
you'll learn a few new things along the way.
|
||||
Few people straddle both worlds, so as you start using FreeSewing, chances are
|
||||
you'll learn a few new things along the way.
|
||||
|
||||
</Note>
|
||||
|
||||
|
|
|
@ -6,10 +6,9 @@ order: 20
|
|||
Patterns are rendered as **SVG** — short
|
||||
for [Scalable Vector Graphics](https://en.wikipedia.org/wiki/Scalable_Vector_Graphics) —
|
||||
an XML-based vector image format and an open standard.
|
||||
While you don’t need to be an SVG expert, a basic understanding of the format
|
||||
While you don’t need to be an SVG expert, a basic understanding of the format
|
||||
will greatly help you to understand FreeSewing.
|
||||
|
||||
For example, the coordinate system and the way paths
|
||||
are structured are all related to the SVG drawing system, which is closely related
|
||||
to other 2D drawing technologies such as PostScript or PDF.
|
||||
|
||||
|
|
|
@ -3,14 +3,12 @@ title: Units in FreeSewing
|
|||
order: 40
|
||||
---
|
||||
|
||||
FreeSewing uses millimeter for all its internal units.
|
||||
FreeSewing uses millimeter for all its internal units.
|
||||
We do support both imperial and metrics units, which are displayed
|
||||
as cm or inch, but under the hood everything is handled in millimeter.
|
||||
|
||||
So as a pattern designer, you will work with mm.
|
||||
When you write `1`, that’s one mm. When you write `7.8`, that’s 7.8mm.
|
||||
|
||||
While you can use cm or inch on the FreeSewing website, that is merely a layer of
|
||||
While you can use cm or inch on the FreeSewing website, that is merely a layer of
|
||||
abstration on top of the internal units, which are always mm.
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ title: Translation guide
|
|||
Freesewing.org is proudly multilingual, and we currently support five languges.
|
||||
For this, we rely on the work of our translators who volunteer their
|
||||
time to translate FreeSewing into various languages from English, which
|
||||
is our source language.
|
||||
is our source language.
|
||||
|
||||
This translation guide will tell you everything you need to
|
||||
know to join the effort as a translator for FreeSewing.
|
||||
|
@ -14,7 +14,7 @@ know to join the effort as a translator for FreeSewing.
|
|||
|
||||
##### TL;DR: Becoming a FreeSewing translator
|
||||
|
||||
Our translation project on Crowdin is accessible
|
||||
Our translation project on Crowdin is accessible
|
||||
via [translate.freesewing.org](https://translate.freesewing.org).
|
||||
|
||||
To get started, you will need to be invited as a translator. No need to worry,
|
||||
|
@ -27,16 +27,15 @@ Bonus: You'll get an `@freesewing.org` email alias
|
|||
|
||||
</Tip>
|
||||
|
||||
|
||||
## Languages
|
||||
|
||||
We currently support the following five languages:
|
||||
|
||||
- **en** : English
|
||||
- **de** : German
|
||||
- **es** : Spanish
|
||||
- **fr** : French
|
||||
- **nl** : Dutch
|
||||
- **en** : English
|
||||
- **de** : German
|
||||
- **es** : Spanish
|
||||
- **fr** : French
|
||||
- **nl** : Dutch
|
||||
|
||||
<Note>
|
||||
|
||||
|
@ -50,8 +49,8 @@ please [come and talk to us on Discord](https://discord.freesewing.org).
|
|||
|
||||
We use two different tools to manage our translations, depending on the context:
|
||||
|
||||
- Markdown content and code strings in our monorepo are translated within **Crowdin**
|
||||
- Blog and showcase posts are translated within **Strapi**
|
||||
- Markdown content and code strings in our monorepo are translated within **Crowdin**
|
||||
- Blog and showcase posts are translated within **Strapi**
|
||||
|
||||
<Tip>
|
||||
|
||||
|
@ -59,7 +58,7 @@ We use two different tools to manage our translations, depending on the context:
|
|||
|
||||
If you'd like to help out, please join our translation team on Crowdin.
|
||||
|
||||
While it can be nice to have blog and showcase posts translated, these are less important than the
|
||||
While it can be nice to have blog and showcase posts translated, these are less important than the
|
||||
translation work in Crowdin which is about the documentation and strings that allow people to
|
||||
use FreeSewing.org in a different language.
|
||||
|
||||
|
@ -84,7 +83,7 @@ Strapi ([strapi.io](https://strapi.io/)) is a so-called *headless content manage
|
|||
Headless just means that we load the content from it via an API, rather than have it be part of our
|
||||
website like a classic CMS (eg. Wordpress).
|
||||
|
||||
In Strapi, we keep our blog posts and showcases for FreeSewing.org.
|
||||
In Strapi, we keep our blog posts and showcases for FreeSewing.org.
|
||||
We also keep our newsletter editions there and developer blog posts for FreeSewing.dev there, but since
|
||||
those are not translated, we will ignore them in this guide.
|
||||
|
||||
|
@ -129,8 +128,6 @@ These will be filled in later with the correct value. For example:
|
|||
|
||||
looks like this in Spanish
|
||||
|
||||
|
||||
```yaml
|
||||
{field} guardado
|
||||
```
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue