====== Le fichier *.s2e ======
==== L'entête ====
Il s'agit d'un fichier texte (format JSON) pour décrire l'extension et les blocs.
"extensionName": "Demo", // Son nom
"description": "A Demo Extension for Arduino", // Sa description
"version": "1.1", // Sa version
"author": "Wangyu(wangyu@makeblock.cc)", // Son auteur
"homepage": "http://www.mblock.cc/posts/create-extensions-for-mblock", // Sa page d'information
"sort":0, // Son indice de tri dans la liste des extensions
"javascriptURL":"js/demo.js", // Le fichier javascript pour son utilisation online
"firmware":"1.0", // La version du firmware pour l'utilisation online [non utilisé]
"extensionPort":0, // Le port utilisé pour l'extension (0 = port série) [non utilisé]
"tags" : "makeblock,demo", // Les mots clés pour l'indexation
==== La définition des blocs ====
"blockSpecs": [
[
"w", // Type de bloc
"digitalWrite( %n , %d.digital )", // Le texte qui apparait dans le bloc avec les paramètres
"digitalWrite", // La fonction appelée en mode Scratch
"13", // Le premier paramètre par défaut
"HIGH", // Le deuxième paramètre par défaut
{ // Le code à insérer
"inc":"", // dans l'include
"def":"", // dans la définition des variables et constantes
"setup":"pinMode({0},OUTPUT); \n", // dans le setup
"loop":"", // dans la boucle principale
"work":"digitalWrite({0},{1});\n" // à chaque utilisation du bloc
}
]
....
]
* Les types de blocs sont :
* h pour l'entête (chapeau) rarement utilisé dans une extension personnelle
* w pour un bloc d'écriture sur une sortie [--]
* r pour un bloc de lecture d'une entrée (--)
* b pour un bloc de test binaire <-->
* Les paramètres sont préfixés par % dans la description du bloc :
* %n pour un nombre
* %s pour un texte
* %d.nom pour une liste de choix de nombres (voir section "menu")
* %m.nom pour une liste de choix de texte (voir section "menu")
* %c pour choisir une couleur
* Les paramètres sont identifiés par leur position dans la description du bloc {x} dans le code des fonctions
* utiliser un #include du type \"lib.h\" et non
==== Les menus et valeurs ====
* Un menu est identifié par son nom et contient la liste des options possibles
* Chaque option est associée à sa valeur
"menus": {
"digital":["HIGH","LOW"]
},
"values":{
"HIGH":1,
"LOW":0
==== Les traductions ====
Les blocs peuvent être traduits automatiquement en fonction du langage choisi :
"translators":{
"zh_CN":{
"Demo Program":"演示程序",
"HIGH":"高电平",
"LOW":"低电平",
"digitalWrite( %n , %d.digital )":"数字口输出( %n ,%d.digital )"
}
}