OVH Cloud OVH Cloud

transformation d'une "plist" en "binaire"

17 réponses
Avatar
pere.noel
j'ai réalisé une petite application qui synchronize les signets entre
Safari et Firefox.

je lis les signets de Safai comme ça (par prog) :

signets=`defaults read "#{HOME}/Library/Safari/Bookmarks"`


c'est une "plist" (extension) qui a l'allure suivante :

{
Children = (
{
Children = (
{
Children = (
{
Children = (
{
URIDictionary = {
"" =
"file:///Users/yvon/Desktop/Nice/sommaire.html";
title = "Pr\\U00e9sentation du
langage NICE - Club d'entraide des d\\U00e9veloppeurs francophones";
};
URLString =
"file:///Users/yvon/Desktop/Nice/sommaire.html";
WebBookmarkType =
WebBookmarkTypeLeaf;
WebBookmarkUUID =
"69DCC651-38EC-4E7D-8D3C-F3F28CEC2229";
},
{
URIDictionary = {
"" =
"http://nice.sourceforge.net/";
title = "The Nice programming
language";
};
URLString =
"http://nice.sourceforge.net/";
WebBookmarkType =
WebBookmarkTypeLeaf;
WebBookmarkUUID =
"414CD038-C186-431B-A960-7A7A65F6B327";
},
[...]


dans le répertoire "#{HOME}/Library/Safari/" elle est en "binaire".

après avoir lu cette plist je la transforme en xml, merge les bookmarks
firefox, supprime les doublons, purge les "répertoires" vides et enfin
fait la transfo inverse, vers le format ci-dessus.

j'en suis là.

ce qu'il me manque c'est un outil ou une commande qui transformerait ma
"plist" de mode text en mode "binaire"....

c'est ma question car je suppose que ça existe, je cherche un outil en
command line...(accessibel depuis Ruby).
--
une bévue

7 réponses

1 2
Avatar
luc
Une bévue wrote:

génial ce truc il a un daemon pour récupérer l'url tapée dans safari, je
veux dire comment safari sait que bwana existe dans mon dossier
utilitaires lui file "l'url" et affiche, ça m'intrigue, bwan est comme
une sorte d'extension à safari et apparemment c'est détecté
automatiquement par le système ?


L'appli Bwana définit simplement dans son Info.plist une liste de
'CFBundleURLTypes' avec un seul 'CFBundleURLSchemes' dont la valeur est
'man' et les LaunchServices s'occupent du reste automatiquement. Simple
et efficace.

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:


L'appli Bwana définit simplement dans son Info.plist une liste de
'CFBundleURLTypes' avec un seul 'CFBundleURLSchemes' dont la valeur est
'man' et les LaunchServices s'occupent du reste automatiquement. Simple
et efficace.


et supposons, j'ai une appli "machin" je déclare un url type 'bidule"

donc un nouveau type, si quelqu'un entre sur son nav :
"bidule:sa_string" mon appli "machin" (RubyCocoa) (moyennant sans doute
qqc), peut récupérer "sa_string" et faire joujou avec ???
--
une bévue

Avatar
pere.noel
Patrick Stadelmann wrote:


Bwana annonce gérer le protocole man: et ça suffit. Même mécanisme que
telnet: qui ouvre le Terminal par exemple.


c'est ce que j'avais supputé, merci !
--
une bévue

Avatar
Patrick Stadelmann
In article <1hbiuqv.1s6r5sa1jp9shlN%,
(Une bévue) wrote:

et supposons, j'ai une appli "machin" je déclare un url type 'bidule"

donc un nouveau type, si quelqu'un entre sur son nav :
"bidule:sa_string" mon appli "machin" (RubyCocoa) (moyennant sans doute
qqc), peut récupérer "sa_string" et faire joujou avec ???


Oui, il faut que juste l'application supporte l'Apple Event "Get URL"
qui est utilisé pour passer l'URL.

Patrick
--
Patrick Stadelmann

Avatar
pere.noel
Patrick Stadelmann wrote:


Oui, il faut que juste l'application supporte l'Apple Event "Get URL"
qui est utilisé pour passer l'URL.


Génial ce système je vais me rencarder sur ce Get URL, faudra sans doute
faire un ch'ti wrapper Obj-C afin que RubyCocoa puisse l'avaler ?

ou, puis-je récupérer ça dans une NSApplication "tout bêtement" ?

mon idée est la suivante : j'ai écrit un truc en rubycocoa qui fait le
merge des signets safari et firefox (pour l'instant ; + pour + tard) et
donc, avec cette astuce je peux faire en sorte que en tapant une url du
genre ci-dessus ça affiche (au moins dans safari car avec firefox j'ai
essayé man:plutil => que dalle) les signets "mergés"...

je sents que ça va en intéresser...


en fait ce système est le même que celui utilisé sur linux/konqueror
depuis des années ??? (je parle de man: comme url)
--
une bévue

Avatar
laurent.pertois
Patrick Stadelmann wrote:

Bwana annonce gérer le protocole man: et ça suffit. Même mécanisme que
telnet: qui ouvre le Terminal par exemple.


Sogudi, un input manager qui fait d'autres trucs, le fait aussi, il est
plus joli en plus :)

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
luc
Laurent Pertois wrote:

Sogudi, un input manager qui fait d'autres trucs, le fait aussi, il est
plus joli en plus :)


Effectivement, et en plus il gère correctement les manpages gzippées de
DarwinPorts (puisqu'il filtre simplement le man standard avec man2html),
contrairement à Bwana.

Allez hop, poubelle Bwana. Merci du tuyau! :)

--
Luc Heinrich

1 2