[AS] Coup de pouce

Le
benoit
Bonjour,


J'ai besoin de resortir mon bon AS et je suis un paumé après tant
d'années. J'ai un fichier contenant du texte (des définitions) et je
souhaite générer un fichier par entrée.

exemple :

ACCENT V.Arçon.
ACCROCHE-C¼URS Favoris (Vidocq). -- Allusion aux accroche-coeurs
féminins, petites mèches contournées et plaquées prétentieusement sous
la tempe.
ACCROCHER Mettre au Mont de Piété, c'est-à-dire au clou. Ce dernier
mot explique le verbe. -- « Ah ! les biblots sont accrochés.» -- De
Montépin.
ACCROCHER Consigner un soldat, c'est-à-dire l'accrocher à son
quartier, l'empêcher d'en sortir.

Il y a une tabulation entre le mot (ou groupe de mots) qui servira de
nom de fichier et sa définition. Mais il y a des mots avec plusieurs
définitions et je souhaite avoir un fichier (texte) différent (genre
ACCROCHER 1, ACCROCHER 2)

Je suis paumé avec le fait que je veux utiliser la tabulation comme
séparateur (au lieu de l'espace) et qu'il faille aussi séparer par
paragraphe. Un coup de pouce ?


D'avance merci


P.S. je suis en train de me (re)concocter un dictionnaire d'argot qui
utilise une dizaine de sources différentes et Spotlight est idéal pour
rechercher des définitions ou synonymes dans une base de fichiers avec
un fichier par mot.

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne et
personne ne sait pourquoi !" [ Albert Einstein ]
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
josephb
Le #26398591
Benoit a gentiment divagué en ces termes :

J'ai besoin de resortir mon bon AS et je suis un paumé après tant
d'années. J'ai un fichier contenant du texte (des définitions) et je
souhaite générer un fichier par entrée.



Quel type d fichier ? .txt ou .rtf ?
Parce que ce à quoi je pense , passant par une commande Shell pour la
création du dit fichier, la syntaxe est simple pour du .txt et assez
"spéciale" pour du .rtf

À part ça, dans les exemples que tu donnes, les coupures sont générées
par MacSoup, ou la définition et exemples peuvent prendre plusieurs
lignes (paragraphes pour AppleScript) pour un même mot ?
Si c'est sur plusieurs lignes, ça va pas rendre les choses
faciles-faciles !

La tabulation devra effectivement servir de repère (TID) pour créer le
nom du fichier.

--
J. B.
Capitaine, je ne peux pas pulso-relayer l'aéro-aimant parce que la
crevasse oblative est sur le point de neutraliser le penta-transistor
binaire !
josephb
Le #26398597
Bonjour,

Benoit nous a bien apitoyés :

Je suis paumé avec le fait que je veux utiliser la tabulation comme
séparateur (au lieu de l'espace) et qu'il faille aussi séparer par
paragraphe. Un coup de pouce ?



Si tu es toujours intéressé, j'ai pondu un script qui te fait un fichier
.txt par entrée et ajoute un incrément si entrées répétitives.
--
J. B.
Tout va bien à bord. Le morpho-trigloïde cythérien semble calcifrer
correctement. Mais nous devrions transformer le plasma résistant pour
plus de sécurité.
benoit
Le #26398606
Joseph-B
Benoit a gentiment divagué en ces termes :

> J'ai besoin de resortir mon bon AS et je suis un paumé après tant
> d'années. J'ai un fichier contenant du texte (des définitions) et je
> souhaite générer un fichier par entrée.

Quel type d fichier ? .txt ou .rtf ?
Parce que ce à quoi je pense , passant par une commande Shell pour la
création du dit fichier, la syntaxe est simple pour du .txt et assez
"spéciale" pour du .rtf



txt suffit amplement pour ça.

À part ça, dans les exemples que tu donnes, les coupures sont générées
par MacSoup, ou la définition et exemples peuvent prendre plusieurs
lignes (paragraphes pour AppleScript) pour un même mot ?



C'est bien sur une seule ligne

Si c'est sur plusieurs lignes, ça va pas rendre les choses
faciles-faciles !

La tabulation devra effectivement servir de repère (TID) pour créer le
nom du fichier.



Oui. J'ai absorbé une dizaine de dicos sur le web et je cherche à rendre
le tout facile à utiliser. Donc nettoyage du html puis consolidation des
fichiers sur un seul pour mettre de l'ordre et régler les pbs d'un
fichier avec plusieurs entrées (même mot plusieurs définitions) pour un
fichier par entrée.

Tout ça est assez propre et parès de nombreuses relectures les fautes
humaines doivent être limitées (si je maîtrisais le grep il y aurait
poins de fautes:)

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
benoit
Le #26398607
Joseph-B
Bonjour,

Benoit nous a bien apitoyés :

> Je suis paumé avec le fait que je veux utiliser la tabulation comme
> séparateur (au lieu de l'espace) et qu'il faille aussi séparer par
> paragraphe. Un coup de pouce ?

Si tu es toujours intéressé, j'ai pondu un script qui te fait un fichier
.txt par entrée et ajoute un incrément si entrées répétitives.



Je veux bien oui:


P.S. je suis en train de mettre mon nez dans le corvophraseur et je
prépare pour lui des listes de mots plus contemporains.

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
josephb
Le #26398612
Benoit, encore rougissant de son audace s'est lancé :

Je veux bien oui:



Si tu n'y vois pas d'inconvénient, je vais déposer le script sur Cjoint
pour que d'autres puissent profiter du moteur.


Dans l'exemple que j'utilise tu verras que la balise de titre est bien
la tabulation, le titre lui-même pouvant être en deux mots.
Je pense que ça devrait répondre à ton attente.

Tu auras juste à intégrer la gestion du presse-papier pour alimenter
l'enrée du texte original que tu veux éclater en autant de fichiers.

P.S. je suis en train de mettre mon nez dans le corvophraseur et je
prépare pour lui des listes de mots plus contemporains.



Dans le courant de l'après-midi je vais mettre un lien Dropbox pour
CovoX2 (celui qui crée ma signature ici) qui est sur la base des
dictionnaires du CorvoPhraseur original, mais dont j'ai largement
réécrit le moteur pour qu'il tire toute la puissance des fonctions
d'AppleScript.
Donc la manière de taguer les mots est légèrement différente (au lieu de
chiffres abscons, un nom féminin est tagué "F", un mot qui demande
l'élision de l'article ou de la préposition est tagué "e", par exemple)
Tu verras si tu veux t'en servir ou pas.

--
J. B.
Pas de panique ! Turbo-encoder la bulbo-grille érectile ne nous empêche
pas d'inhiber la sustentation pourniflante ni même d'amplifier
l'octo-déflecteur polymorphe.
benoit
Le #26398614
Joseph-B
Benoit, encore rougissant de son audace s'est lancé :

> Je veux bien oui:

Si tu n'y vois pas d'inconvénient, je vais déposer le script sur Cjoint
pour que d'autres puissent profiter du moteur.




Merci, tu me remets ça dans la cabohe. Par contre j'ai un paquet de
questions

Dans l'exemple que j'utilise tu verras que la balise de titre est bien
la tabulation, le titre lui-même pouvant être en deux mots.
Je pense que ça devrait répondre à ton attente.



Exactement.

Tu auras juste à intégrer la gestion du presse-papier pour alimenter
l'enrée du texte original que tu veux éclater en autant de fichiers.



Oui, je vais essayer de faire un script avec des trucs perso qui me
reviennent maintenant à l'esprit. Genre :

- tell "TextWrangler" to set enterText to content of front document
(ce n'est peut-être pas content mais every character, every item, every
paragraph... à voir)

Comme ça je peux imaginer faire un repeat sur les documents ouverts.

- faire un path ailleurs que sur le desktop (mettre 3000 fichiers
dessus...)

Par contre il y a des trucs que je ne comprends pas du tout comme le
shell script ou le « -2 » dans :
-- set indexedname to (words 1 thru -2 of theEntry & space & theIndex)
as text


> P.S. je suis en train de mettre mon nez dans le corvophraseur et je
> prépare pour lui des listes de mots plus contemporains.

Dans le courant de l'après-midi je vais mettre un lien Dropbox pour
CovoX2 (celui qui crée ma signature ici) qui est sur la base des
dictionnaires du CorvoPhraseur original, mais dont j'ai largement
réécrit le moteur pour qu'il tire toute la puissance des fonctions
d'AppleScript.
Donc la manière de taguer les mots est légèrement différente (au lieu de
chiffres abscons, un nom féminin est tagué "F", un mot qui demande
l'élision de l'article ou de la préposition est tagué "e", par exemple)
Tu verras si tu veux t'en servir ou pas.



Je vais m'y mettre une fois que j'ai terminé le script.

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
josephb
Le #26398619
Benoit a prestement tapoté de ses doigts agiles :

Merci, tu me remets ça dans la cabohe. Par contre j'ai un paquet de
questions



C'est comme la bicyclette, quand on arrête de coder on sait encore
enfourcher la bécane, mais on ne vaut plus rien dans les côtes ;-)

Oui, je vais essayer de faire un script avec des trucs perso qui me
reviennent maintenant à l'esprit. Genre :

- tell "TextWrangler" to set enterText to content of front document
(ce n'est peut-être pas content mais every character, every item, every
paragraph... à voir)

Comme ça je peux imaginer faire un repeat sur les documents ouverts.



Alors bon courage ;-)

- faire un path ailleurs que sur le desktop (mettre 3000 fichiers
dessus...)



Indibutablement ! Je me doutais bien que tu voudrais un dossier pour ça,
mais tu n'as plus qu'à mettre son chemin en dur dans le script, à la
place de celui du Bureau.

Par contre il y a des trucs que je ne comprends pas du tout comme le
shell script



Ah, oui, d'aucuns bèent d'admiration devant la concision des commandes
Shell, mais perso je trouve ça horriblement abscons, même si j'utilise
la puissance des outils.
Pour faire la même chose en invoquant TextEdit, ce n'était pas une
ligne, mais 8 qu'il aurait fallu !

ou le « -2 » dans :
-- set indexedname to (words 1 thru -2 of theEntry & space & theIndex)
as text


dans une liste, de mots, caractères, items, le répérage absolu de
l'objet cible se fait soit positivement en comptant du début (à gauche)

/word 4 of "ceci est un exemple hautement pédagogique"/ ==> "exemple"
soit négativement en partant de la fin du conteneur

character -3 of "exemple" ==> "p"

d'où
/words 1 thru -2 of theEntry/ ==> récupère du premier à l'avant dernier
mot du conteneur <theEntry>, bornes incluses.

Bonne continuation.

--
J. B.
Damned, le supra-gain moncturien ne peut pas morvo-phaser la
micro-capacité magnétique ! Nous allons être obligés de recombiner la
capillectomie bouffonnée...
josephb
Le #26398624
Joseph-B estime devoir nous faire part de ceci :

Attention, une correction à apporter au script :


qui devient caduque

Un bug dans le handler / on increment()/
fait que si plusieurs entrées de même nom, au delà de 2 les fichiers
suivants ne sont pas créés mais écrasent le précédent sans incrémenter
le nombre.

Voici le script corrigé, avec exemple inclus pour tester que cette fois
il y a bien création de
ACCROCHER ; ACCROCHER 2 ; ACCROCHER 3 ; ACCROCHER 4

--
J. B.
Il est possible que le morvo-survolteur microscopique puisse rediriger
la singularité à court rayon d'action, mais seulement si nous pouvons
induire le trophoblaste phasé et infra-morfler le continuum vagal !
benoit
Le #26398635
Joseph-B
Benoit a prestement tapoté de ses doigts agiles :

> Merci, tu me remets ça dans la caboche. Par contre j'ai un paquet de
> questions

C'est comme la bicyclette, quand on arrête de coder on sait encore
enfourcher la bécane, mais on ne vaut plus rien dans les côtes ;-)



Exactement, c'est pourquoi on demande un coup de main pour savoir où
redébuter avec une descente, avant d'attaquer le plat... les côtes c'est
pour plus tard ;)

Comme tu fais appel à des routines externes (c'est comme ça que ça
s'appelle ?) je suis un peu largué.

En tout cas c'est plus propre que ce que j'aurai fait, du genre

> Oui, je vais essayer de faire un script avec des trucs perso qui me
> reviennent maintenant à l'esprit. Genre :
>
> - tell "TextWrangler" to set enterText to content of front document
> (ce n'est peut-être pas content mais every character, every item, every
> paragraph... à voir)
>
> Comme ça je peux imaginer faire un repeat sur les documents ouverts.

Alors bon courage ;-)



Pourquoi ? Je boucle en prenant le document au premier plan et quand il
n'y en a plus... j'ai une erreur et je sors ;)

C'est moins de lignes que le tien, mais il n'y a pas la gestion des
fichiers avec un nom identique :

tell application "TextWrangler"
activate
set text item delimiters to tab

repeat until false
set myNewText to paragraph 1 of project window 1
make new text document at project window 1
set character 1 to myNewText
set myName to item 1 of myNewText and ".txt"
save text document 1 to file "HD:Users:me:Desktop:" & myName
without saving as stationery
close text document 1 saving yes
set paragraph 1 of project window 1 to ""
end repeat

set text item delimiters to ""
end tell

Pas testé du tout (je vais d'abord assuré avec le tien). Si je viens de
testé et ça ne marche pas. Je verrais ça plus tard, beaucoup plus tard.

> Par contre il y a des trucs que je ne comprends pas du tout comme le
> shell script

Ah, oui, d'aucuns bèent d'admiration devant la concision des commandes
Shell, mais perso je trouve ça horriblement abscons, même si j'utilise
la puissance des outils.
Pour faire la même chose en invoquant TextEdit, ce n'était pas une
ligne, mais 8 qu'il aurait fallu !

> ou le « -2 » dans :
> -- set indexedname to (words 1 thru -2 of theEntry & space & theIndex)
> as text
dans une liste, de mots, caractères, items, le répérage absolu de
l'objet cible se fait soit positivement en comptant du début (à gauche)



Oui, je m'en rappelle bien et -1 est le dernier.

/word 4 of "ceci est un exemple hautement pédagogique"/ ==> "exemple"
soit négativement en partant de la fin du conteneur

character -3 of "exemple" ==> "p"

d'où
/words 1 thru -2 of theEntry/ ==> récupère du premier à l'avant dernier
mot du conteneur <theEntry>, bornes incluses.



Oui, mais pourquoi l'avant dernier ? Quel est le dernier ? Tu ne
supprimes pas le chiffre ?

Bonne continuation.



Merci

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
josephb
Le #26398638
Benoit
> Alors bon courage ;-)

Pourquoi ? Je boucle en prenant le document au premier plan et quand il
n'y en a plus... j'ai une erreur et je sors ;)



Heu, il n'y avait pas de scepticisme narquois dans ma remarque mes
encouragements allaient l'ensemble de ton projet qui a l'iar assez
ambitieux. C'est tout.

Oui, mais pourquoi l'avant dernier ? Quel est le dernier ? Tu ne
supprimes pas le chiffre ?



La présence du chiffre ayant été implicitement détectée plus haut, cette
commande sert justement à ne garder du nom précédent (stocké en tampon)
que la partie originale en écartant l'index, qui sera incrémenté à part.

ACCROCHER 2
le premier mot est ACCROCHER
l'avant dernier mot est ACCROCHER
Du premier à l'avant dernier inclus = ACCROCHER

il ne reste plus qu'à faire <last word (ici c'est 2) as integer +1> pour
avoir 3
on réassemble le tout avec les TID réglés à /space/
et ça donne ACCROCHER 3.

--
J. B.
Publicité
Poster une réponse
Anonyme