JSDB     Home    License    Download    Tutorial    Reference    Projects    Feedback    History

Web / HTTP

var w = new Stream('http://www.jsdb.org/')

writeln(w.readLine());var r = new Record;
w.readMIME(r);
writeln('Header\n',r.toString(),'\n');
 var data = w.readFile();
writeln('Page\n',data);
w.close(); 
Ouvre un nouveau flux HTTP, envoie la requête GET
en utilisant un proxy si nécessaire.
Affiche la réponse HTTP.Déclare un objet de stockage pour l’en-tête.
Lit l’en-tête MIME et la stocke dans r.
 Montre l’intégralité de l’en-tête HTTP.
 Place toute la page Web dans une chaîne.
Affiche la page Web.
Ferme la connexion réseau. 

Email

var m = new Mail('SMTP','username',
    'password','pop-server',  'smtp-server','utf-8',
    'me@email.com');
m.send('me@email.com','subject','Hi there!');
 var inbox = m.get();
 if (inbox.count)
{  writeln('mail from ',inbox.get(1,'Sender'));
  writeln(inbox.getMessage(1));  writeln(inbox.getHTML(1));
}m.close() 
Nouvelle interface Mail
Effectue l’authentification MD5 ;
le pilote POP3/SMTP analyse les messages de type multipart.
Consultez la documentation de la classe pour plus de détails.
 Envoie un nouveau message.
 Lit le courrier arrivé. Mail.get() renvoie un objet Table.
 Si un message est disponible...
    Emetteur ?
Contenu du message   Contenu HTML pour les messages multipart.
 Ferme les connexions aux serveurs. 

Base de données

Table.create("myfile.dbf","NAME 30, SEQUENCE 10")
var myTable = new Table("myfile.dbf");
 for each(var n in ["Alice","Bob","Cynthia"])
myTable.add(new Record("NAME=" + n))
 for (var i = 1; i <= myTable.count; i++)
{  writeln(i, ": ", myTable.get(i, 'NAME') );
  myTable.set(i,'SEQUENCE',i-1);} 
Crée un nouveau fichier xBase avec deux colonnes.
Ouvre le fichier en lecture-écriture.
Ajoute quelques enregistrements.
La numérotation des enregistrements d’un objet Table commence à 1.
 Table.get(rang,colonne) renvoie le contenu de la colonne de l’enregistrement de rang spécifié. La colonne est désignée par son nom ou son indice (à partir de 1).
Table.set(rang,colonne,valeur) modifie immédiatement le fichier de données en affectant le valeur indiquée à la colonne de l’enregistrement de rang spécifié. 

Lit une table SQL construit un index et recherche une valeur.

var db = new ODBC("DSN=driver;UID=login;PWD=password;");
var result = db.query("select * from mytable");
 var searcher = new Index;
for (var i=1; i <= result.count; i++)
{  searcher.add(result.get('NAME'));
}
var i = searcher.find('Mr. Smith');var r = result.getRow(i + 1);


writeln('Data for Mr. Smith');writeln(r.toString());
db.close(). 
Voir ci-après pour une variante plus efficace
result est un objet Table contenant le résultat (de la requête).
 Index est une classe générique dédiée aux recherches au sein de chaînes binaires.
 Ajoute les données à l’index.

Cherche un enregistrement spécifique.
Les valeurs d’indice commencent à 0 d’où l’ajout de 1 [ndlr : pour mémoire la numérotation des enregistrements d’un objet Table débute à 1].
Table.getRow(rang) retourne un objet Record [ndlr : contenant les données de l’enregistrement de rang spécifié].
 Affiche le résultat à l’écran.
 Libère les ressources ODBC. La fermeture de db libère également result. 

Même chose en beaucoup plus rapide …

var result = new Table("odbc://login:password@driver/mytable");
 var searcher = result.index('NAME');
 var r = result.getRow(searcher.find('Mr. Smith'));
 writeln('Data for Mr. Smith');
writeln(r.toString());resut.close() 
Ouvre une connexion ODBC et récupère le contenu de la table.
Les connexions ODBC sont mises en cache et réutilisée.
Table.index(colonne) retourne un objet Index dont le premier indice est 1.
 Table.getRow(rang) retourne un objet Record.
 Affiche le résultat à l’écran.
 Ferme la connexion (et libère les ressources ODBC). 

Texte

Lit un fichier et compte le nombre d’occurrences des mots utilisés.

var source = new Stream("myfile.txt");
var count = new Object;while (!source.eof)
{  var line = source.readLine('\n');
   words = line.split(/\W/g);
  for (var i in words)  {
    if (words[i] == '') continue;    if (count[words[i]])
      count[words[i]]++;    else
      count[words[i]] = 1;  }
}
for (var i in count)  writeln(i,': ',count[i]); 
Ouvre un fichier texte en lecture seule.
count sauvegarde les résultats [ndlr : var count={}].
Répéte jusqu’à ce que la fin du fichier soit atteinte
   Lit une ligne de texte à partir du fichier (en utilisant le retour
   chariot comme séparateur).  Découpe le ligne en un tableau de mots (g pour global).
Pour chaque mot de la ligne...
    Ignore les mots vides [ndlr : sans caractère]
    Est-ce un mot déjà rencontré ?      Oui. Incrémente le compteur.
      Non. Crée un nouveau compteur.
Fin de la lecture du fichier de données
Pour chaque mot stoké dans l’objet count
Ecrit le mot et son nombre d’occurrences 

A suivre…

Autres exemples