2.6 KiB
In MycorrhizaWiki mycelia are used to organize hyphae in related namespaces.
Mycelium traits
- Every mycelium has any number (0..∞) of hyphae.
- Every hypha is part of one mycelium.
- Every mycelium has one canonical name and any number of synonyms.
- Every wiki has one main mycelium.
- They are named by the same scheme as hyphae but they have a colon prefix.
Mycelium URL
- Address a hypha in a particular mycelium:
/:sys/about
. - Address subpage of the hypha above:
/:sys/about/more
- Address a hypha in the main mycelium:
/How/does it work
. - Address a hypha in the main mycelium explicitly:
/:main/How/does it work
.
Mycelium configuration
In your config.json
, in "mycelia"
field there is an array of objects.
{
...
"mycelia": [
{
"names": ["main"],
"type": "main"
},
{
"names": ["sys", "system"],
"type": "system"
},
{
"names": ["spec", "special"],
"type": "special"
},
{
"names": ["user","u"],
"type": "user"
},
{
"names": ["tag", "t"],
"type": "tag"
}
]
...
}
Each object reprents a mycelium. You can set all their names there. First name in each "names"
array is a canonical name for the mycelium.
Field "type"
sets the mycelium's type. There are such types:
| Type | Description |
| main
| The main mycelium. There must be exactly one such mycelium in a wiki. |
| system
| Things like scripts, styles and templates go here. There must be exactly one such mycelium in a wiki. |
| special
| Things like utility hyphae and plugin pages go here. It is optional because there are no hyphae or plugins now. |
| user
| Userpages. It is optional because there are no users now. |
| tag
| Pages describing tags. It is optional because there are no tags now. |
| other
| Mycelia without any additional meaning added by the engine. There can be any number of them. |
How are they stored in the filesystem.
For example, wiki
is your wiki directory and you have configured the mycelia like in the example above. You should have structure like that:
wiki/
config.json ← your configuration
favicon.ico ← your site icon
main/ ← :main, <empty prefix>
...most of content goes here
sys/ ← :sys
...themes go here
spec/ ← :spec
...something goes here
user/ ← :user, :u
...user pages go here
tag/ ← :tag, :t
...pages describing tags go here
There are usual hypha directories inside those mycelial directories.
Code
- Things related to reading the
config.json
go to thecfg
module. - Most of code related to mycelia is in the
fs
module. - And also check out
handlers.go
andmain.go
for routing of mycelia.