Improve docs (#90)

* Add method

* Remove unnecessary shadowed variable

* Separate pages
This commit is contained in:
Marcus 2024-07-28 03:06:09 +02:00 committed by GitHub
parent 49305f73dd
commit a3eb2cddc3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 203 additions and 193 deletions

View file

@ -2,56 +2,66 @@ import { defineConfig } from 'vitepress'
// https://vitepress.dev/reference/site-config // https://vitepress.dev/reference/site-config
export default defineConfig({ export default defineConfig({
title: "Jecs", title: "Jecs",
base: "/jecs/", base: "/jecs/",
description: "A VitePress Site", description: "A VitePress Site",
themeConfig: { themeConfig: {
// https://vitepress.dev/reference/default-theme-config // https://vitepress.dev/reference/default-theme-config
nav: [ nav: [
{ text: 'Home', link: '/' }, { text: 'Home', link: '/' },
{ text: 'Examples', link: '/markdown-examples' } { text: 'Examples', link: '/markdown-examples' },
], { text: 'API', link: '/api/jecs.md' }
],
sidebar: [ sidebar: {
{ "/api/": [
text: 'Overview', {
items: [ text: "API reference",
{ text: 'Getting Started', link: '/overview/get-started' }, items: [
{ text: 'First Jecs Project', link: '/overview/first-jecs-project' } { text: "jecs", link: "/api/jecs" },
] { text: "World", link: "/api/world" },
}, { text: "Query", link: "/api/query" }
{ ]
text: 'Concepts', }
items: [ ],
{ text: 'Entities', link: '/concepts/entities' }, "/learn/": [
{ text: 'Static Components', link: '/concepts/static-components' }, {
{ text: 'Queries', link: '/concepts/queries' }, text: "Introduction",
] items: [
}, { text: 'Getting Started', link: '/overview/get-started' },
{ { text: 'First Jecs Project', link: '/overview/first-jecs-project' }
text: 'References', ]
items: [ },
{ text: 'API Reference', link: '/api' }, {
] text: 'Concepts',
}, items: [
{ { text: 'Entities', link: '/concepts/entities' },
text: "FAQ", { text: 'Static Components', link: '/concepts/static-components' },
items: [ { text: 'Queries', link: '/concepts/queries' },
{ text: 'How can I contribute?', link: '/faq/contributing' } ]
] },
}, {
{ text: "FAQ",
text: 'Contributing', items: [
items: [ { text: 'How can I contribute?', link: '/faq/contributing' }
{ text: 'Contribution Guidelines', link: '/contributing/guidelines'}, ]
{ text: 'Submitting Issues', link: '/contributing/issues'}, },
{ text: 'Submitting Pull Requests', link: '/contributing/pull-requests'},
]
}
],
socialLinks: [ ],
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' } "/contributing/": [
] {
} text: 'Contributing',
items: [
{ text: 'Contribution Guidelines', link: '/contributing/guidelines' },
{ text: 'Submitting Issues', link: '/contributing/issues' },
{ text: 'Submitting Pull Requests', link: '/contributing/pull-requests' },
]
}
]
},
socialLinks: [
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
]
}
}) })

View file

@ -1,3 +0,0 @@
## TODO
This is a TODO stub.

View file

@ -1,3 +0,0 @@
## TODO
This is a TODO stub.

View file

@ -1,3 +0,0 @@
## TODO
This is a TODO stub.

View file

@ -0,0 +1,3 @@
## TODO
This is a TODO stub.

View file

@ -0,0 +1,3 @@
## TODO
This is a TODO stub.

View file

@ -0,0 +1,3 @@
## TODO
This is a TODO stub.

View file

@ -0,0 +1,3 @@
## TODO
This is a TODO stub.

View file

@ -1,130 +1,130 @@
# Getting Started # Getting Started
## Installation ## Installation
### Installing Standalone ### Installing Standalone
Navigate to the [releases page](https://github.com/Ukendio/jecs/releases) and download `jecs.rbxm` from the assets. Navigate to the [releases page](https://github.com/Ukendio/jecs/releases) and download `jecs.rbxm` from the assets.
![jecs.rbxm](rbxm.png) ![jecs.rbxm](rbxm.png)
### Using Wally ### Using Wally
Add the following to your wally configuration: Add the following to your wally configuration:
::: code-group ::: code-group
```toml [wally.toml] ```toml [wally.toml]
jecs = "ukendio/jecs@0.2.3" jecs = "ukendio/jecs@0.2.3"
``` ```
::: :::
### Using npm (roblox-ts) ### Using npm (roblox-ts)
Use one of the following commands on your root project directory: Use one of the following commands on your root project directory:
::: code-group ::: code-group
```bash [npm] ```bash [npm]
npm i https://github.com/Ukendio/jecs.git npm i https://github.com/Ukendio/jecs.git
``` ```
```bash [yarn] ```bash [yarn]
yarn add https://github.com/Ukendio/jecs.git yarn add https://github.com/Ukendio/jecs.git
``` ```
```bash [pnpm] ```bash [pnpm]
pnpm add https://github.com/Ukendio/jecs.git pnpm add https://github.com/Ukendio/jecs.git
``` ```
::: :::
## Example Usage ## Example Usage
::: code-group ::: code-group
```luau [Luau] ```luau [Luau]
local world = jecs.World.new() local world = jecs.World.new()
local pair = jecs.pair local pair = jecs.pair
local Wildcard = jecs.Wildcard local Wildcard = jecs.Wildcard
local Name = world:component() local Name = world:component()
local function getName(e) local function getName(e)
return world:get(e, Name) return world:get(e, Name)
end end
local Eats = world:component() local Eats = world:component()
-- Relationship objects -- Relationship objects
local Apples = world:component() local Apples = world:component()
-- components are entities, so you can add components to components -- components are entities, so you can add components to components
world:set(Apples, Name, "apples") world:set(Apples, Name, "apples")
local Oranges = world:component() local Oranges = world:component()
world:set(Oranges, Name, "oranges") world:set(Oranges, Name, "oranges")
local bob = world:entity() local bob = world:entity()
-- Pairs can be constructed from two entities -- Pairs can be constructed from two entities
world:set(bob, pair(Eats, Apples), 10) world:set(bob, pair(Eats, Apples), 10)
world:set(bob, pair(Eats, Oranges), 5) world:set(bob, pair(Eats, Oranges), 5)
world:set(bob, Name, "bob") world:set(bob, Name, "bob")
local alice = world:entity() local alice = world:entity()
world:set(alice, pair(Eats, Apples), 4) world:set(alice, pair(Eats, Apples), 4)
world:set(alice, Name, "alice") world:set(alice, Name, "alice")
for id, amount in world:query(pair(Eats, Wildcard)) do for id, amount in world:query(pair(Eats, Wildcard)) do
-- get the second target of the pair -- get the second target of the pair
local food = world:target(id, Eats) local food = world:target(id, Eats)
print(string.format("%s eats %d %s", getName(id), amount, getName(food))) print(string.format("%s eats %d %s", getName(id), amount, getName(food)))
end end
-- Output: -- Output:
-- bob eats 10 apples -- bob eats 10 apples
-- bob eats 5 pears -- bob eats 5 pears
-- alice eats 4 apples -- alice eats 4 apples
``` ```
```ts [Typescript] ```ts [Typescript]
import { Wildcard, pair, World } from "@rbxts/jecs" import { Wildcard, pair, World } from "@rbxts/jecs"
const world = new World() const world = new World()
const Name = world.component() const Name = world.component()
function getName(e) { function getName(e) {
return world.get(e, Name) return world.get(e, Name)
} }
const Eats = world.component() const Eats = world.component()
// Relationship objects // Relationship objects
const Apples = world.component() const Apples = world.component()
// components are entities, so you can add components to components // components are entities, so you can add components to components
world.set(Apples, Name, "apples") world.set(Apples, Name, "apples")
const Oranges = world.component() const Oranges = world.component()
world.set(Oranges, Name, "oranges") world.set(Oranges, Name, "oranges")
const bob = world.entity() const bob = world.entity()
// Pairs can be constructed from two entities // Pairs can be constructed from two entities
world.set(bob, pair(Eats, Apples), 10) world.set(bob, pair(Eats, Apples), 10)
world.set(bob, pair(Eats, Oranges), 5) world.set(bob, pair(Eats, Oranges), 5)
world.set(bob, Name, "bob") world.set(bob, Name, "bob")
const alice = world.entity() const alice = world.entity()
world.set(alice, pair(Eats, Apples), 4) world.set(alice, pair(Eats, Apples), 4)
world.set(alice, Name, "alice") world.set(alice, Name, "alice")
for (const [id, amount] of world.query(pair(Eats, Wildcard))) { for (const [id, amount] of world.query(pair(Eats, Wildcard))) {
// get the second target of the pair // get the second target of the pair
const food = world:target(id, Eats) const food = world:target(id, Eats)
print(string.format("%s eats %d %s", getName(id), amount, getName(food))) print(string.format("%s eats %d %s", getName(id), amount, getName(food)))
} }
// Output: // Output:
// bob eats 10 apples // bob eats 10 apples
// bob eats 5 pears // bob eats 5 pears
// alice eats 4 apples // alice eats 4 apples
``` ```

View file

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View file

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View file

@ -1,3 +0,0 @@
## TODO
This is a TODO stub.