dsc-snippets README
Simplifie le développement en DSC
Explication
Cette extension permet d'ajouter des raccourcis spécifique au language DSC.
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.
Versions external et internal
2 versions existent :
EXTERNAL : version pour SCROLL et les clients contenant uniquement les snippets relevant strictement du langage CAWI
INTERNAL : version utilisée en interne à GIDE, plus riche que la version précédente car elle contient également les snippets basés sur nos habitudes de travail (bdcom, template, etc...)
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%']