This is the org.melusina.atelier Reference Manual, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Sep 15 03:43:50 2024 GMT+0.
org.melusina.atelier/org.melusina.atelier.asd
org.melusina.atelier/src/package.lisp
org.melusina.atelier/src/utilities.lisp
org.melusina.atelier/src/configuration.lisp
org.melusina.atelier/src/license.lisp
org.melusina.atelier/src/parameter.lisp
org.melusina.atelier/src/template.lisp
org.melusina.atelier/src/lint.lisp
org.melusina.atelier/src/inspector/codestyle-0001.lisp
org.melusina.atelier/src/inspector/codestyle-0002.lisp
org.melusina.atelier/src/inspector/codestyle-0003.lisp
org.melusina.atelier/src/inspector/codestyle-0004.lisp
org.melusina.atelier/src/inspector/codestyle-0005.lisp
org.melusina.atelier/src/inspector/codestyle-0006.lisp
org.melusina.atelier/src/main.lisp
The main system appears first, followed by any subsystem dependency.
org.melusina.atelier
An atelier for Lisp developers
Michaël Le Barbier
alexandria
(system).
cl-ppcre
(system).
org.melusina.rashell
(system).
osicat
(system).
trivia
(system).
src
(module).
Modules are listed depth-first from the system components tree.
org.melusina.atelier/src
org.melusina.atelier
(system).
package.lisp
(file).
utilities.lisp
(file).
configuration.lisp
(file).
license.lisp
(file).
parameter.lisp
(file).
template.lisp
(file).
lint.lisp
(file).
inspector
(module).
main.lisp
(file).
org.melusina.atelier/src/inspector
src
(module).
codestyle-0001.lisp
(file).
codestyle-0002.lisp
(file).
codestyle-0003.lisp
(file).
codestyle-0004.lisp
(file).
codestyle-0005.lisp
(file).
codestyle-0006.lisp
(file).
Files are sorted by type and then listed depth-first from the systems components trees.
org.melusina.atelier/org.melusina.atelier.asd
org.melusina.atelier/src/package.lisp
org.melusina.atelier/src/utilities.lisp
org.melusina.atelier/src/configuration.lisp
org.melusina.atelier/src/license.lisp
org.melusina.atelier/src/parameter.lisp
org.melusina.atelier/src/template.lisp
org.melusina.atelier/src/lint.lisp
org.melusina.atelier/src/inspector/codestyle-0001.lisp
org.melusina.atelier/src/inspector/codestyle-0002.lisp
org.melusina.atelier/src/inspector/codestyle-0003.lisp
org.melusina.atelier/src/inspector/codestyle-0004.lisp
org.melusina.atelier/src/inspector/codestyle-0005.lisp
org.melusina.atelier/src/inspector/codestyle-0006.lisp
org.melusina.atelier/src/main.lisp
org.melusina.atelier/org.melusina.atelier.asd
org.melusina.atelier
(system).
org.melusina.atelier/src/utilities.lisp
src
(module).
add-pathname
(function).
break-down
(function).
count-string-words
(function).
edit-first-line
(function).
edit-last-line
(function).
first-line
(function).
(setf first-line)
(function).
indent
(function).
join-lines
(function).
last-line
(function).
(setf last-line)
(function).
last-line-position
(function).
read-file-into-list
(function).
string-lines
(function).
string-list-p
(function).
string-match
(function).
string-prefix-p
(function).
string-suffix-p
(function).
string-words
(function).
org.melusina.atelier/src/configuration.lisp
src
(module).
*resourcedir*
(special variable).
org.melusina.atelier/src/license.lisp
src
(module).
list-licenses
(function).
*license-repository*
(special variable).
*license-repository-pathname*
(special variable).
find-license
(function).
license
(class).
license-repository-list-licenses
(function).
license-repository-load
(function).
license-repository-load-definition
(function).
org.melusina.atelier/src/parameter.lisp
src
(module).
*parameter-bindings*
(special variable).
parameter-keyword
(function).
*parameter-block*
(special variable).
*parameter-placeholder-regex*
(special variable).
list-parameter-names
(function).
merge-parameter-bindings
(function).
parameter-name-equal
(function).
parameter-replace
(function).
parameter-replacement-text
(function).
sort-parameter-bindings
(function).
org.melusina.atelier/src/template.lisp
src
(module).
find-template
(function).
list-template-parameter-names
(function).
list-templates
(function).
new-lisp-file
(function).
new-lisp-project
(function).
write-template
(function).
*composite-template-specs*
(special variable).
*template-repository*
(special variable).
*template-repository-pathname*
(special variable).
composite-template
(class).
file-template
(class).
make-file-template
(function).
make-shell-namespace
(function).
really-list-template-parameter-names
(generic function).
really-write-template
(generic function).
template
(class).
template-environment
(function).
template-repository-empty-p
(function).
template-repository-list-templates
(function).
template-repository-load
(function).
template-repository-load-definition-file
(function).
org.melusina.atelier/src/lint.lisp
src
(module).
*linter-interactive-p*
(special variable).
block-comment-linter
(class).
canonical-source-linter
(class).
content-inspectors
(generic function).
define-inspector
(macro).
extensive-linter
(class).
file-inspectors
(generic function).
hint-at-file
(function).
hint-at-file
(class).
hint-at-file-line
(function).
hint-at-file-line
(class).
inline-comment-linter
(class).
line-inspectors
(generic function).
lint
(function).
lint-file
(function).
linter
(class).
list-inspectors
(function).
plain-block-comment-linter
(class).
plain-line-comment-linter
(class).
*hint-code*
(special variable).
*hint-line*
(special variable).
*hint-pathname*
(special variable).
*hint-srcdir*
(special variable).
*inspector-table*
(special variable).
*linter*
(special variable).
*linter-table*
(special variable).
anomaly
(function).
anomaly
(condition).
arrange-hints-by-code
(function).
arrange-hints-by-file
(function).
arrange-hints-by-file-then-code
(function).
arrange-hints-by-key
(function).
comment-prefix-regex
(function).
decorate-block-comment
(generic function).
decorate-line-comment
(method).
decorate-line-comment
(method).
decorate-line-commment
(generic function).
define-plain-linter
(function).
find-inspector
(function).
find-plain-linter
(function).
format-hints-by-file-then-code
(function).
hint
(class).
lint-contents
(function).
lint-lines
(function).
linter-for-file
(function).
linter-match
(function).
make-plain-block-comment-linter
(function).
make-plain-line-comment-linter
(function).
org.melusina.atelier/src/inspector/codestyle-0001.lisp
inspector
(module).
hint-at-file-when-character-encoding-is-not-utf8
(function).
org.melusina.atelier/src/inspector/codestyle-0002.lisp
inspector
(module).
hint-at-file-line-when-it-is-very-long
(function).
org.melusina.atelier/src/inspector/codestyle-0003.lisp
inspector
(module).
hint-at-file-when-it-lacks-canonical-header-line
(function).
string-shebang-end-position
(function).
org.melusina.atelier/src/inspector/codestyle-0004.lisp
inspector
(module).
hint-at-file-when-it-lacks-canonical-footer-line
(function).
org.melusina.atelier/src/inspector/codestyle-0005.lisp
inspector
(module).
hint-at-file-when-it-lacks-canonical-project-identification
(function).
org.melusina.atelier/src/inspector/codestyle-0006.lisp
inspector
(module).
hint-at-file-when-it-lacks-project-license-information
(function).
org.melusina.atelier/src/main.lisp
src
(module).
initialize
(function).
Packages are listed by definition order.
org.melusina.atelier
common-lisp
.
*linter-interactive-p*
(special variable).
*parameter-bindings*
(special variable).
block-comment-linter
(class).
canonical-source-linter
(class).
content-inspectors
(generic function).
define-inspector
(macro).
extensive-linter
(class).
file-inspectors
(generic function).
find-template
(function).
hint-at-file
(function).
hint-at-file
(class).
hint-at-file-line
(function).
hint-at-file-line
(class).
initialize
(function).
inline-comment-linter
(class).
line-inspectors
(generic function).
lint
(function).
lint-file
(function).
linter
(class).
list-inspectors
(function).
list-licenses
(function).
list-template-parameter-names
(function).
list-templates
(function).
new-lisp-file
(function).
new-lisp-project
(function).
parameter-keyword
(function).
plain-block-comment-linter
(class).
plain-line-comment-linter
(class).
write-template
(function).
*composite-template-specs*
(special variable).
*hint-code*
(special variable).
*hint-line*
(special variable).
*hint-pathname*
(special variable).
*hint-srcdir*
(special variable).
*inspector-table*
(special variable).
*license-repository*
(special variable).
*license-repository-pathname*
(special variable).
*linter*
(special variable).
*linter-table*
(special variable).
*parameter-block*
(special variable).
*parameter-placeholder-regex*
(special variable).
*resourcedir*
(special variable).
*template-repository*
(special variable).
*template-repository-pathname*
(special variable).
add-pathname
(function).
anomaly
(function).
anomaly
(condition).
arrange-hints-by-code
(function).
arrange-hints-by-file
(function).
arrange-hints-by-file-then-code
(function).
arrange-hints-by-key
(function).
break-down
(function).
comment-prefix-regex
(function).
composite-template
(class).
count-string-words
(function).
decorate-block-comment
(generic function).
decorate-line-comment
(generic function).
decorate-line-commment
(generic function).
define-plain-linter
(function).
edit-first-line
(function).
edit-last-line
(function).
file-template
(class).
find-inspector
(function).
find-license
(function).
find-plain-linter
(function).
first-line
(function).
(setf first-line)
(function).
format-hints-by-file-then-code
(function).
hint
(class).
hint-at-file-line-when-it-is-very-long
(function).
hint-at-file-when-character-encoding-is-not-utf8
(function).
hint-at-file-when-it-lacks-canonical-footer-line
(function).
hint-at-file-when-it-lacks-canonical-header-line
(function).
hint-at-file-when-it-lacks-canonical-project-identification
(function).
hint-at-file-when-it-lacks-project-license-information
(function).
indent
(function).
join-lines
(function).
last-line
(function).
(setf last-line)
(function).
last-line-position
(function).
license
(class).
license-repository-list-licenses
(function).
license-repository-load
(function).
license-repository-load-definition
(function).
lint-contents
(function).
lint-lines
(function).
linter-for-file
(function).
linter-match
(function).
list-parameter-names
(function).
make-file-template
(function).
make-plain-block-comment-linter
(function).
make-plain-line-comment-linter
(function).
make-shell-namespace
(function).
merge-parameter-bindings
(function).
parameter-name-equal
(function).
parameter-replace
(function).
parameter-replacement-text
(function).
read-file-into-list
(function).
really-list-template-parameter-names
(generic function).
really-write-template
(generic function).
sort-parameter-bindings
(function).
string-lines
(function).
string-list-p
(function).
string-match
(function).
string-prefix-p
(function).
string-shebang-end-position
(function).
string-suffix-p
(function).
string-words
(function).
template
(class).
template-environment
(function).
template-repository-empty-p
(function).
template-repository-list-templates
(function).
template-repository-load
(function).
template-repository-load-definition-file
(function).
Definitions are sorted by export status, category, package, and then by lexicographic order.
Flag governing the interactive mode of the linter.
When the flag is a generalised boolean, the linter interactions are enabled
otherwise they are disabled.
When linter interactions are enabled, the system gives the operator the chance to accept corrections guessed by the automatic correction system, if any. Should the operator not take this chance, the anomaly is recorded into the linter report.
When the flag is NIL, anomalies are always recorded into the linter report and
the linter is exiting the program when done.
The default value of the parameter is based on the :SWANK feature.
An aliast providing text replacement for various parameters.
Define inspector NAME emitting hint codes CODE.
The inspector NAME is a function with the given LAMBDA-LIST
and BODY. The inspector is called with a PATHNAME when
it is a file inspector, with a file CONTENTS when it is
a contents inspector, with file LINES when it is a line
inspector or with CODE when it is a CODE inspector.
Find template by DESIGNATOR in *TEMPLATE-REPOSITORY*.
Make a hint CODE for PATHNAME stating a description.
The description is prepared by formatting CONTROL-STRING and FORMAT-ARGUMENTS.
Make a hint CODE for PATHNAME and LINE stating a description.
The description is prepared by formatting CONTROL-STRING and FORMAT-ARGUMENTS.
Lint file PATHNAMES with the given linters.
When the first item of PATHNAMES is a list itself, then the linter is called on pathnames on that list.
Ensure the file CONTENTS under PATHNAME validates some file contents with INSPECTORS.
List INSPECTORS.
Returns a list containing the designators of known licenses.
List the parameters consumed by TEMPLATE-DESIGNATOR.
Returns a list containing the designators of known templates.
Create a new file NAME with SUMMARY.
Create a new lisp project in PATHNAME.
The keyword associated with PARAMETER-NAME.
Write the template identified by DESIGNATOR under PATHNAME.
If environment is provided, it is a plist which is added to the current
*PARAMETER-BINDINGS*.
The PATHNAME argument can actually be a pathname, a string instepreted as a UNIX path, a stream or the value T.
Inspectors emitting hints applying to the file contents.
These inspectors are called with CONTENTS of the file, a string. They are a good place
to validate the presence of fixed texts or the absence of authentication tokens and
the like.
append
.
:most-specific-first
canonical-source-linter
)) ¶extensive-linter
)) ¶Inspectors emitting hints applying to the file.
These inspectors are called with the PATHNAME of the file. They are a good place
to validate the file encoding, or file properties.
append
.
:most-specific-first
canonical-source-linter
)) ¶extensive-linter
)) ¶Inspectors emitting hints applying to individual lines of a file.
The inspectors are called on a LINE of the file, a string. They are a good place
to strip whitespace, detect long lines, etc.
append
.
:most-specific-first
extensive-linter
)) ¶(error "an block-comment-linter requires a comment-prefix.")
:comment-prefix
(error "an block-comment-linter requires a comment-prefix-regex.")
:comment-prefix-regex
(error "an block-comment-linter requires a comment-continuation.")
:comment-continuation
(error "an block-comment-linter requires a comment-suffix.")
:comment-suffix
A SOURCE-LINTER verrifies that a file follows canonical project rules.
The EXTENSIVE-LINTER class represents an extensive set of INSPECTORS.
The extensive list of FILE-INSPECTORS selected by this LINTER.
:file-inspectors
The extensive list of CONTENT-INSPECTORS selected by this LINTER.
:content-inspectors
The extensive list of LINE-INSPECTORS selected by this LINTER.
:line-inspectors
The hint class represents hints that are affecting a file.
The hint class represent hints that are affecting a spcific line in a file.
(error "an inline-comment-linter requires a comment-prefix.")
:comment-prefix
(error "an inline-comment-linter requires a comment-prefix-regex.")
:comment-prefix-regex
The linter class represents a set of hints and a filter selecting files subject to these hints.
File types which are subject to the hints owned by the structure.
:file-type
The FILE-PREDICATE recognises the file of the given FILE-TYPE.
The FILE-PREDICATE can have one of the following forms:
* T
The predicate that recognises every file.
* NIL
The predicate that recognises no file.
* (:HAS-PREFIX STRING)
The predicate that recognises files whose name starts with STRING.
* (:HAS-SUFFIX STRING)
The predicate that recognises files whose name ends with STRING.
* (:HAS-NAME STRING)
The predicate that recognises files whose name is STRING.
* (:HAS-SHEBANG STRING)
The predicate that recognises files with a SHEBANG similar to STRING.
* (:OR PREDICATE1 …)
The disjunction of predicates.
* (:AND PREDICATE1 …)
The conjunction of predicates.
t
:file-predicate
The class of linters for languages whose comments follow the block comment style.
The class of linters for languages whose comments follow the line comment style.
The hint code locally bound by the DEFINE-HINT macro.
The number of the line being hinted at.
The relative pathname of the file being linted.
The source directory for the project being linted.
The table of inspector corresponding to their codes.
A hash-table with all licenses.
The pathname to our license repository.
The current linter used.
The table of linters corresponding to their file types.
The list of parameters that are to be replaced as block variables.
The regular expression matching parameter placeholders.
The pathname to the directory holding program resources.
A hash-table with all templates.
The pathname to our template repository.
Add PATHNAME to LIST-OF-PATHNAMES unless it is already found there.
Signal an anomaly with the given parameters.
Arrange HINTS into an alist mapping CODES to their list of HINTS.
Arrange HINTS into an alist mapping PATHNAMES to their list of HINTS.
Arrange HINTS into an alist mapping KEYS to their list of HINTS.
Break down a list SEQUENCE into consecutive lists of constant TASTE.
The TASTE argument is a function which is applied on sequence elements to
taste them. Taste values are
The answer is an alist whose terms have the form
(TASTE1 . SEQUENCE1)
such that:
1. The concatenation of the SEQUENCE1s yields SEQUENCE.
2. Each element of the list SEQUENCE1 has the given TASTE1.
3. Consecutive terms of the answer have distinct TASTE1.
Count the number of words in STRING.
Define a plain linter from either style and add it to the linter table.
Edit the first line of STRING to FIRST-LINE as a new string.
Edit the last line of STRING to LAST-LINE as a new string.
Find the inspector designated by INSPECTOR-DESIGNATOR.
Find license by DESIGNATOR in *LICENSE-REPOSITORY*.
Find a plain linter by its DESIGNATOR.
The designator is a keyword representing the filetype the linter wants to take
care of.
The first line of STRING.
Set the first line of STRING to NEW-VALUE.
Hint at very long LINE.
The parameter MAXIMUM-LENGTH is set to 100, which matches typical
Common Lisp style guides. This is usually a good value for programming
but pure text should aim at a smaller length. For pure text, a maximum
length of 80 or maybe 70 characters seems appropriate.
When a line has only one word, it is not counted as very long. When a line is a lisp definition, it does not need to be short. This latter rule makes grep more useful.
Hint at PATHNAME when it is not a valid UTF8 file.
Hint at file when it lacks the canonical footer line.
The canonical footer line is a comment featuring a sentence about end of file, like
End of file ‘example.lisp’.
Hint at file when it lacks the canonical header line.
The canonical header line is a comment featuring the filename, a dash and a short description.
Hint at file when it lacks the canonical project identification.
The canonical project identification is a group of comment lines following the first line
and summarising the project name, the project page, the copyright holder and the
license under which the file is released.
Hint at file when it lacks the canonical project license information.
The last line of STRING.
Set the last line of STRING to NEW-VALUE.
The position of the last line of STRING.
The position is represented as multiple values, the START-POS and END-POS.
List licenses held in LICENSE-REPOSITORY-PATHNAME.
Load all licenses on LICENSE-REPOSITORY-PATHNAME.
Load the license definition found in DEFINITION-PATHNAME.
The file located at pathname must be a directory holding a file for each member value.
Ensure the file CONTENTS under PATHNAME validates some file contents with INSPECTORS.
Ensure the file LINES under PATHNAME validate some line INSPECTORS. When CONTENTS is supplied, it is used as the content of the file instead of reading the file contents from PATHNAME. Valid values for CONTENTS are a string or a list of strings.
Find a linter to apply for PATHNAME.
Predicate recognising if a LINTER applies to PATHNAME.
The list of parameter names occuring in TEMPLATE-TEXT.
Make a file template.
Make a block comment linter.
Make an inline comment linter.
Make a shell function namespace out of FILENAME.
The result is a word, without hyphen or dashes, that can be used as
a prefix when defining shell functions and variables.
Make new bindings by adding to BINDINGS1 new parameters found in BINDINGS2. When an entry of BINDINGS2 maps a key to NIL, the entry is ignored. When an entry of BINDINGS2 uses the same key as an entry of BINDINGS1, that entry is ignored.
Predicate recognising equal parameter names.
Two parameter names are equal if they are equal regardless of case or difference
between shell-case or lisp-case.
Substitute parameters from TEMPLATE-TEXT according to BINDINGS.
Read PATHNAME into a list of lines.
When PATHNAME is a list of strings, it is returned as is, which is useful for testing.
Sort BINDINGS in a replacement order.
The replacement order is a topological sort and processing paramters in this order
to handle a template text ensures all possible parameter names have been replaced.
It is an error to sort BINDINGS featuring a cyclic dependency.
Prepare the list of lines in STRING.
Predicate recognising lists of strings.
Predicate recognising TEXT matching a globbing PATTERN.
Predicate recognising TEXT starting with PATTERN.
The end position of a possible shebang line in STRING.
Predicate recognising TEXT ending with PATTERN.
Prepare the list of words in STRING.
Prepare template environment based on ENVIRONMENT.
The prepared template environment features license information and *PARAMETER-BINDINGS*.
List templates held in TEMPLATE-REPOSITORY-PATHNAME.
Load all templates on TEMPLATE-REPOSITORY-PATHNAME.
Load the file template from DEFINITION-PATHNAME.
Decorate a BLOCK-COMMENT for LINTER.
This decorates BLOCK-COMMENT according to FILE-TYPE so that BLOCK-COMMENT can
be inserted as a standalone comment block in a source code file of the corresponding
FILE-TYPE.
A BLOCK-COMMENT can either be a string or a list of strings.
block-comment-linter
) (block-comment list
)) ¶string
)) ¶list
)) ¶inline-comment-linter
) line) ¶Decorate a LINE-COMMENT for LINTER.
This decorates LINE-COMMENT according to FILE-TYPE so that LINE-COMMENT can
be inserted as a standalone comment line in a source code file of the corresponding
FILE-TYPE.
List parameters used by TEMPLATE.
composite-template
)) ¶file-template
)) ¶Write TEMPLATE into PATHNAME.
composite-template
) pathname template-environment) ¶file-template
) pathname template-environment) ¶The class of anomalies spotted by inspectors.
condition
.
The code code of an anomaly.
(quote org.melusina.atelier::*hint-code*)
:code
A short, generic explanation of an anomaly.
(quote (error "an anomaly requires a description."))
:description
A longer, context-specific explanation of an anomaly.
(quote nil)
:explanation
This class represents a composite of other template.
List of templates that form the composite.
Each entry of the list is a list of the form
(TEMPLATE-DESIGNATOR RELATIVE-PATHNAME ADDITIONAL-BINDINGS)
:template-list
This class represents a file template which creates a file when written.
The template text for the file template.
(error "a file template requires a template text.")
:template-text
The hint class represent hints.
The hint code uniquely defines a hint.
(error "a hint must have a unique hint code used as a reference.")
:code
A short description of the hint.
(error "a hint must have a hint description.")
:description
A longer explanation describing the hint.
:explanation
This class presents the various characteristics of a software license.
The full name of the license.
:license-name
The full text of the license.
:license-text
The header of the license.
:license-header
The ID of the license in the SPDX database.
:license-id
This class presents the various characteristics of a template.
Jump to: | (
A B C D E F G H I J L M N P R S T W |
---|
Jump to: | (
A B C D E F G H I J L M N P R S T W |
---|
Jump to: | *
C D E F L P S T |
---|
Jump to: | *
C D E F L P S T |
---|
Jump to: | A B C E F H I L M O P S T U |
---|
Jump to: | A B C E F H I L M O P S T U |
---|