Ajout d'une aide pour une commande d'extension

La fourniture d'aide pour une commande d'extension est facultative. Toutefois, si vous prévoyez de partager la commande avec d'autres utilisateurs, vous souhaiterez probablement inclure de l'aide à cet effet. Deux approches d'inclusion et d'affichage de l'aide pour une commande d'extension sont présentées. L'aide présentée ici est indépendante de toute aide que vous fournissez pour une boîte de dialogue personnalisée associée à la commande d'extension.

Les deux approches utilisent la convention d'affichage de l'aide de la commande d'extension (et ne font rien d'autre) lorsque la syntaxe soumise contient la sous-commande HELP . Cette convention est utilisée par toutes les commandes d'extension installées avec SPSS® Statistics. Pour implémenter cette convention, la spécification XML de la syntaxe de la commande d'extension doit contenir la sous-commande HELP .

Le code XML modifié, qui inclut une sous-commande HELP , pour l'exemple de commande MYORG GETURL EXCEL , est le suivant:


<Command xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="http://www-01.ibm.com/software/analytics/spss/xml/extension-1.0.xsd" 
Name="MYORG GETURL EXCEL" Language="Python">
	<Subcommand Name="" IsArbitrary="False" Occurrence="Optional">
		<Parameter Name="URL" ParameterType="TokenList"/>
	</Subcommand>
	<Subcommand Name="OPTIONS" Occurrence="Optional">
		<Parameter Name="FILETYPE" ParameterType="Keyword"/>
		<Parameter Name="SHEETNUMBER" ParameterType="Integer"/>
		<Parameter Name="READNAMES" ParameterType="Keyword"/>
	</Subcommand>
	<Subcommand Name="HELP" Occurrence="Optional"/>
</Command>

aide au format HTML

Vous pouvez créer un fichier d'aide HTML pour votre commande d'extension et l'inclure dans le bundle d'extension de la commande. Lorsque le bundle d'extension est installé, le fichier HTML est installé avec les autres fichiers du bundle. Dans le code d'implémentation, vous pouvez inclure une fonction simple qui recherche et ouvre le fichier HTML dans le navigateur par défaut. Par convention, le nom de la fonction est helper et est défini comme suit pour Python:


def helper(): 
    import webbrowser, os.path
    path = os.path.splitext(__file__)[0]
    helpspec = "file://" + path + os.path.sep + "markdown.html"
    browser = webbrowser.get()
    if not browser.open_new(helpspec):
        print("Help file not found:" + helpspec)

try:
    from extension import helper
except:
    pass
  • La fonction helper suppose que le nom du bundle d'extension (tel que spécifié dans la zone Nom de la boîte de dialogue Créer un bundle d'extension ou dans la boîte de dialogue Propriétés d'extension si vous avez créé le bundle d'extension à partir du générateur de boîtes de dialogue personnalisées pour les extensions dans la version 24 ou ultérieure) est identique au nom du fichier de code d'implémentation (sauf que le nom du bundle peut comporter des espaces dans lesquels le fichier de code comporte des traits de soulignement). L'utilisation du même nom pour le bundle d'extension et le fichier de code est la convention recommandée. Lorsque le bundle d'extension est installé, le fichier d'aide (et tout autre fichier auxiliaire) est installé dans un dossier portant le même nom que le bundle d'extension, et ce dossier se trouve directement sous le dossier où le code d'implémentation est installé. Dans cet exemple, le bundle d'extension est nommé MYORG GETURL EXCEL et le fichier de code est nommé MYORG_GETURL_EXCEL.py, de sorte que le fichier d'aide est installé dans un dossier nommé MYORG_GETURL_EXCEL, qui se trouve directement sous le dossier qui contient le fichier de code.
  • La fonction helper de cet exemple suppose que le nom du fichier HTML est markdown.html. Compte tenu de la relation entre le nom du fichier de code et l'emplacement du fichier d'aide, il est simple de localiser le fichier d'aide, comme illustré dans l'exemple de code. A cet égard, la plupart des commandes d'extension installées avec SPSS Statistics utilisent la convention markdown.html pour le nom du fichier d'aide et la convention d'égalité du nom du bundle d'extension et du nom du fichier de code.
  • La fonction helper est incluse avec SPSS Statisticset fait partie du module extension . Le bloc try de ce segment de code tente d'importer la fonction helper à partir du module extension . Si la fonction n'est pas disponible dans la copie locale du module extension , la version de la fonction incluse avec le code d'implémentation est utilisée.

Vous pouvez incorporer la fonction helper dans la fonction Run du code d'implémentation en appelant la fonction helper lorsque la sous-commande HELP est spécifiée, comme illustré dans l'exemple de code suivant:


    if args.has_key("HELP"):
        helper()
    else:
        processcmd(oobj, args, geturlexcel)

Pour R, la fonction helper est affichée dans le segment de code suivant:


helper = function(cmdname) {
    fn = gsub(" ", "_", cmdname, fixed=TRUE)
    thefile = Find(file.exists, file.path(.libPaths(), fn, "markdown.html"))
    if (is.null(thefile)) {
        print("Help file not found")
    } else {
        browseURL(paste("file://", thefile, sep=""))
    }
}

if (exists("spsspkg.helper")) {
assign("helper", spsspkg.helper)
}
  • Pour R, la fonction helper requiert le nom de la commande d'extension. Bien qu'il ne soit pas affiché ici, le nom est donné par args[[1]], où args est l'argument qui est transmis à la fonction Run .
  • Comme avec Python, la fonction helper dans R suppose que le nom du fichier de code d'implémentation est identique au nom du bundle d'extension. Le code utilise également la convention markdown.html pour le nom du fichier d'aide.
  • Comme avec Python, vous pouvez incorporer la fonction helper dans la fonction Run en appelant la fonction helper lorsque la sous-commande HELP est spécifiée. Dans R, vous pouvez rechercher la sous-commande HELP comme suit:
    "HELP" %in% attr(args,"names")
  • La fonction helper est incluse avec SPSS Statistics et est nommée spsspkg.helper. Le bloc if qui suit la fonction helper tente d'affecter le nom helper à cette fonction spsspkg.helper . Si la fonction spsspkg.helper n'est pas disponible, la version de la fonction helper incluse avec le code d'implémentation est utilisée.
Remarques :
  • L'aide s'affiche en appuyant sur la touche F1 dans une fenêtre Editeur de syntaxe lorsque le curseur est positionné dans la commande d'extension associée. L'aide s'affiche également si la syntaxe soumise contient la sous-commande HELP .
  • Si vous disposez d'une feuille de style pour votre fichier HTML, vous pouvez l'inclure dans le bundle d'extension avec le fichier HTML. Lorsque le bundle d'extension est installé, la feuille de style est installée dans le même dossier que le fichier HTML. Toutes les commandes d'extension installées avec SPSS Statistics disposent d'une aide HTML et d'une feuille de style associée que vous pouvez utiliser. La feuille de style est également disponible dans la communauté IBM® SPSS Predictive Analytics (Docs>SPSS Statistics> Programmabilité > Extensions, Tools and Utilities for SPSS Statistics> Utilities). Le nom du fichier de feuille de style est extsyntax.css.
  • La fonction helper ne peut pas être utilisée en mode réparti et génère un message d'erreur si elle est utilisée en mode réparti.

Aide en texte brut

Vous pouvez incorporer l'aide dans une variable de chaîne définie dans le fichier de code d'implémentation, puis afficher la chaîne lorsque la sous-commande HELP est spécifiée. Avec cette approche, la chaîne est affichée dans un élément de journal dans le visualiseur SPSS Statistics et fonctionne en mode réparti.

Pour Python, vous pouvez imbriquer le texte d'aide dans une chaîne entre guillemets triples afin de préserver le formatage. Voici un exemple de texte d'aide qui contient uniquement le graphique de syntaxe de la commande MYORG GETURL EXCEL :


helptext = """MYORG GETURL EXCEL URL = "URL specification"
[/OPTIONS ]
   [FILETYPE = {XLS**}]
               {XLSX }
   [SHEETNUMBER = {1**    }]
                  {integer}
   [READNAMES = {ON**}]
                {OFF }
[/HELP ]
"""

Voici un exemple de code ajouté à la fonction Run pour l'affichage conditionnel du texte d'aide lorsque la sous-commande HELP est spécifiée:


    if args.has_key("HELP"):
        print helptext
    else:
        processcmd(oobj, args, geturlexcel)

Pour R, vous incluez le texte d'aide dans une variable de chaîne, puis vous l'affichez de manière conditionnelle avec la fonction writeLines .

Contenu de l'aide

L'aide relative à une commande d'extension doit contenir le contenu suivant:
  • Brève description de la commande d'extension.
  • Un graphique de syntaxe qui indique le nom de la commande, les sous-commandes, les mots clés, les valeurs de mot clé et les valeurs par défaut des mots clés.
  • Exemple simple de la syntaxe.
  • Descriptions de chacune des sous-commandes, des mots clés et des valeurs de mot clé.

Toutes les commandes d'extension installées avec SPSS Statistics incluent de l'aide et peuvent être utiles comme exemples. L'aide est au format HTML et se trouve dans le fichier markdown.html. Pour une commande d'extension particulière, le fichier markdown.html se trouve dans un dossier portant le même nom que la commande et directement sous le dossier dans lequel le code d'implémentation est installé.