32 MOTIFS on 4/11/2021, 6:17:40 PM
Work on ideas.
motifs-js [GitHub] aims to explore the concepts of naming as well asgenerative design patterns.
Its current applications are :
- Static website building (see WEBSITE MOTIF),
- Documentation building (see README MOTIF),
- Unit-testing (see SPEC MOTIF).
Framework's conceptual entities, MOTIFS, let you embody projects' classes, components and logic.
Learn more about MOTIFS in the What is
motifs-js
? section.
Quickly, they start to form a language that you can use to build your applications and to share with your collaborators.
Learn more about
motifs-js
usage in the How to usemotifs-js
? section.
- My profesional website, rimarok.com,
- My creative hub, imrok.fr,
- A poetic artwork (in progress), highbs-bok.art,
- And even the
motifs-js
documentation website !
motifs-js
exposes a set of features which
help managing complexity in projects,
specifically website development.
By finding multiple and relevant purposes to code, as well as potent ways to interact with it, it helps organizations to exponentially increase the value of conception and development works.
MOTIFS starting point is their name
(or to be more exact, their unique contextual
id
property).
Like words define themselves by their relations with other words, MOTIFS are put together to shape a language.
This language can be extended in any consumer project, by simply adding new local custom MOTIFS.
See how to create a new MOTIF.
Connecting them allows your team to create powerful softwares, databases and knowledges.
- Statically import a MOTIF as an ESM module and consume its features.
Example :
import MOTIF from "motifs-js/_motif/motif/motif.motif.js"
MOTIF.init(url, options)
- Dynamically import a MOTIF using the
MOTIF.get()
method
Example :
import MOTIF from "motifs-js/_motif/motif/motif.motif.js"
const motifs = await MOTIF.get()
- (not implemented) MOTIFS' RELATION.
For now, the main application for the
motifs-js
is building WEBSITES'
folders and files tree.
See how to build and locally serve a WEBSITE.
MOTIFS abstract a lot of developement patterns and can be used to manipulate occurences of the concept they describe.
Some of the most common MOTIFS :
By retrieving the formalized concepts of your projects (built-in and customized MOTIFS), you are able to create glossaries on all your documentation platforms : README, wiki, WEBSITE.
See how to build the README.
Jump to MOTIFS' glossary section.
After retrieving, you can conditionaly shape and render MOTIFS that your project manipulates in order to create relevant views for different users and uses.
Check MOTIFS instances and logics against their specification, using the SPEC framework.
See how to Test the framework and project.
Plug framework's features to CI/CD pipelines through CLI COMMANDS.
List of tutorials :
- Installation,
- Create a new MOTIF,
- Test the framework and project,
- Build the README
- Build a WEBSITE
- Serve the WEBSITE locally
- Common
package.json
sripts binding
First, install the motifs-js
package in your project :
npm i motifs-js
Then, the common use case is to create an index.js
file
at the project root.
Content should be as follow :
import motifJs from 'motifs-js/index.js'
const MOTIF = motifJs(import.meta.url, { log: true })
MOTIF.cli(process.argv.slice(3), { log: true })
On the second line, MOTIF MOTIF is retrieved through
its "constructor", which in fact
black-box init
process.
The third line allows the motifs-js
CLI
to be ran using a package.json
binding :
"scripts": {
"start": "node index.js --"
}
Resulting in :
npm start -- -log test
npm start -- create <scope : '' | '...'> <motifId: string>
Creates a new MOTIF folders/files tree at given scope, structured as follow :
<scope>
+-- _motifs/
| +-- description
| | description.md
| +-- <motifId>.motif.js
Same-scope MOTIFS are put in a _motifs
folder.
description
is provisionned in MOTIF.get()
method
to be filled.
The <motifsId>.motifs.js
file holds a names
property
to be filled too.
There will be bound other new MOTIF's property.
See an example of a .motifs.js
file
(website-folder.motif.js
) :
import { EN, FR } from '../lang/_enums/lang.enum.js'
import shape from './shape/shape.js'
import build from './build/build.js'
import create from './create/create.js'
export default {
id: 'website-page',
names: {
[EN]: 'Page de site',
[FR]: 'Website page'
},
shape,
build,
create
}
names.prop.js
anddescription.prop.js
are pre-filled with temporary values.
You'll have to customize them through your IDE.
npm start -- [-log] test
Retrieves all files matching the SPEC OCCURENCES, and execute their content.
-log
prints all test assertions and results.
npm start -- -motif readme build
-motif
ou-m
targets a specific MOTIF (in this case README),build
is targeting the README "build" COMMAND.
npm start -- -m website build <websiteId:string>
Build the WEBSITE around
identified <websiteId>.website.js
file.
CLI currently doesn't support WEBSITE.build()
{ scope, dest }
options configuration.
The same way you build your WEBSITE you can serve it locally using the following command :
npm start -- -m website serve <websiteId:string>
Command starts a mini-Express application to delivers static content.
Here is the common shape of package.json
's
scripts
property :
"scripts": {
"start": "node index.js --",
"test": "npm start -- -log test",
"readme": "npm start -- -m readme -log build",
"website": "npm start -- -m website -log build en",
"serve": "npm start -- -m website -log serve en"
}
Now you can run commands like :
npm test
npm run website
npm run serve
article
: Article- ▥
book
: Book book-extract
: Extract, Fragment, Atombook-image
: Image, Picture, Illustration, Scanbook-page
: Pagebook-section
: Section, Chapter, Part- ⌿
command
: Command - ▼
description
: Description - ⎊
doc
: Documentation - ▤
file
: File - ◰
folder
: Folder folder-scope
: Scope, Perimeter- ⤶
get
: Accesser, Obtain, Hydrater - ⯎
global
: Identifier, instance name - ⚲
id
: Identifier, instance name - ⧇
instance
: Instance - ἀ
lang
: Language - ⚇
motif
: Concept, Idea, Word, Pattern, Spirit, God, Angel, Deva - ʯ
occurence
: Occurence - Ω
project
: Project - ⁖
prop
: Property, Characteristics, Attribute - ⬙
readme
: README - ⬥
readme-section
: Section - Ѭ
spec
: Specification - Ѫ
spec-section
: Specification section - ⬫
util
: Utilities way
: Method, Action, Operation, Functionwebapp
: Web application- Ʋ
website
: Website website-folder
: Website folderwebsite-page
: Page de sitewiki
: Wiki
[id] article, also known as :
- [EN] Article,
- [FR] Article.
WEBSITE ARTICLE
An article is a titled and dated content, with optional tags and meta-data.
motif
: motifpath
: /_motifs/article/article.motif.jsid
: articlescope
:folder
: articlefilePath
: /_motifs/article/article.motif.jsnames
occurences
get
_commands
Count : 0.
/.*_data\/articles\/(\d*)\/(\d*).article.js/
.
▥ [id] book, also known as :
- [EN] Book,
- [FR] Livre.
ORDERED COLLECTION OF WRITINGS
A BOOK content is made of smaller KAMIS/bricks :
-
BOOK-SECTIONS, which split BOOK content in chapters or sub-sections;
-
BOOK-PAGES, actually representing a scanned sheet of paper, but could also hold expected BOOK page outcome;
-
BOOK-EXTRACTS, which hold an atomic fragment of BOOK content.
Note that BOOK is a top-level section with just some specific meta-data.
motif
: motifpath
: /_motifs/book/book.motif.jsid
: bookscope
:folder
: bookfilePath
: /_motifs/book/book.motif.jssymbol
: ▥names
occurences
get
provision
Count : 0.
/^\/_data(.*)\/([\w|\-]*)\/([\w|\-]*)\.book\.js/
.
[id] book-extract, also known as :
- [EN] Extract, Fragment, Atom,
- [FR] Extrait, Fragment, Atome.
A small piece of BOOK
A FRAGMENT is the smallest unit of BOOK content.
It can be included inside a SECTION, a PAGE or directly on the BOOK root.
motif
: motifpath
: /_motifs/book-extract/book-extract.motif.jsid
: book-extractscope
:folder
: book-extractfilePath
: /_motifs/book-extract/book-extract.motif.jsnames
occurences
Count : 0.
/(.*)\/_extracts\/([\w|\-]*)\/([\w|\-]*)\.extract\.js/
.
[id] book-image, also known as :
- [EN] Image, Picture, Illustration, Scan,
- [FR] Image, Illustration, Numérisation.
BOOK VISUAL CONTENT
Usually bound to a WEBSITE-PAGE page, BOOK-IMAGES are given in a BOOK-SECTION, a BOOK-EXTRACT or in a BOOK-PAGE.
When the BOOK-PAGE, BOOK-EXTRACT or BOOK-SECTION is retrieved, scoped BOOK-IMAGES are copied to the destination WEBSITE-PAGE folder.
For now, only the following formats can be retrieved using this MOTIF :
jpg
,png
,svg
.
And, only files in the root _data
folder.
See the MOTIF OCCURENCE for details.
motif
: motifpath
: /_motifs/book-image/book-image.motif.jsid
: book-imagescope
:folder
: book-imagefilePath
: /_motifs/book-image/book-image.motif.jsnames
occurences
copy
Count : 0.
/.*_data\/(.*)\/([\w|\-]*)\.(png|jpg|svg)$/
.
[id] book-page, also known as :
- [EN] Page,
- [FR] Page.
PHYSICAL CONTENT FRAGMENT
PAGE can hold SECTIONS and EXTRACTS.
motif
: motifpath
: /_motifs/book-page/book-page.motif.jsid
: book-pagescope
:folder
: book-pagefilePath
: /_motifs/book-page/book-page.motif.jsnames
occurences
get
provision
Count : 0.
/(.*)\/_pages\/([\w|\-]*)\/([\w|\-]*)\.page\.js/
.
[id] book-section, also known as :
- [EN] Section, Chapter, Part,
- [FR] Section, Chapitre, Partie.
BOOK SUB-DIVISION
motif
: motifpath
: /_motifs/book-section/book-section.motif.jsid
: book-sectionscope
:folder
: book-sectionfilePath
: /_motifs/book-section/book-section.motif.jsnames
occurences
get
provision
Count : 0.
.
⌿ [id] command, also known as :
- [EN] Command,
- [FR] Commande.
MOTIF CLI interface action
Basically, a command binds a method to match a MOTIF entrypoint syntax.
At the moment, CLI is only accessible as a single line command prompt; but we'd like to present it as a interactive, staying alive, dialog.
In the ./dev-start
file you can find the following call :
KAMI.cli(
process.argv.slice(3),
{
log: true
})
From the CLI side, when you write a command, note that the three first words are ignored. Use the following syntax to call a COMMAND.
node dev-start.js -- <args>
npm start -- <args>
In the code side, the signature for a COMMAND function is
quite similar to the top-level KAMI.cli()
method :
export default (args: [], options: {}) =>
motif
: motifpath
: /_motifs/command/command.motif.jsid
: commandscope
:folder
: commandfilePath
: /_motifs/command/command.motif.jssymbol
: ⌿names
occurences
Count : 0.
/(.*)\/_shrine\/(.*)\/_props\/_commands\/(.*)\/(.*).command.js/
.
▼ [id] description, also known as :
- [EN] Description,
- [FR] Description.
Textual data
Should treat LANG dimension.
Experimental :
<motifId>
+-- description
| +-- en.description.js
| +-- fr.description.js
+-- <motifId>.motif.js
motif
: motifpath
: /_motifs/description/description.motif.jsid
: descriptionscope
:folder
: descriptionfilePath
: /_motifs/description/description.motif.jssymbol
: ▼names
occurences
Count : 12.
/(.*)\/([\w|\-]*)\/description\/description\.md$/
.
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
⎊ [id] doc, also known as :
- [EN] Documentation,
- [FR] Documentation.
General documentation ressources
DOC is composed of few sub-MOTIFS :
motif
: motifpath
: /_motifs/doc/doc.motif.jsid
: docscope
:folder
: docfilePath
: /_motifs/doc/doc.motif.jssymbol
: ⎊names
▤ [id] file, also known as :
- [EN] File,
- [FR] Fichier.
File meta-data
Pattern should later be extended depending on the file extension.
motif
: motifpath
: /_motifs/file/file.motif.jsid
: filescope
:folder
: filefilePath
: /_motifs/file/file.motif.jssymbol
: ▤names
create
get
copy
◰ [id] folder, also known as :
- [EN] Folder,
- [FR] Dossier.
File explorer node
Folder is represented by :
- Its
scope
, the path between project root and desired folder location, - Its
name
, an unique identifier in its scope, - Its
tree
, an object representing folders and files hierarchy inside top-level folder (a complex concept to define).
motif
: motifpath
: /_motifs/folder/folder.motif.jsid
: folderscope
:folder
: folderfilePath
: /_motifs/folder/folder.motif.jssymbol
: ◰names
create
copy
clear
[id] folder-scope, also known as :
- [EN] Scope, Perimeter,
- [FR] Portée, Périmètre.
SUB-FOLDER TREE
In a FS representation, the scope is the root folder, or a sub-folder.
motif
: motifpath
: /_motifs/folder-scope/folder-scope.motif.jsid
: folder-scopescope
:folder
: folder-scopefilePath
: /_motifs/folder-scope/folder-scope.motif.jsnames
⤶ [id] get, also known as :
- [EN] Accesser, Obtain, Hydrater,
- [FR] Accesseur, Obtenir, Hydrateur.
The MOTIF'S INSTANCES accessers
GET is currently an abstract pattern which may be implemented on sufficent occurence rate and generic logics.
GET can declined on KAMI's occurences purposes :
- Access and update folders and files content,
- Import ESM modules,
- Access and update data from databases.
In any case, an object instance is created to represent the actual occurence.
In the case of folders and files, a regular expression is used for matching.
get(:id) and get() `
motif
: motifpath
: /_motifs/get/get.motif.jsid
: getscope
:folder
: getfilePath
: /_motifs/get/get.motif.jssymbol
: ⤶names
regExp
⯎ [id] global, also known as :
- [EN] Identifier, instance name,
- [FR] Identifieur, nom d'instance.
Global variables to be accessed application-wide
motif
: motifpath
: /_motifs/global/global.motif.jsid
: globalscope
:folder
: globalfilePath
: /_motifs/global/global.motif.jssymbol
: ⯎names
⚲ [id] id, also known as :
- [EN] Identifier, instance name,
- [FR] Identifieur, nom d'instance.
INSTANCE NAME
For a given MOTIF and given SCOPE, the ID is the unique name of an instance.
It is usually a PROP.
motif
: motifpath
: /_motifs/id/id.motif.jsid
: idscope
:folder
: idfilePath
: /_motifs/id/id.motif.jssymbol
: ⚲names
⧇ [id] instance, also known as :
- [EN] Instance,
- [FR] Instance.
INDIVIDUAL OF ONE OR MULTIPLE MOTIFS
Instances are occurence of a MOTIF.
They should conform to the following specifications :
- Can be retrieved through [
<motif>.get
] way, - Can be created through [
<motif>.create
] way, - Can be tested through [
<motif>.test
] way, - (Not implemented) Can get updated and deleted.
MOTIF (<...>.motif.js
) are instances of the MOTIF MOTIF.
Note that MOTIF MOTIF is an instance of itself !
motif
: motifpath
: /_motifs/instance/instance.motif.jsid
: instancescope
:folder
: instancefilePath
: /_motifs/instance/instance.motif.jssymbol
: ⧇names
get
ἀ [id] lang, also known as :
- [EN] Language,
- [FR] Langage.
motif
: motifpath
: /_motifs/lang/lang.motif.jsid
: langscope
:folder
: langfilePath
: /_motifs/lang/lang.motif.jssymbol
: ἀnames
⚇ [id] motif, also known as :
- [EN] Concept, Idea, Word, Pattern, Spirit, God, Angel, Deva,
- [FR] Concept, Idée, Mot, Motif, Esprit, Dieu, Ange, Deva.
MOTIF of all MOTIFS
Motif, also known as pattern, is the generic concept that bind instances together under the same name. In programmation, patterns / motifs aim to solve recurring problems with generic / abstract answers.
As stated in the book A Pattern Language, motifs also has the property to act as words, forming sentences (and more) under certains rules. But, as now stated in the publication Generative Design Patterns, design patterns in computer science also has the counterpart of being too abstract. They do not provide implemention and cannot be used straight as operational code.
To address this void, MOTIFS provides both a library of numerous inedite and differently scaling motifs and an implementation that makes these motifs not only descriptive, but also generative.
MOTIF starts living in a <motifId>
folder,
just right with its <motifId>.motif.js
file.
Every MOTIFS has its own rules for naming.
Naming basically bind a whose ? (an <id>.*
, or a folder scope)
and a what ? (the *.<motif>.*
it implements).
It remains simple while there is only one whose and only one what.
But since the are some transversal MOTIFS, their INSTANCES will potentialy have multiple :
- whose :
[ id* ].
, - what :
.[ motif* ].
.
motif
: motifpath
: /_motifs/motif/motif.motif.jsid
: motifscope
:folder
: motiffilePath
: /_motifs/motif/motif.motif.jssymbol
: ⚇names
occurences
init
flavour
: At the very beginning, KAMI-KAMI said itself, to be brought to existence.
Soon after, it started to speak out other KAMIS, which were instantly brought to existence too, following a pure nodal self-organization.
For the generation to proceed, KAMI-KAMI first had to split itself in two : the KAMI concept and the KAMI individual. The class and the instance.
It was also about genericity and specificity. And, at the end, dualism.
KAMI-KAMI had to become a KAMI like the others KAMIS. It needed to be processed the same way to ensure genericity.
But its specifity, the secrets of its generative powers, remained absent of other KAMIS. This was the key of peace.
By doing so, KAMI-KAMI shared the same common nature, the pattern, to all of its creations [the kamis], letting them freely extend and implement its highly abstract powers.
_commands
create
get
cli
test
Count : 32.
/(.*)\/_motifs\/([\w|\-]*)\/([\w|\-]*).motif.js/
.
/_motifs/article/article.motif.js
/_motifs/book/book.motif.js
/_motifs/book-extract/book-extract.motif.js
/_motifs/book-image/book-image.motif.js
/_motifs/book-page/book-page.motif.js
/_motifs/book-section/book-section.motif.js
/_motifs/command/command.motif.js
/_motifs/description/description.motif.js
/_motifs/doc/doc.motif.js
/_motifs/file/file.motif.js
/_motifs/folder/folder.motif.js
/_motifs/folder-scope/folder-scope.motif.js
/_motifs/get/get.motif.js
/_motifs/global/global.motif.js
/_motifs/id/id.motif.js
/_motifs/instance/instance.motif.js
/_motifs/lang/lang.motif.js
/_motifs/motif/motif.motif.js
/_motifs/occurence/occurence.motif.js
/_motifs/project/project.motif.js
/_motifs/prop/prop.motif.js
/_motifs/readme/readme.motif.js
/_motifs/readme-section/readme-section.motif.js
/_motifs/spec/spec.motif.js
/_motifs/spec-section/spec-section.motif.js
/_motifs/util/util.motif.js
/_motifs/way/way.motif.js
/_motifs/webapp/webapp.motif.js
/_motifs/website/website.motif.js
/_motifs/website-folder/website-folder.motif.js
/_motifs/website-page/website-page.motif.js
/_motifs/wiki/wiki.motif.js
At the very beginning, KAMI-KAMI said itself, to be brought to existence.
Soon after, it started to speak out other KAMIS, which were instantly brought to existence too, following a pure nodal self-organization.
For the generation to proceed, KAMI-KAMI first had to split itself in two : the KAMI concept and the KAMI individual. The class and the instance.
It was also about genericity and specificity. And, at the end, dualism.
KAMI-KAMI had to become a KAMI like the others KAMIS. It needed to be processed the same way to ensure genericity.
But its specifity, the secrets of its generative powers, remained absent of other KAMIS. This was the key of peace.
By doing so, KAMI-KAMI shared the same common nature, the pattern, to all of its creations [the kamis], letting them freely extend and implement its highly abstract powers.
ʯ [id] occurence, also known as :
- [EN] Occurence,
- [FR] Occurence.
WHERE INSTANCES HAPPEN
OCCURENCE is made of two aspects :
-
The matching rule(s) define(s) the lexical conditions required for a MOTIF'S INSTANCE to appear,
-
The transformations, returned by applying the
transform
method to every rules matching results.
Experimental :
occurences: [
{
level: //,
regExp: /(.*)\/_motifs\/(.*)\/(.*).motif.js/,
folderMatch: //,
fileMatch: //,
propMatch: //,
transform: ([ scope, folderName, fileName ]) => ({
scope,
folderName,
fileName
})
}
]
motif
: motifpath
: /_motifs/occurence/occurence.motif.jsid
: occurencescope
:folder
: occurencefilePath
: /_motifs/occurence/occurence.motif.jssymbol
: ʯnames
get
Ω [id] project, also known as :
- [EN] Project,
- [FR] Projet.
Hold whole's meta-data and config
PROJECT agregates different concepts and files related to the codebase considered as a whole.
A non-exhaustive list of its components :
- Global DESCRIPTION,
- ENVIRONMENT variables,
- The set of project-related files :
package.json
,.gitignore
;
- And by extension, all folder and files contained in it.
motif
: motifpath
: /_motifs/project/project.motif.jsid
: projectscope
:folder
: projectfilePath
: /_motifs/project/project.motif.jssymbol
: Ωnames
⁖ [id] prop, also known as :
- [EN] Property, Characteristics, Attribute,
- [FR] Propriété, Caractéristque, Attribut.
Properties of an instance
PROPS can be hard-bounded in .motif.js
file
or dynamically bound in MOTIF.get()
method.
(historical) _props
folders contains
kami's properties content.
motif
: motifpath
: /_motifs/prop/prop.motif.jsid
: propscope
:folder
: propfilePath
: /_motifs/prop/prop.motif.jssymbol
: ⁖names
⬙ [id] readme, also known as :
- [EN] README,
- [FR] README.
GITHUB README
README instance occurs once by PROJECT,
in the /_readme folder
.
Specific PROJECT's README SECTIONS are
located in /_readme/_sections
,
genercis are located in /kami.js/_shrine/readme/_sections
.
README is a component of DOC.
motif
: motifpath
: /_motifs/readme/readme.motif.jsid
: readmescope
:folder
: readmefilePath
: /_motifs/readme/readme.motif.jssymbol
: ⬙names
get
build
_commands
⬥ [id] readme-section, also known as :
- [EN] Section,
- [FR] Section.
README SECTION
SECTIONS are made of :
- Text content,
- Imbricated SECTIONS.
In fact, README is the top-level SECTION.
motif
: motifpath
: /_motifs/readme-section/readme-section.motif.jsid
: readme-sectionscope
:folder
: readme-sectionfilePath
: /_motifs/readme-section/readme-section.motif.jssymbol
: ⬥names
regExp
create
Ѭ [id] spec, also known as :
- [EN] Specification,
- [FR] Spécification.
MOTIFS' TEST MATERIAL
In motifs
we currently distinguish two
categories of specifications :
- Instances SPECS, which target every instances of a MOTIF (hold by the MOTIF),
- Specific SPECS, which target a single instance of a MOTIF (hold by the instance).`
motif
: motifpath
: /_motifs/spec/spec.motif.jsid
: specscope
:folder
: specfilePath
: /_motifs/spec/spec.motif.jssymbol
: Ѭnames
runOne
runAll
occurences
Count : 21.
/(^|.*\/)([\w|\-]*\.spec.js)/
,/(.*)\/_motifs\/([\w|\-]*)\/_specis\/([\w|\-]*)\.speci.js/
.
/index.spec.js
/_motifs/article/create/create.spec.js
/_motifs/article/get/get.spec.js
/_motifs/folder/create/create.spec.js
/_motifs/motif/init/init.spec.js
/_motifs/motif/init/_utils/getFiles/getFiles.spec.js
/_motifs/motif/init/_utils/getFrameworkPath/getFrameworkPath.spec.js
/_motifs/occurence/get/get.spec.js
/_motifs/occurence/get/_utils/fixSlashFirst/fixSlashFirst.spec.js
/_motifs/occurence/get/_utils/folderMatchFixRegExpEnd/folderMatchFixRegExpEnd.spec.js
/_motifs/spec/runAll/_utils/specSectionResultCounter/specSectionResultCounter.spec.js
/_motifs/website/build/build.spec.js
/_motifs/website/build/_utils/createRobots/createRobots.spec.js
/_motifs/website/build/_utils/createSitemap/createSitemap.spec.js
/_motifs/website/get/get.spec.js
/_motifs/website-folder/build/build.spec.js
/_motifs/website-folder/shape/shape.spec.js
/_motifs/website-page/build/build.spec.js
/_motifs/website-page/shape/shape.spec.js
/_motifs/motif/_specis/motif.speci.js
/_motifs/spec/_specis/spec.speci.js
Ѫ [id] spec-section, also known as :
- [EN] Specification section,
- [FR] Section de specification.
ASSERTION nodes in SPEC files
{
label: 'string',
group: [ 'spec-section' | 'assertion' ]
}
motif
: motifpath
: /_motifs/spec-section/spec-section.motif.jsid
: spec-sectionscope
:folder
: spec-sectionfilePath
: /_motifs/spec-section/spec-section.motif.jssymbol
: Ѫnames
⬫ [id] util, also known as :
- [EN] Utilities,
- [FR] Utilitaires.
export default `The place to put things
_utils
folders are place specific logic are put.
Utilities are usually consumed by same scope or lower levels modules :
They can be either pieces (of a module) or shared (by lower level modules).
motif
: motifpath
: /_motifs/util/util.motif.jsid
: utilscope
:folder
: utilfilePath
: /_motifs/util/util.motif.jsnames
symbol
: ⬫
[id] way, also known as :
- [EN] Method, Action, Operation, Function,
- [FR] Méthode, Action, Opération, Fonction.
(historical) MOTIFS' METHOD
Ways are KAMI's methods (... actions, functions, operations).
It differs with prop in its type,
which is necessarely function
.
motif
: motifpath
: /_motifs/way/way.motif.jsid
: wayscope
:folder
: wayfilePath
: /_motifs/way/way.motif.jsnames
[id] webapp, also known as :
- [EN] Web application,
- [FR] Application web.
The dynamic WEBSITE backend
A webapp exposes MOTIFS and their operations (customs and generics) as endpoints.
motif
: motifpath
: /_motifs/webapp/webapp.motif.jsid
: webappscope
:folder
: webappfilePath
: /_motifs/webapp/webapp.motif.jsnames
Ʋ [id] website, also known as :
- [EN] Website,
- [FR] Site internet.
Static website
WEBSITE.build
uses provision
and mapping
to
create static websites.
motif
: motifpath
: /_motifs/website/website.motif.jsid
: websitescope
:folder
: websitefilePath
: /_motifs/website/website.motif.jssymbol
: Ʋnames
occurences
build
get
_commands
Count : 0.
/.*\/([\w\-]*)\/([\w\-]*).website.js/
.
[id] website-folder, also known as :
- [EN] Website folder,
- [FR] Dossier de site.
New KAMI !
motif
: motifpath
: /_motifs/website-folder/website-folder.motif.jsid
: website-folderscope
:folder
: website-folderfilePath
: /_motifs/website-folder/website-folder.motif.jsnames
shape
build
[id] website-page, also known as :
- [EN] Page de site,
- [FR] Website page.
TEMPLATE x DATA x URL
A page binds the following three elements :
- A template which render conditionnaly on specific data,
- Data to be consumed by the template,
- An path to be render (which will in time be used as its url).
motif
: motifpath
: /_motifs/website-page/website-page.motif.jsid
: website-pagescope
:folder
: website-pagefilePath
: /_motifs/website-page/website-page.motif.jsnames
shape
build
create
[id] wiki, also known as :
- [EN] Wiki,
- [FR] Wiki.
Wiki documentation
WIKI is a component of DOC.
motif
: motifpath
: /_motifs/wiki/wiki.motif.jsid
: wikiscope
:folder
: wikifilePath
: /_motifs/wiki/wiki.motif.jsnames