Carnet Wiki

free hugs

Pour l’instant c’est un brouillon pour documenter le projet du pugin.

Il ne s’agit donc pas de la documentation d’un plugin.
Il n’est pas encore codé.


Une syntaxe pivot pour SPIP. Basé sur le langage de programation curl ou inspiré de lui. Bref un langage de script tout en accolades qui donne le nom au projet.


Introduction

L’objectif est de proposer une syntaxe pivot pour SPIP (mais aussi éventuellement pour d’autres logiciels).

Probleme

C’est à dire :

Probleme 1 : Disposer d’un langage de script qui puisse être interpréter coté serveur par l’un des langages installé sur le serveur mais qui étant indépendant de celui-ci permette de proposer un programme et des interpreteurs réduit pour chaque langage pour pouvoir déployer SPIP sur les dispositifs les plus divers.

A faire : Lister les interpréteurs à réaliser en priorité :

Une liste en exemple à confirmer et à ordonner :

PHP
Javascript
langage de script linux :
Shell bash (autre shell ?)
Sed
Hawk
TCL

Nota : je ne connais pas bien ces langages j’aimerai des information sur leur interets, leur avantages par rapport à PHP ou javascript notemment. Pricipalement en terme de performance. Leur limite et éventuellement savoir qu’il ne faut pas ce lancer là dedans.

des langages de programation haut niveau :
Smalltalk
Java
C, C++
Perl
Python
Ruby

Quoi d’autre ?

Probleme 2 : Pouvoir uniformiser les différents système de scripts de SPIP :

Personnelement ce qui me déplait dans les différentes syntaxe de SPIP c’est le manque d’homogénéité formelle.

Dans les textes :
-  une syntaxe en accollade dérivée de Latex pour les titres
-  une syntaxe "wiki" avec des raccourcis adhoc et specifique pour chaque cas
-  une syntaxe pour les modeles
-  une syntaxe pour les plugin jeu pour la serilaisation de données.

Une syntaxe encore différente pour les squelettes

Un langage de programmation pour historique (PHP)

Indépendamment de SPIP un langage de programation client (javascript), un langage de style (css) du balisage (xml)

En entrée cela demande donc un apprentissage certain.

La proposition que je fais serait d’unifier tout cela dans un langage commun.

La proposition précise que je fais serait d’utiliser la syntaxe du langage de programmation curl (ne pas confondre avec cURL)
http://en.wikipedia.org/wiki/Curl_%28programming_language%29

Ou un autre langage présentant de l’homoiconicité http://en.wikipedia.org/wiki/Homoiconicity

Suggestion de doc à ajouter : ...

Suggestion de fonctionalités : ...

Des idées comme ça en passant : ...

Les s-expressions

Les s-expression sont définies dans un internet draft. http://people.csail.mit.edu/rivest/Sexp.txt. Il faudrait trouver une version plus récente.

Le langage utilise les s-expressions. Une S-Expression (ou expression symbolique) est une convention pour la représentation de données ou d’expressions d’un programme sous forme textuelle. Elles ont l’avantage de fournir une syntaxe versatile pour la definition de structures de données et de code de programmes.

Les s-expressions sont utilisées par la plupart des langages de programation dérivées de Lisp.

Les détails de la syntaxe et les types de données supportés diffèrent en fonction du langage :

  • la plus commune est l’utilisation de la notation préfixée parenthésée, c’est à dire une forme d’écriture dans laquelle les opérateurs sont écrits à gauche des opérandes.

notation préfixée parenthésée
Exemple en Lisp

(* 3 (+ 4 5 6))

La notation préfixée de l’expression 3 * (4 + 5 + 6) est analogue à l’expression en langage naturel : « le produit de 3 et de la somme de 4, 5 et 6 ».

On documente un peu la syntaxe de curl

On verra ce que l'on maintient

Je documente aussi pour moi. Cela me permet de synthétiser la diverse documentation que je peux trouver

Historique

Curl est un langage de programmation crée au sein de MIT par diverses personnalité dont Tim Berners-Lee.

The founders of Curl Corporation were twelve members of the MIT
community, with a technical team led by Stephen A. Ward, an
internationally recognized computer scientist ; Michael L. Dertouzos,
Director of the MIT Laboratory for Computer Science ; and Timothy
Berners-Lee, the creator of the World Wide Web and Director of the W3C.

Curl est un "langage de contenu" comme le html dont mais dont les fonctionalité sont étendues pour couvrir l’ensemble du spectre des besoin du web :

  • Un langage de présentation, c’est à dire :
    • un langage de simple de balisage pour formater du texte,
    • un langage pour les animations
  • un langage pour la programation.

Il s’inspire du langage de programation Lisp.

http://developers.curl.com/userdocs/docs/en/dguide/basic-syntax.html
http://developers.curl.com/userdocs/docs/en/dguide/data-types.html

Caractères réservés

L’un des avantage du langage de programation curl est le faible nombre de caractères réservés ce qui permet de l’utiliser efficacement pour formater du texte.

  • Les caractères réservés dans le langage de programation Curl sont : , , \, and |.
  • Pour utiliser un charactère réservé dans un texte litteral, placer le caractère d’échapement (\) immediatement devant.
    -  * D’autres caractères d’échapement incluent \n for newline, \r for carriage return, \t for tab, and \ for a non-breaking space.
  • L’usage de \uXXXX or \UXXXXXXXX pour spécifier n’importe quel caractère par sa syntaxe Unicode hexadecimale.

Commentaires

Curl/Example 0 : Les commentaires

{text A comment can be on a line by itself,
|| A comment on a line by itself
or it can be at the end || A comment on the same line as code
of a line.}

à completer ....

Expressions

Curl/Example 1 : Hello world

{Curl 5.0, 6.0, 7.0 applet}
{text
   color = "blue",
   font-size = 16pt,
   Hello World}

Utiliser les variables

à completer ....

Les opérateurs arithmétiques

à completer ....

Du texte formaté

Curl/Example 2 :

{paragraph
   paragraph-left-indent=0.5in,
   {text color = "red", font-size = 12pt,
     Hello}
   {text color = "green", font-size = 12pt,
     World}}

Curl/Example 3 :

{stanza 24 lines 185-192
In the name of all created,
Let us hear no more, my brothers;
Are we older than all others?
Are the planets in our way?"
"Hark," said one; "I hear the River,
Calling always, night and day."
"Forward, then! The lights are shining,"
Said the Watcher by the Way.
}

variables

@nomvarable

ou

{{@}nomvariable}

(p (@ (id "id1")) "par1")) SXML

|| Listing 7-1: Displaying data in the Output Log 

{curl 1.7 applet}
{applet license = "development"}
{let bottles-on-wall:int = 100}
{while bottles-on-wall > 0 do
    set bottles-on-wall = bottles-on-wall - 1
    {output "Bottles left: " & bottles-on-wall}
}
|| Listing 7-2: Displaying data in a table

{curl 1.7 applet}
{applet license = "development"}
{value
    let bottles-on-wall:int = 100
    let tbl:Table = 
        {Table background = "#f0f0f0",halign = "center",
            border-color = "gray", border-width = 1pt,
            {column-prototype {bold Time}, {bold Bottles}}
        }
    {for time = 1 to 100 do
        set bottles-on-wall = bottles-on-wall - 1
        {tbl.add {column-prototype time, bottles-on-wall}}
    }
    tbl
}
|| Listing 7-3:    Multiple assignment with let and set

{curl 1.7 applet}
{applet license = "development"}

|| x is initialized to 3.0
{let x:double = {truncate 10, 3} }
Initially x: {value x}

|| gives the same result as above 
{set x = {truncate 10/3}}
Now x: {value x}

|| q == 3 (10 div 3), and r == 1 (10 rem 3}
{let (q:int, r:int) = {truncate 10, 3}} 
Initially q: {value q}, r: {value r}

|| now q == 4 (22 div 5), and r == 2 (22 rem 5)
{set (q, r) = {truncate 22, 5}}
Now q: {value q}, r: {value r}
|| Listing 7-4:    Displaying data using a value expression

{curl 1.7 applet}
{applet license = "development"}
{let bottles-on-wall = 100}
{set bottles-on-wall = bottles-on-wall - 1}
The number of bottles left is {value bottles-on-wall}.

Quelques liens

http://code.google.com/p/curl-orb/

Syntaxe de formatage

Syntaxe minimale à prendre en compte pour le formatge des documents

p, paragraphe,
paragragraph continuation

headings,

Syntaxe :

{heading level=level-number,  text }

Exemple :

|| headings.curl
{curl 1.7 applet}
{applet license = "development"}

{heading level=1,  A level one heading }
{br}
{heading level=2,  A level two heading  }
{br}
{heading level=3,  A level three heading }
{br}
{heading level=4,  A level four heading }
{br}
{heading level=10,  A level ten heading }

simple list, unordered list, ordered list

definition list, glosary list, nested list, list part

highlithed phrase, title citation, note, quote

table

Exemple 1 :

{curl 1.7 applet}
{applet license="development"}
{set-document-properties font-size=10pt}

{table
    {row {cell Vineyard} {cell Price} {cell Rating}}
    {row {cell WonkaKenzie Estate} {cell $26.49} {cell Delicious}}
    {row {cell Tewksbury Cellars} {cell $18.69} {cell Very Good}}
    {row {cell Hillsboro Vineyards} {cell $24.99} {cell Very Good}}
    {row {cell Tualitin Valley} {cell $22.19} {cell Very Good}}
    {row {cell Foggy Valley Estate} {cell $6.99} {cell Cheap}}
}

syntaxe aditionelle
section, sect (linux doc)

type de document
article

header part
article
title
author
date
abstract
toc

{curl 1.7 applet}

{applet license = "development"}



|#

Program name : start.curl

Author : John Doe

Comments : This is my first curl applet.

#|



Hello World ! || These 2 words are displayed on the screen
- Mise à jour :26 janvier 2018 à 11h05min