Difference between revisions of "Bien débuter avec le langage script Lua"
From MorphOS Library
(→Modules) |
(→Communication ARexx) |
||
Line 30: | Line 30: | ||
=== Communication ARexx === | === Communication ARexx === | ||
− | + | Le module ''ipc'' contient les fonctions suivantes pour communiquer avec des programmes via leurs ports ARexx : | |
− | * ipc.'''address(port)''' - | + | * ipc.'''address(port)''' - Définit le port Arexx par défaut pour transmettre des commandes. ''address("COMMAND")'' exécute des commandes comme des commandes DOS (bien que la commande Lua ''os.execute()'' fasse la même chose). |
− | * '''ipc.checkport(port)''' - | + | * '''ipc.checkport(port)''' - Teste si un port ARexx est disponible. |
− | * ipc.'''rx(command)''' - | + | * ipc.'''rx(command)''' - Envoi une commande ARexx vers un port définit avec ipc.address. La commande ARexx RESULT retourne le résultat de la fonction. La variable Lua ''rc'' est également définit comme le résultat de rc d'Arexx. |
− | * '''ipc.waitforport(name[, interval])''' - | + | * '''ipc.waitforport(name[, interval])''' - Attend l'ouverture d'un port publique. Le script est arrêté si le port n'est pas trouvé après l’intervalle de temps spécifiée (l'interval de temps par défaut est de 5 secondes). |
− | Note: address() | + | Note: les fonctions address() et rx() sont enregistrées dans l'espace global Lua et devrait être appelé sans le préfixe ''ipc.''. |
− | + | Exemple: | |
<nowiki> | <nowiki> | ||
− | -- | + | -- Charge le module dont nous avons besoin : |
require("ipc") | require("ipc") | ||
− | -- | + | -- Si l'un de port est trouvé, nous allons ouvrir la page officielle de MorphOS et passé en mode plein écran : |
if ipc.checkport("OWB.1") then | if ipc.checkport("OWB.1") then | ||
address("OWB.1") | address("OWB.1") | ||
Line 51: | Line 51: | ||
end</nowiki> | end</nowiki> | ||
− | + | Si l'exemple précédent est sauvegardé dans un fichier appelé ''test.lua'', il peut être exécuté à partir du shell avec la ligne de commande ''LuaX test.lua''. | |
== Documentation == | == Documentation == |
Revision as of 23:03, 14 February 2016
Contents
A propos de Lua
Lua est un langage script puissant, rapide et léger intégré dans MorphOS. Il supporte également les ports de communication ARexx sur MorphOS.
Usage
L'interpréteur Lua est implémenté comme une library partagée (lua.library), qui peut être utilisée en interne avec l'C API de Lua.
Lua peut également être utilisé comme un langage autonome qui peut exécuter des scripts avec la commande LuaX de MorphOS.
Caractéristiques spécifiques MorphOS
Modules
Les librairies standard Lua sont mis en œuvre sous forme de modules partagés et, contrairement à la distribution standard de Lua, ils doivent être chargés séparément avec la fonction require () si nécessaire.
The only module available immediately is package.
Le répertoire MOSSYS:Libs/Lua/ contient tous les modules disponibles. Ils sont inclus dans MorphOS 3.9:
Par exemple, une ligne require("io") est nécessaire avant d'utiliser la fonction io.write().
Communication ARexx
Le module ipc contient les fonctions suivantes pour communiquer avec des programmes via leurs ports ARexx :
- ipc.address(port) - Définit le port Arexx par défaut pour transmettre des commandes. address("COMMAND") exécute des commandes comme des commandes DOS (bien que la commande Lua os.execute() fasse la même chose).
- ipc.checkport(port) - Teste si un port ARexx est disponible.
- ipc.rx(command) - Envoi une commande ARexx vers un port définit avec ipc.address. La commande ARexx RESULT retourne le résultat de la fonction. La variable Lua rc est également définit comme le résultat de rc d'Arexx.
- ipc.waitforport(name[, interval]) - Attend l'ouverture d'un port publique. Le script est arrêté si le port n'est pas trouvé après l’intervalle de temps spécifiée (l'interval de temps par défaut est de 5 secondes).
Note: les fonctions address() et rx() sont enregistrées dans l'espace global Lua et devrait être appelé sans le préfixe ipc..
Exemple:
-- Charge le module dont nous avons besoin : require("ipc") -- Si l'un de port est trouvé, nous allons ouvrir la page officielle de MorphOS et passé en mode plein écran : if ipc.checkport("OWB.1") then address("OWB.1") rx("OPEN NAME http://www.morphos-team.net/") rx("FULLSCREEN") end
Si l'exemple précédent est sauvegardé dans un fichier appelé test.lua, il peut être exécuté à partir du shell avec la ligne de commande LuaX test.lua.
Documentation
It's easy to find all kinds of documentation and solutions for your problems for Lua from the Internet, but here are some recommendations.
Official documentation:
Tutorials by Lua users:
MorphOS autodocs and examples:
- The outdated Lua archive contains some MorphOS specific documentation, but DO NOT INSTALL any binaries from it!
Debugging on MorphOS
- Lua Explorador is a MUI based source level debugger for Lua programs.
Simple Example
A simple example with strings:
require("io") require("string") local firstvar="MorphOS" local secondvar="Rulez" io.write(firstvar) io.write(" "..string.upper(secondvar).."!\n")
When ran from the shell:
Ram Disk:> luax example.lua MorphOS RULEZ! Ram Disk:>
Source Code Examples
- Few MorphOS specific scripts can be found here.
- The SampleCode page at lua-users.org.