motifs-js
v0.4.6
Published
MOTIFS aims to explore the concept of naming and patterns. It creates virtual entities, the motifs, to embody project's classes, components and logic.
Downloads
16
Maintainers
Readme
32 MOTIFS on 4/11/2021, 6:17:40 PM
motifs-js
Work on ideas.
Table of content
A generative design patterns framework
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).
MOTIFS (patterns)
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.
Browse some websites built on MOTIFS
- 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 !
What is motifs-js
?
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.
Words and their relations
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.
Different ways of connecting MOTIFS
- 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.
Features
1. Static website builder
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.
2. Development utilities
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 :
3. Glossary
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.
4. Documentation
After retrieving, you can conditionaly shape and render MOTIFS that your project manipulates in order to create relevant views for different users and uses.
5. Test
Check MOTIFS instances and logics against their specification, using the SPEC framework.
See how to Test the framework and project.
6. Continuous deployment
Plug framework's features to CI/CD pipelines through CLI COMMANDS.
How to use motifs-js
?
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
Installation
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
Create a new MOTIF
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
}
Notes
names.prop.js
anddescription.prop.js
are pre-filled with temporary values.
You'll have to customize them through your IDE.
Test the framework and project
npm start -- [-log] test
Retrieves all files matching the SPEC OCCURENCES, and execute their content.
Notes
-log
prints all test assertions and results.
Build the README
npm start -- -motif readme build
Notes
-motif
ou-m
targets a specific MOTIF (in this case README),build
is targeting the README "build" COMMAND.
Build a WEBSITE
npm start -- -m website build <websiteId:string>
Build the WEBSITE around
identified <websiteId>.website.js
file.
Notes
CLI currently doesn't support WEBSITE.build()
{ scope, dest }
options configuration.
Serve the WEBSITE locally
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.
Common package.json sripts binding
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
MOTIFS' glossary
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
article
[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.
Properties
motif
: motifpath
: /_motifs/article/article.motif.jsid
: articlescope
:folder
: articlefilePath
: /_motifs/article/article.motif.jsnames
occurences
get
_commands
Instances
Count : 0.
Matching mechanims
/.*_data\/articles\/(\d*)\/(\d*).article.js/
.
Instances list
book
▥ [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.
Properties
motif
: motifpath
: /_motifs/book/book.motif.jsid
: bookscope
:folder
: bookfilePath
: /_motifs/book/book.motif.jssymbol
: ▥names
occurences
get
provision
Instances
Count : 0.
Matching mechanims
/^\/_data(.*)\/([\w|\-]*)\/([\w|\-]*)\.book\.js/
.
Instances list
book-extract
[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.
Properties
motif
: motifpath
: /_motifs/book-extract/book-extract.motif.jsid
: book-extractscope
:folder
: book-extractfilePath
: /_motifs/book-extract/book-extract.motif.jsnames
occurences
Instances
Count : 0.
Matching mechanims
/(.*)\/_extracts\/([\w|\-]*)\/([\w|\-]*)\.extract\.js/
.
Instances list
book-image
[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.
Accepted formats
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.
Properties
motif
: motifpath
: /_motifs/book-image/book-image.motif.jsid
: book-imagescope
:folder
: book-imagefilePath
: /_motifs/book-image/book-image.motif.jsnames
occurences
copy
Instances
Count : 0.
Matching mechanims
/.*_data\/(.*)\/([\w|\-]*)\.(png|jpg|svg)$/
.
Instances list
book-page
[id] book-page, also known as :
- [EN] Page,
- [FR] Page.
PHYSICAL CONTENT FRAGMENT
PAGE can hold SECTIONS and EXTRACTS.
Properties
motif
: motifpath
: /_motifs/book-page/book-page.motif.jsid
: book-pagescope
:folder
: book-pagefilePath
: /_motifs/book-page/book-page.motif.jsnames
occurences
get
provision
Instances
Count : 0.
Matching mechanims
/(.*)\/_pages\/([\w|\-]*)\/([\w|\-]*)\.page\.js/
.
Instances list
book-section
[id] book-section, also known as :
- [EN] Section, Chapter, Part,
- [FR] Section, Chapitre, Partie.
BOOK SUB-DIVISION
Properties
motif
: motifpath
: /_motifs/book-section/book-section.motif.jsid
: book-sectionscope
:folder
: book-sectionfilePath
: /_motifs/book-section/book-section.motif.jsnames
occurences
get
provision
Instances
Count : 0.
Matching mechanims
.
Instances list
command
⌿ [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.
Entrypoint syntax
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: {}) =>
Properties
motif
: motifpath
: /_motifs/command/command.motif.jsid
: commandscope
:folder
: commandfilePath
: /_motifs/command/command.motif.jssymbol
: ⌿names
occurences
Instances
Count : 0.
Matching mechanims
/(.*)\/_shrine\/(.*)\/_props\/_commands\/(.*)\/(.*).command.js/
.
Instances list
description
▼ [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
Properties
motif
: motifpath
: /_motifs/description/description.motif.jsid
: descriptionscope
:folder
: descriptionfilePath
: /_motifs/description/description.motif.jssymbol
: ▼names
occurences
Instances
Count : 12.
Matching mechanims
/(.*)\/([\w|\-]*)\/description\/description\.md$/
.
Instances list
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined
doc
⎊ [id] doc, also known as :
- [EN] Documentation,
- [FR] Documentation.
General documentation ressources
DOC is composed of few sub-MOTIFS :
Properties
motif
: motifpath
: /_motifs/doc/doc.motif.jsid
: docscope
:folder
: docfilePath
: /_motifs/doc/doc.motif.jssymbol
: ⎊names
file
▤ [id] file, also known as :
- [EN] File,
- [FR] Fichier.
File meta-data
Pattern should later be extended depending on the file extension.
Properties
motif
: motifpath
: /_motifs/file/file.motif.jsid
: filescope
:folder
: filefilePath
: /_motifs/file/file.motif.jssymbol
: ▤names
create
get
copy
folder
◰ [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).
Properties
motif
: motifpath
: /_motifs/folder/folder.motif.jsid
: folderscope
:folder
: folderfilePath
: /_motifs/folder/folder.motif.jssymbol
: ◰names
create
copy
clear
folder-scope
[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.
Properties
motif
: motifpath
: /_motifs/folder-scope/folder-scope.motif.jsid
: folder-scopescope
:folder
: folder-scopefilePath
: /_motifs/folder-scope/folder-scope.motif.jsnames
get
⤶ [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 ONE and GET ALL
get(:id) and get() `
Properties
motif
: motifpath
: /_motifs/get/get.motif.jsid
: getscope
:folder
: getfilePath
: /_motifs/get/get.motif.jssymbol
: ⤶names
regExp
global
⯎ [id] global, also known as :
- [EN] Identifier, instance name,
- [FR] Identifieur, nom d'instance.
Global variables to be accessed application-wide
Properties
motif
: motifpath
: /_motifs/global/global.motif.jsid
: globalscope
:folder
: globalfilePath
: /_motifs/global/global.motif.jssymbol
: ⯎names
id
⚲ [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.
Properties
motif
: motifpath
: /_motifs/id/id.motif.jsid
: idscope
:folder
: idfilePath
: /_motifs/id/id.motif.jssymbol
: ⚲names
instance
⧇ [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 !
Properties
motif
: motifpath
: /_motifs/instance/instance.motif.jsid
: instancescope
:folder
: instancefilePath
: /_motifs/instance/instance.motif.jssymbol
: ⧇names
get
lang
ἀ [id] lang, also known as :
- [EN] Language,
- [FR] Langage.
Properties
motif
: motifpath
: /_motifs/lang/lang.motif.jsid
: langscope
:folder
: langfilePath
: /_motifs/lang/lang.motif.jssymbol
: ἀnames
motif
⚇ [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
What is a MOTIF ?
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.
About naming files
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* ].
.
Properties
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
Instances
Count : 32.
Matching mechanims
/(.*)\/_motifs\/([\w|\-]*)\/([\w|\-]*).motif.js/
.
Instances list
/_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
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.
occurence
ʯ [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
})
}
]
Properties
motif
: motifpath
: /_motifs/occurence/occurence.motif.jsid
: occurencescope
:folder
: occurencefilePath
: /_motifs/occurence/occurence.motif.jssymbol
: ʯnames
get
project
Ω [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.
Properties
motif
: motifpath
: /_motifs/project/project.motif.jsid
: projectscope
:folder
: projectfilePath
: /_motifs/project/project.motif.jssymbol
: Ωnames
prop
⁖ [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.
Properties
motif
: motifpath
: /_motifs/prop/prop.motif.jsid
: propscope
:folder
: propfilePath
: /_motifs/prop/prop.motif.jssymbol
: ⁖names
readme
⬙ [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.
Properties
motif
: motifpath
: /_motifs/readme/readme.motif.jsid
: readmescope
:folder
: readmefilePath
: /_motifs/readme/readme.motif.jssymbol
: ⬙names
get
build
_commands
readme-section
⬥ [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.
Properties
motif
: motifpath
: /_motifs/readme-section/readme-section.motif.jsid
: readme-sectionscope
:folder
: readme-sectionfilePath
: /_motifs/readme-section/readme-section.motif.jssymbol
: ⬥names
regExp
create
spec
Ѭ [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).`
Properties
motif
: motifpath
: /_motifs/spec/spec.motif.jsid
: specscope
:folder
: specfilePath
: /_motifs/spec/spec.motif.jssymbol
: Ѭnames
runOne
runAll
occurences
Instances
Count : 21.
Matching mechanims
/(^|.*\/)([\w|\-]*\.spec.js)/
,/(.*)\/_motifs\/([\w|\-]*)\/_specis\/([\w|\-]*)\.speci.js/
.
Instances list
/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
spec-section
Ѫ [id] spec-section, also known as :
- [EN] Specification section,
- [FR] Section de specification.
ASSERTION nodes in SPEC files
{
label: 'string',
group: [ 'spec-section' | 'assertion' ]
}
Properties
motif
: motifpath
: /_motifs/spec-section/spec-section.motif.jsid
: spec-sectionscope
:folder
: spec-sectionfilePath
: /_motifs/spec-section/spec-section.motif.jssymbol
: Ѫnames
util
⬫ [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).
Properties
motif
: motifpath
: /_motifs/util/util.motif.jsid
: utilscope
:folder
: utilfilePath
: /_motifs/util/util.motif.jsnames
symbol
: ⬫
way
[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
.
Properties
motif
: motifpath
: /_motifs/way/way.motif.jsid
: wayscope
:folder
: wayfilePath
: /_motifs/way/way.motif.jsnames
webapp
[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.
Properties
motif
: motifpath
: /_motifs/webapp/webapp.motif.jsid
: webappscope
:folder
: webappfilePath
: /_motifs/webapp/webapp.motif.jsnames
website
Ʋ [id] website, also known as :
- [EN] Website,
- [FR] Site internet.
Static website
WEBSITE.build
uses provision
and mapping
to
create static websites.
Properties
motif
: motifpath
: /_motifs/website/website.motif.jsid
: websitescope
:folder
: websitefilePath
: /_motifs/website/website.motif.jssymbol
: Ʋnames
occurences
build
get
_commands
Instances
Count : 0.
Matching mechanims
/.*\/([\w\-]*)\/([\w\-]*).website.js/
.
Instances list
website-folder
[id] website-folder, also known as :
- [EN] Website folder,
- [FR] Dossier de site.
New KAMI !
Properties
motif
: motifpath
: /_motifs/website-folder/website-folder.motif.jsid
: website-folderscope
:folder
: website-folderfilePath
: /_motifs/website-folder/website-folder.motif.jsnames
shape
build
website-page
[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).
Properties
motif
: motifpath
: /_motifs/website-page/website-page.motif.jsid
: website-pagescope
:folder
: website-pagefilePath
: /_motifs/website-page/website-page.motif.jsnames
shape
build
create
wiki
[id] wiki, also known as :
- [EN] Wiki,
- [FR] Wiki.
Wiki documentation
WIKI is a component of DOC.
Properties
motif
: motifpath
: /_motifs/wiki/wiki.motif.jsid
: wikiscope
:folder
: wikifilePath
: /_motifs/wiki/wiki.motif.jsnames