Skip to content

Commit 9cfc26b

Browse files
authored
Merge pull request #9 from Epithumia/v2
v2.0.0
2 parents bd41ceb + 529aa75 commit 9cfc26b

File tree

10 files changed

+420
-219
lines changed

10 files changed

+420
-219
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/mkdocs_sqlite_console.egg-info/
44
/venv/
55
/build/
6-
6+
**/.vscode
77
**/__pycache__/
88

99
.DS_Store

docs/notes-de-version.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,7 @@
5454

5555
- Correction d'un oubli dans pyproject.toml (dépendance manquante pour faire la documentation locale)
5656
- Correction de typos.
57+
58+
### 2.0.0
59+
60+
- Support pour utilisation en tant que macro {{ sqlide(...) }}

docs/usage.md

Lines changed: 96 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,51 @@
33
## Activer le plugin
44

55
Ajouter dans votre fichier `mkdocs.yml`:
6+
67
```yaml
78
plugins:
89
- search
910
- sqlite-console
1011
```
1112
12-
!!! note
13-
Si vous n'avez aucune entrée dans la section `plugins` de votre fichier de configuration,
14-
vous voudrez sans doute ajouter le plugin `search`. MkDocs l'active par défaut s'il n'y a pas
13+
!!! note
14+
Si vous n'avez aucune entrée dans la section `plugins` de votre fichier de configuration,
15+
vous voudrez sans doute ajouter le plugin `search`. MkDocs l'active par défaut s'il n'y a pas
1516
d'autres `plugins`, et dans le cas contraire, MkDocs demande de l'activer explicitement.
1617

18+
!!! note "Utilisation avec `mkdocs-macros-plugin` ou Pyodide-MkDocs-Theme"
19+
20+
Noter que le plugin `mkdocs-sqlite-console` doit toujours être référencé après les plugins de PMT ou des macros, dans le fichier `mkdocs.yml` :<!-- markdownlint-disable-line MD046 -->
21+
22+
```yaml
23+
plugins:
24+
- search
25+
- macros # avec mkdocs-macros-plugin
26+
- sqlite-console
27+
```
28+
29+
```yaml
30+
plugins:
31+
- search
32+
- pyodide_macros # avec PMT
33+
- sqlite-console
34+
```
35+
1736
Si vous voulez déployer votre site (à l'aide de `mkdocs build` ou `mkdocs gh-deploy`), il faut également ajouter à votre
1837
fichier `mkdocs.yml` une ligne du type
38+
1939
```yaml
2040
site_url: https://monsite.url/chemin
2141
```
42+
2243
Par exemple, ce site est configuré avec
44+
2345
```yaml
2446
site_url: https://epithumia.github.io/mkdocs-sqlite-console
2547
```
2648

2749
!!! error "site_url"
28-
Si vous n'avez pas défini la variable `site_url` dans votre fichier `mkdocs.yml`, les commandes
50+
Si vous n'avez pas défini la variable `site_url` dans votre fichier `mkdocs.yml`, les commandes
2951
`mkdocs build` et `mkdocs gh-deploy` ne fonctionneront pas et signaleront la nécessité de le faire.
3052

3153
## Afficher la console/IDE
@@ -46,13 +68,16 @@ On peut afficher une console/IDE SQLite grâce à la commande `{{ sqlide paramè
4668
- le titre *doit* être entre guillemets
4769
- les chemins vers les fichiers sont relatifs à la racine du site
4870
- les chemins ne peuvent pas contenir d'espace
49-
- les options base et init sont mutuellement exclusives ; l'option base est prioritaire.
71+
- les options base et init sont mutuellement exclusives ; l'option base est prioritaire.
72+
73+
Voir le cas des [utilisations en tant que macro](#as-macros), où les syntaxes diffèrent légèrement.<!-- markdownlint-disable-line MD046 -->
5074

5175
### Quelques exemples
5276

5377
#### Affichage basique
5478

5579
Pour afficher un IDE avec du code SQL d'initialisation et du code pré-saisi :
80+
5681
```markdown
5782
{{ sqlide titre="IDE avec initialisation et code pré-saisi" init="sql/init1.sql" sql="sql/code.sql" }}
5883
```
@@ -77,7 +102,7 @@ Si l'on ne veut que le résultat de la requête sans pour autant afficher l'IDE,
77102
{{sqlide titre="IDE avec une base binaire chargée et code pré-saisi autoexécuté, IDE caché" base="bases/test.db" sql="sql/code.sql" autoexec hide}}
78103
```
79104

80-
{{sqlide titre="IDE avec une base binaire chargée et code pré-saisi autoexécuté, IDE caché" base="bases/test.db" sql="sql/code.sql" autoexec hide}}
105+
{{sqlide(titre="IDE avec une base binaire chargée et code pré-saisi autoexécuté, IDE caché" base="bases/test.db" sql="sql/code.sql" autoexec hide)}}
81106

82107
!!! warning "Titre"
83108
Attention, le titre n'est plus affiché dans ce cas.
@@ -114,12 +139,12 @@ donne :
114139
???+ sql "Bloc accordéon avec initialisation et code pré-saisi"
115140
{{ sqlide titre="Init + Code" init="sql/init1.sql" sql="sql/code.sql" }}
116141
```
117-
donne
142+
143+
donne :
118144

119145
???+ sql "Bloc accordéon avec initialisation et code pré-saisi"
120146
{{ sqlide titre="Init + Code" init="sql/init1.sql" sql="sql/code.sql" }}
121147

122-
123148
!!! bug
124149
Les blocs ne s'affichent pas correctement dans les admonitions qui sont repliées par défaut :
125150
```markdown
@@ -130,20 +155,74 @@ donne
130155
??? sql "Bloc admonition avec initialisation et code pré-saisi"
131156
{{ sqlide titre="Init + Code" init="sql/init1.sql" sql="sql/code.sql" }}
132157

133-
### Usage avec le plugin [macros](https://mkdocs-macros-plugin.readthedocs.io/en/latest/)
158+
## Usage avec le plugin [macros](https://mkdocs-macros-plugin.readthedocs.io/en/latest/) ou [Pyodide-MkDocs-Theme](https://frederic-zinelli.gitlab.io/pyodide-mkdocs-theme/) { #as-macros }
159+
160+
`mkdocs-sqlite-console` est compatible avec l'utilisation du plugin `mkdocs-macros`, ainsi que le thème Pyodide-MkDocs-Theme.
161+
162+
Si l'un des deux est utilisé (avec une manipulation de configuration à faire pour le plugin des macros seul), il est alors possible de déclarer un `sqlide` via un appel de macro :
134163

135-
Le plugin macros utilise les doubles accolades pour définir ses propres blocs de code, ce qui empêche ce plugin de
136-
fonctionner normalement. En conséquence, quand le plugin macros est détecté, la syntaxe change et l'IDE SQLite est
137-
chargée avec la syntaxe suivante :
138164
```markdown
139-
{!{ sqlide paramètres }!}
165+
{{ sqlide(titre="Init + Code", init="sql/init1.sql", sql="sql/code.sql") }}
140166
```
141-
Par exemple `{!{ sqlide titre="IDE avec initialisation et code pré-saisi" init="sql/init1.sql" sql="sql/code.sql" }!}`
142-
affichera :
143167

144-
{{ sqlide titre="IDE avec initialisation et code pré-saisi" init="sql/init1.sql" sql="sql/code.sql" }}
168+
### Syntaxes
169+
170+
Par rapport à l'utilisation normale du plugin, il faut :
171+
172+
- Ajouter les parenthèses autour des arguments,
173+
- Ajouter des virgules entre les arguments,
174+
- Les guillemets autour des valeurs des arguments sont alors indispensables.
175+
176+
??? tip "Anciennes syntaxes - versions 1.0.7 et antérieures"
177+
178+
_Ceci décrit les anciens comportements pour utiliser `mkdocs-sqlite-console` avec le plugin des macros ou PMT activés.<!-- markdownlint-disable-line MD046 -->
179+
Ces méthodes restent utilisables._
180+
{ style="color:#FFAA00" }
181+
182+
Le plugin `macros` utilise les doubles accolades pour définir ses propres blocs de code, ce qui empêche ce plugin de
183+
fonctionner normalement. En conséquence, quand le plugin macros est détecté, la syntaxe change et l'IDE SQLite est
184+
chargée avec la syntaxe suivante :
185+
186+
```markdown
187+
{!{ sqlide paramètres }!}
188+
```
189+
190+
Par exemple, l'appel :
191+
192+
```markdown
193+
{{ sqlide titre="..." init="sql/init1.sql" sql="sql/code.sql" }}
194+
```
195+
196+
...devait alors s'écrire :
197+
198+
`{!{ sqlide titre="..." init="sql/init1.sql" sql="sql/code.sql" }!}`
199+
200+
### Activation
201+
202+
#### Pyodide-MkDocs-Theme
203+
204+
Le thème gère tout automatiquement, à partir de sa version 4.4.6.
205+
206+
Les versions antérieures nécessitent d'utiliser les anciennes syntaxes de déclaration des `sqlide`.
207+
208+
#### `mkdocs-macros-plugin`
209+
210+
Dans le cas d'utilisation du plugin des macros seul, il est nécessaire d'enregistrer la macro depuis votre fichier/module de macros personnalisées.
211+
Par défaut, il s'agit du fichier `main.py` :
212+
213+
```python
214+
215+
def define_env(env):
216+
217+
# Vos macros personnalisées ici:
218+
...
219+
220+
# Enregistrement de la macro sqlide:
221+
sql_plugin = env._conf.plugins['sqlite-console']
222+
env.macro(sql_plugin.sqlide)
223+
```
145224

146-
### Erreurs
225+
## Erreurs
147226

148227
Le plugin détectera les fichiers non existants :
149228

main.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"""
2+
Logistique pour tester en local avec l'utilisation de mkdocs-macros-plugin.
3+
4+
Nécessite d'installer le plugin dans le venv et d'ajouter le plugin macros
5+
dans mkdocs.yml:plugins.
6+
"""
7+
8+
def define_env(env):
9+
sql_plugin = env._conf.plugins['sqlite-console']
10+
env.macro(sql_plugin.sqlide)

mkdocs.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ theme:
1111

1212
nav:
1313
- Home: 'index.md'
14-
- 'Guide d''utilisation': 'usage.md'
15-
- A propos:
14+
- Guide d'utilisation: 'usage.md'
15+
- À propos:
1616
- 'License': 'licence.md'
1717
- 'Historique des versions': 'notes-de-version.md'
1818

@@ -22,9 +22,11 @@ edit_uri: edit/main/docs/
2222

2323
plugins:
2424
- search
25+
# - macros # Activer pour tester en local (Nota: à placer avant sqlite-console)
2526
- sqlite-console
2627

2728
markdown_extensions:
2829
- admonition
2930
- pymdownx.details
3031
- pymdownx.superfences
32+
- attr_list

mkdocs_sqlite_console/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
from .plugin import SQLiteConsole
22

3-
VERSION = "1.0.7"
3+
VERSION = "2.0.0"

mkdocs_sqlite_console/js/sql-wasm.wasm

100755100644
-438 KB
Binary file not shown.

mkdocs_sqlite_console/js/sqlite_ide.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// noinspection SqlNoDataSourceInspection
22

3-
function load(ide, base = '', init = '', run='', espace='') {
3+
function load(ide, base = '', init = '', run = '', espace = '') {
44
var execBtn = ide.querySelector("button.execute");
55
var outputElm = ide.querySelector('pre.sqloutput');
66
var errorElm = ide.querySelector('div.sqlerror');
@@ -10,7 +10,7 @@ function load(ide, base = '', init = '', run='', espace='') {
1010
var worker = espace;
1111
var neww;
1212
if (espace === '') {
13-
worker = new Worker(path + "/js/worker.sql-wasm.js");
13+
worker = new Worker(sqljs_base_path + "/js/worker.sql-wasm.js");
1414
worker.onerror = error;
1515
neww = true;
1616
} else {
@@ -22,24 +22,24 @@ function load(ide, base = '', init = '', run='', espace='') {
2222
}
2323

2424
}
25-
// Open a database
26-
if (neww) worker.postMessage({action: 'open'});
25+
// Open a database
26+
if (neww) worker.postMessage({ action: 'open' });
2727
if (base !== '/') {
2828
const u = new URL(base)
2929
fetch(u).then(res => {
3030
return res.arrayBuffer()
3131
}).then(buf => {
3232
try {
33-
worker.postMessage({action: 'open', buffer: buf}, [buf]);
33+
worker.postMessage({ action: 'open', buffer: buf }, [buf]);
3434
} catch (exception) {
35-
worker.postMessage({action: 'open', buffer: buf});
35+
worker.postMessage({ action: 'open', buffer: buf });
3636
}
37-
if (run !== '') {execute(run, false);}
37+
if (run !== '') { execute(run, false); }
3838
});
3939
}
4040
else if (init !== '') {
4141
execute(init, true);
42-
if (run !=='') execute(run, false);
42+
if (run !== '') execute(run, false);
4343
}
4444

4545
function error(e) {
@@ -53,14 +53,14 @@ function load(ide, base = '', init = '', run='', espace='') {
5353
errorElm.textContent = ''
5454
}
5555

56-
// Run a command in the database
56+
// Run a command in the database
5757
function execute(commands, silent = false) {
5858
tic();
5959
worker.onmessage = function (event) {
6060
var results = event.data.results;
6161
toc("Executing SQL");
6262
if (!results) {
63-
error({message: event.data.error});
63+
error({ message: event.data.error });
6464
return;
6565
}
6666

@@ -72,11 +72,11 @@ function load(ide, base = '', init = '', run='', espace='') {
7272
if (outputElm.childElementCount === 0 && !silent) outputElm.innerHTML = "<p>Requête exécutée correctement, pas de résultat à afficher.</p>";
7373
toc("Displaying results");
7474
}
75-
worker.postMessage({action: 'exec', sql: commands});
75+
worker.postMessage({ action: 'exec', sql: commands });
7676
outputElm.textContent = "Fetching results...";
7777
}
7878

79-
// Create an HTML table
79+
// Create an HTML table
8080
var tableCreate = function () {
8181
function valconcat(vals, tagName) {
8282
if (vals.length === 0) return '';
@@ -97,18 +97,18 @@ function load(ide, base = '', init = '', run='', espace='') {
9797
}
9898
}();
9999

100-
// Execute the commands when the button is clicked
100+
// Execute the commands when the button is clicked
101101
function execEditorContents() {
102102
noerror()
103103
execute(editor.getValue() + ';');
104104
}
105105

106106
execBtn.addEventListener("click", execEditorContents, true);
107107

108-
// Performance measurement functions
108+
// Performance measurement functions
109109
var tictime;
110110
if (!window.performance || !performance.now) {
111-
window.performance = {now: Date.now}
111+
window.performance = { now: Date.now }
112112
}
113113

114114
function tic() {
@@ -120,7 +120,7 @@ function load(ide, base = '', init = '', run='', espace='') {
120120
console.log((msg || 'toc') + ": " + dt + "ms");
121121
}
122122

123-
// Add syntax highlihjting to the textarea
123+
// Add syntax highlihjting to the textarea
124124
var editor = CodeMirror.fromTextArea(commandsElm, {
125125
mode: 'text/x-mysql',
126126
viewportMargin: Infinity,

0 commit comments

Comments
 (0)