π
<-

[TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Pour TI-Nspire OS 3.0 ou ultérieur.

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby Lionel Debroux » 14 Apr 2011, 12:53

J'ai vu les essais de jkag, mais je ne suis pas convaincu que VB soit le meilleur choix :):
Si seul 7-Zip sait compresser de telle manière que la Nspire comprenne le document, il faut invoquer 7z(a) - ce qui est plus facile en langage de script qu'avec VB. Et les substitutions dans des strings risquent d'être légèrement plus simples en PowerShell qu'en VB.

 
Show/Hide spoilerAfficher/Masquer le spoiler
Mais ça, je ne peux pas le poster sur Omnimaga, car ce genre de propos est un peu trop facilement considéré comme "incitation à  une guerre des langages de programmation". J'ai déjà  eu un avertissement pour avoir critiqué l'utilisation de C# pour la "portabilité", raison (évidemment fausse) invoquée par SirCmpwn.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.4%
 
Posts: 6873
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby JayTe » 14 Apr 2011, 13:41

A mon tour :D:

J'ai fait un script en python qui prend 1 ou plusieurs fichiers sources lua, les concatène, convertit les caractères spéciaux et met le tout dans un beau tns :):

Normalement le script est portable (testé sous Vista, Ubuntu et iOS) , je n'utilise que des fonctions de la libraire standard.

Il s'utilise en ligne de commande comme ça:
Code: Select all
python maketns.py output_tns_file.tns input_lua_file_1.lua ... input_lua_file_n.lua


Source:
Code: Select all
import os, zipfile, sys

if len(sys.argv)  3:
    print('Usage: python maketns.py output_tns_file.tns input_lua_file_1.lua ... input_lua_file_n.lua')
    print('Note that different lua source files are simply concatenated.')
    sys.exit(0)

outputFileName = sys.argv[1]
inputFileNames = sys.argv[2:len(sys.argv)]

#hex values of a blank tns file
blankTnsHexValues = [
    '2a', '54', '49', '4d', '4c', '50', '30', '35',
    '30', '30', '14', '00', '00', '00', '0d', '00',
    '3c', '17', '8d', '3e', '73', '45', '68', '44',
    '40', '01', '00', '00', '93', '02', '00', '00',
    '0c', '00', '00', '00', '44', '6f', '63', '75',
    '6d', '65', '6e', '74', '2e', '78', '6d', '6c',
    '0f', 'ce', 'd8', 'd2', '81', '06', '86', '5b',
    '62', '81', 'c2', 'a6', '21', 'a5', 'fd', '08',
    '23', '0f', '92', 'ae', '38', '45', '2a', '05',
    '66', 'bb', 'c7', 'df', '98', '87', '55', '13',
    '61', '47', '75', '24', '66', 'f9', '71', '1f',
    'cd', 'e5', 'b3', '41', '5d', '13', '33', '4e',
    '72', '0e', '08', 'fb', '76', '87', 'e6', '1d',
    '8f', '93', '18', '32', 'e7', '06', '92', '6a',
    '58', 'f0', '77', '22', '09', 'ba', 'ca', '25',
    'b3', '8e', '7b', '52', '98', 'c5', '54', '9a',
    '5f', '8c', '34', '9e', '35', 'f5', '6b', '75',
    '45', 'c7', '7a', '10', '8a', '5f', '6e', '0d',
    'e6', '4a', '1e', '90', '92', 'ba', '1c', 'd1',
    '96', 'b0', 'c1', '19', 'cd', '5c', '0d', '27',
    '9b', '19', '2f', '58', '6f', '49', '14', '95',
    '0d', 'f1', '3a', 'c8', '99', '82', '2e', 'a3',
    'ad', '36', '9e', 'b7', '13', '28', 'aa', '9b',
    '89', 'b5', '30', 'fc', '3f', 'd4', 'd2', '45',
    'be', 'c4', '7f', '86', '87', '71', '25', '09',
    'd1', 'ed', 'b3', 'd3', '92', '69', 'df', 'b5',
    '94', '72', 'a6', '37', '58', '58', 'c4', 'd4',
    '29', 'd1', 'ba', 'af', '84', '4a', '2e', 'cf',
    '2e', '7b', 'fb', 'bd', '91', 'ac', '99', 'ba',
    'a8', 'cc', 'c0', '95', '5b', '21', 'e4', '3d',
    '58', 'fa', '8f', 'c4', '21', 'c7', '66', 'c5',
    '7b', 'a7', '31', '9f', '70', '2d', '1e', 'ce',
    '37', '8a', '13', 'e1', 'e8', '1e', '88', '67',
    '11', '7c', '3e', '7d', '75', '52', 'bd', '9a',
    '40', 'd7', 'af', '3d', 'a1', '10', '3a', 'eb',
    '91', 'c8', '8d', '4a', '24', '9b', '38', '85',
    '8f', '38', 'b5', '3c', 'b5', 'a3', 'fa', '1b',
    'be', '4a', 'ca', '93', 'd7', '41', '69', '02',
    '0d', 'ad', '30', '6d', 'ba', '08', '54', 'fc',
    '13', 'e8', 'fa', 'eb', 'c0', 'fd', 'e8', 'ad',
    '51', '1a', '4a', '89', '95', '3a', '27', 'd4',
    'f2', 'cc', '40', '46', 'cd', 'c9', '8a', '14',
    'd5', '83', 'df', '60', 'dc', 'ce', '06', '5e',
    '9e', '2e', 'b1', 'd3', '54', '97', 'f7', '7b',
    'ae', '6f', '51', '4f', '74', 'dc', '57', '6a',
    'd4', '7f', '37', '2a', '49', 'ba', '86', '2a']

#xml code which should be placed before and after the lua code
xmlCodeBefore = '?xml version="1.0" encoding="UTF-8" ?prob xmlns="urn:TI.Problem" ver="1.0" pbname=""sym/symcard clay="0" h1="10000" h2="10000" w1="10000" w2="10000"isDummyCard0/isDummyCardflag0/flagwdgt xmlns:sc="urn:TI.ScriptApp" type="TI.ScriptApp" ver="1.0"sc:mFlags0/sc:mFlagssc:value-1/sc:valuesc:script'
xmlCodeAfter = '/sc:script/wdgt/card/prob'

convertedLua = ''

for inputFileName in inputFileNames:
    inputFile = open(inputFileName, 'rb')
    #encoding special chars of each line in the lua code
    for line in inputFile:
        conv = line.replace('', 'amp;')
        conv = conv.replace('"', 'quot;')
        conv = conv.replace(''', '#039;')
        conv = conv.replace('', 'lt;')
        conv = conv.replace('', 'gt;')
        convertedLua += conv
    inputFile.close()

xmlCode = xmlCodeBefore + convertedLua + xmlCodeAfter

#compressing the generated xml code to temp.zip
tempZip = zipfile.ZipFile('./temp.zip', 'w', zipfile.ZIP_DEFLATED)
tempZip.writestr('Problem1.xml', xmlCode)
tempZip.close()

outputFile = open(outputFileName, 'wb')

#writing blank tns file
for s in blankTnsHexValues:
    outputFile.write(chr(eval('0x' + s)))

#appending created zip file
zipFile = open('./temp.zip', 'rb')
outputFile.write(zipFile.read())
zipFile.close()
outputFile.close()

#deleting temp.zip
os.remove('./temp.zip')

Fichier téléchargeable en PJ et à renommer en .py


Je suis tombé au passage sur quelque chose d'assez interessant (en réencodant un fichier lua déjà encodé):
Image
Il y a apparemment une vérification syntaxique intégrée à l'OS qui indique à quelle ligne il y a une erreur.

JayTe
TabVar - Etude de fonctions sur Nspire!
Image
User avatar
JayTePremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 81.6%
 
Posts: 207
Joined: 26 Jan 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Polytechnique

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby Adriweb » 14 Apr 2011, 13:45

Bien joué !

C'est en fait le même genre de problemes que j'étais en train de voir avec les changements de symboles lol :P

J'ai ca pour le moemnt :
Code: Select all
cat tmpluafilescript | sed -e "s///g" | sed -e "s/'/'/g" | sed -e "s/"/"/g" | sed -e "s///g" | sed -e "s///g"  tmp2

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.9%
 
Posts: 14839
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby Adriweb » 14 Apr 2011, 13:55

D'ailleurs, tu peux (temporairement ?) corriger ce probleme en faisant ceci :


conv = line.replace('', ' amp; amp;') // sans espaces bien sur


(a la place de la ligne de conversion des )


Puisque normalemnt en lua on utilise que des pour faire le ET logique, pas de simple (enfin, je crois)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.9%
 
Posts: 14839
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby JayTe » 14 Apr 2011, 14:05

Euh, quel problème Adriweb?

Là mon script marche quelque soient les combinaisons de , , ', , j'ai eu droit à l'écran de debug que en retransformant un script déjà transformé (donc avec des gt; quot; dedans, qui ne sont clairement pas valides en lua :): ).

Version compilée pour windows (pour ceux qui n'ont pas python :;): ) disponible ici: - maketns.zip
TabVar - Etude de fonctions sur Nspire!
Image
User avatar
JayTePremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 81.6%
 
Posts: 207
Joined: 26 Jan 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Polytechnique

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby Levak » 14 Apr 2011, 14:17

J'ai l'impression que pour le fichier de sortie, tu demandes à ce qu'il soit déjà crée.
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby JayTe » 14 Apr 2011, 14:23

Euh, je ne crois pas, chez moi ça le créée si il n'existe pas. Tu utilises la version compilée ou la source python? Si c'est la source, tu as quelle version de python?
TabVar - Etude de fonctions sur Nspire!
Image
User avatar
JayTePremium
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 81.6%
 
Posts: 207
Joined: 26 Jan 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Polytechnique

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby Lionel Debroux » 14 Apr 2011, 14:25

Nouvelle version du script sh, avec here documents pour before et after, et quelques espaces en trop pour pouvoir le poster sur un forum:
Code: Select all
#!/bin/bash

# Adriweb 2011
# .lua script to .tns converter

echo '------------------------'
echo '  Lua to TNS Converter'
echo '   (C) Adriweb, 2011'
echo '------------------------'
echo ''
# For now, the script refuses to overwrite / update TNS files.
if [ ! -f "$1" -a -f "$2" ]; then
    TEMPFOLDER="`mktemp -d`"
    TEMPXML="$TEMPFOLDER/Problem1.xml";
# Note: files before and after could be replaced by here documents:
# cat  EOF  $TEMPXML
# [contents of before]
# EOF
    echo 'Adding prolog'
    cat  EOF  "$TEMPXML"
?xml version="1.0" encoding="UTF-8" ?prob xmlns="urn:TI.Problem" ver="1.0" pbname=""sym/symcard clay="0" h1="10000" h2="10000" w1="10000" w2="10000"isDummyCard0/isDummyCardflag0/flagwdgt xmlns:sc="urn:TI.ScriptApp" type="TI.ScriptApp" ver="1.0"sc:mFlags0/sc:mFlagssc:value-1/sc:valuesc:script
EOF
    echo 'Adding the Lua script'
#    cat "$2"  "$TEMPXML"
    cat "$2" | sed -e "s// amp; amp;/g" | sed -e "s/'/ apos;/g" | sed -e "s/"/ quot;/g" | sed -e "s// lt;/g" | sed -e "s// gt;/g"  "$TEMPXML"
    echo 'Adding epilog'
    cat  EOF  "$TEMPXML"
/sc:script/wdgt/card/prob
EOF
#    echo 'Done - Finishing writing the xml file...'
    echo 'Zipping the xml...'
    TEMPZIP="$TEMPFOLDER/zipfile.zip"
    echo "$TEMPZIP"
    WORK="`pwd`"
    cd "$TEMPFOLDER"
    7za a "$TEMPZIP" "$TEMPXML"
    cd "$WORK"
    echo "Done - Concatenating the files..."
    cp "`dirname $0`/blank.tns" "$1"
    cat "$TEMPZIP"  "$1"
    echo "Cleaning up"
    rm "$TEMPXML"
    rm "$TEMPZIP"
    rmdir "$TEMPFOLDER"
    echo "Done ! ($1)"
    #open ./ # Not portable ;)
else
    echo "Usage: LuaToTNS.sh nonexistent output TNS file input Lua file"
fi


A tester sur machine réelle / émulateur, bien sûr :):

Il faut maintenant faire la même chose avec blank.tns. J'utiliserai probablement uuencode/uudecode.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.4%
 
Posts: 6873
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby Levak » 14 Apr 2011, 14:31

JayTe wrote:Euh, je ne crois pas, chez moi ça le créée si il n'existe pas. Tu utilises la version compilée ou la source python? Si c'est la source, tu as quelle version de python?


source, windows, Python 2.6
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: [TOPO]Langage Script TI OS 3.0 - enfin un langage API ?

Unread postby Adriweb » 14 Apr 2011, 14:34

@Levak : Non mais en fait ca doit être bon, j'ai juste pas testé pour un simple &.

Bon du coup, je pense que la version python est la plus "exportable" dans le sens ou il n'y a rien d'autre a installer et que ca tourne sur plus d'OS différents ... :)

Mais bon, les autres versions marchent aussi ^^

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.9%
 
Posts: 14839
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

PreviousNext

Return to Nspire-Lua

Who is online

Users browsing this forum: ClaudeBot [spider] and 5 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2069 utilisateurs:
>2050 invités
>13 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)