DSC snippets pour VSCode
Simplifie le développement en DSC
Explication
Cette extension permet d'ajouter des raccourcis spécifique au language DSC.
Elle permet aussi le formatage à la sauvegarde et la vérification des variables
Une fois l'extension installée, il suffit de taper n'importe quel snippet (précédé d'un // dans la catégorie Features) dans son dsc puis d'appuyer sur entrée.
Le curseur se placera automatiquement à la place du $1. Pour passer au $2, $3... il suffit d'appuyer sur tab.
Les snippets ne sont pas sensibles à la casse.
Features
QUESTIONS
//TEXT
TEXT[256];
//OPENTEXT, OPENT
OPENTEXT[4096];
PARTIE QUESTIONS
//OTH
OTH : TEXT[128] REQUIRED : 'size=20',
//Autre
Autre, précisez@NS$:@NS$" + OTH : TEXT[128] REQUIRED : 'size=20',
//specify
Please, specify@NS$:@NS$" + OTH : TEXT[128] REQUIRED : 'size=20',
//bdcomscout, scoutbdcom
90 'ROM',
91 'tagglo not recorded'
//bdcomqst, qstbdcom
COM "Quel est le code postal de votre commune de résidence principale ?" : TEXT[5] REQUIRED : 'size=6, maxlength=5'
COMBIS "Sélectionnez votre commune de résidence :" : {
99999 "Autre commune"
} REQUIRED : 'dropdown=yes'
tagglo "Taille d'agglomération" : {
1 "Moins de 2 000 habitants",
2 "2 000 à 20 000 habitants",
3 "20 000 à 100 000 habitants",
4 "Plus de 100 000 habitants",
5 "Agglomération parisienne"
}
uda5 "Région UDA 5" : {
1 "Région Parisienne",
2 "Nord Ouest",
3 "Nord Est",
4 "Sud Ouest",
5 "Sud Est",
6 "ROM"
}
NEWPAGE
//NP
NEWPAGE();
$1;
ENDPAGE();
//NPA
NEWPAGE();
ASK($1);
ENDPAGE();
//NPAUTOGRID
NEWPAGE("pglayout=mode5");
ASK($1, "display=autogrid");
ENDPAGE();
//NPMESSAGE
NEWPAGE();
MESSAGE("$1");
ENDPAGE();
//NPNOTE
NEWPAGE('javascript=module_note.js,jscript=note(false)')
BEGINCANVAS(c,'bclass=qbody qnote')
ASK($1,'highlight=no,transpose=yes')
ENDCANVAS(c)
FOR i=0 TO 10 DO {
SETBLOCK(c:0,i,0,i,'class=case-echelle case_'+i)
}
DISPLAYCANVAS(c)
ENDPAGE()
//NPNOTEI
NEWPAGE("javascript=module_note.js,jscript=slimgrid(768:99):note(true)")
BEGINCANVAS(c,'bclass=qbody slimgrid qnote')
ASK($1,'highlight=no')
ENDCANVAS(c)
SETBLOCK(c:0,0,0,11,'class=colheading qhidden')
FOR i=0 TO 10 DO {
SETBLOCK(c:1,i+1,COUNT(GETQARRAY($1,0)),i+1,'class=case-echelle case_'+i)
}
DISPLAYCANVAS(c)
ENDPAGE()
CANVAS
//BEGINCANVAS
BEGINCANVAS(c)
$1
ENDCANVAS(c)
SETBLOCK(c:$2)
DISPLAYCANVAS(c)
//SETBLOCK
SETBLOCK(c:$1,$2,$3,$4,'$5')
FOR
//FOR
FOR $1=$2 TO $3 DO {
$4
}
//FOREACH
FOREACH $1 IN lst_$2 DO {
$3
}
CHECK
//CHECK
CHECK: {
IF $1 THEN WARNING($2,"$3")
}
//warning
WARNING($1, "$2");
IF/ELSE
//IF
IF $1 THEN {
$2
}
//ELIF, ELSEIF, ELSE
ELSE IF $1 THEN $2
//AND
AND;
//IFt
IF test==1 THEN {
NEWPAGE()
MESSAGE('TEST ONLY','class=test')
ASK($1,'disabled=yes')
ENDPAGE()
}
FUNCTIONS
//GETCATTR
GETCATTR($1, $2, "$3", "");
//GETQATTR
GETQATTR($1, "$2");
//GETQLIST
GETQLIST($1);
//GETQARRAY
GETQARRAY($1, 0);
//STR_REPLACE
s = STR_REPLACE($1, $2, $3, $4);
//SETQATTR
SETQATTR($1, "$2", "$3");
//SETQLIST
SETQLIST($1, $2);
//RESETQLIST
RESETQLIST($1);
//SETQARRAY
SETQARRAY($1, $2, $3);
//RESETQARRAY
RESETQARRAY($1, $2);
//SETQMAXSEL
SETQMAXSEL($1, $2);
//RESETQMAXSEL
RESETQMAXSEL($1);
FUNCTIONS (to declare)
//function
FUNCTION $1 RETURNS ${2|INTEGER,STRING|}
où $1 peut être CHECKALLQUOTA, CHECKQUOTA, getbdcom, GETQUOTA, INCALLQUOTA, INCQUOTAFULL, QUOTAASSIGNVALUE, QUOTAASSIGNVALUEP, SETQTEXT, STR_TOLOWER, STR_TOUPPER, xGETANSWER, xGETLABEL, xSETQDICTLABEL, xSETDIMLABEL, xSETQTEXT, ou un autre nom de fonction
//CHECKALLQUOTA
IF CHECKALLQUOTA()==0 THEN { qstatus=4 ; k=INCQUOTAFULL() ; STOP(urlqf) }
//CHECKQUOTA
CHECKQUOTA("QT_$1");
//GETQUOTA
GETQUOTA("QT_$1");
//INCALLQUOTA
k = INCALLQUOTA();
//INCQUOTAFULL
IF CHECKALLQUOTA()==0 THEN { qstatus=4 ; k=INCQUOTAFULL() ; STOP(urlqf) }
//QUOTAASSIGNVALUE
k = QUOTAASSIGNVALUE("QT_$1", $2, $3, $4);
//QUOTAASSIGNVALUEP
k = QUOTAASSIGNVALUEP("QT_$1", $2);
//SETQTEXT
SETQTEXT($1, "$2");
//STR_TOLOWER
STR_TOLOWER($1);
//STR_TOUPPER
STR_TOUPPER($1);
//xSETQDICTLABEL
xSETQDICTLABEL("$1", $2, "$3");
//xSETDIMLABEL
xSETDIMLABEL("$1", $2, $3, "$4");
DIVERS
//pgl, mode5
"pglayout=mode5";
//qnotes
qnotes = "$1";
//anchor
anchor = "yes";
//xchoice
xchoice = "yes";
//shufflechoices
shufflechoices = yes;
//shuffleitems
shuffleitems = yes;
//slimgrid
display=slimgrid:classrows=true:active=$1
//img
@IMG:$1$
LISTS
//lst_note_0_10
lst_note_0_10 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
//lst_yesno
lst_yesno = { 1 "Yes", 2 "No" }
//lst_ouinon
lst_ouinon = { 1 "Oui", 2 "Non" }
PARTIE ROUTE
//ANSWER
ANSWER($1);
//bdcomrte, rtebdcom
IF CLEANMODE()==0 THEN {
NEWPAGE("javascript=bdcom.js,jscript=bdcom('COM':'"+TOSTRING(COM)+"':'COMBIS':'"+TOSTRING(COMBIS)+"')")
ASK(COM)
ASK(COMBIS)
CHECK: {
IF((COM=~'^[0-9]{5}$') AND ANSWER(COMBIS)) THEN {
IF(getbdcom(COM,COMBIS) <> 1) THEN WARNING(COM,"Le code postal saisi n'est pas valide.")
}
}
ENDPAGE()
IF test==1 THEN {
NEWPAGE()
MESSAGE('TEST ONLY','class=test')
ASK(uda5,'disabled=yes')
ASK(tagglo,'disabled=yes')
ENDPAGE()
}
IF uda5 IN {6} THEN { scout=90$1 ; qstatus=3 ; STOP(urlso) } // uda5=ROM
IF NOANSWER(uda5) OR NOANSWER(tagglo) THEN { scout=91$2 ; qstatus=3 ; STOP(urlso) } // uda5/tagglo not recoded
} ELSE {
NEWPAGE()
ASK(uda5)
ENDPAGE()
}
//MESSAGE
MESSAGE("$1", "class=$2");
//SHUFFLE
SHUFFLE($1);
//SUBLIST
SUBLIST($1, $2, $3);
SIG
//SIG_DEFWEIGHT
@[SIG_defweight=$1]
//SIG_FIXED
@[SIG_fixed='$1']
//SIG_NOANSWER
@[SIG_noanswer='$1%']
//SIG_RANGES
@[SIG_ranges='[$1,$2]=$3']
//SIG_WEIGHT
@[SIG_weight=$1]
//SIG_XDOMAIN
@[SIG_xdomain='$1%']