rejetto forum

Default file mask to ~setting

Guest · 21 · 7961

0 Members and 1 Guest are viewing this topic.

Offline TCube

  • Tireless poster
  • ****
    • Posts: 440
    • View Profile
mars,
ton lien m'a fait sourire  :D..  un retour vers le Sgml des années 1960 e quelque sorte. Le concept n'est guère utilisé sauf pour les courriers industriels de types factures/relevés bancaires, etc.
TCube
Make it idiot-proof and I will make a better idiot


Offline Mars

  • Operator
  • Tireless poster
  • *****
    • Posts: 2068
    • View Profile
{{$section}} ou <#section> ou toute autre forme quelle que soit la syntaxe , au final l'expression entière est remplacée, 2 choses comptent: la lisibilité des templates et aussi la difficulté d'interprétation au niveau de delphi ( faut aussi penser au programmeur)

faire un truc du genre  :(  

<script type="text/Rejetto">
{load nom-fichier};
{switch %user% ....};
{section|mysection}
</script>
selon moi c'est trop proche du javascript

pour ma part je préfère les chose plus simples où <#nom_employe> ou %user% sont remplacés par leur équivalent meme si on introduit un peu de language  style basic sans aller jusqu'au POKE ;D

Ce qui est interressant c'est de remplacer une partie du javascript par des macros HFS, comme cela moins de données transitent vers le navigateur et cela augmente la confidentialité des données. Prenons simplement l'exemple qui consiste à afficher le contenu d'un texte en fonction de l'utilisateur

Soit on transmet l'ensemble des messages et c'est le navigateur qui masque ou affiche ce qui doit être ou alors on utilise:

<p>{{load|/messages/message%user%.txt}<p>

à ce propos je propose à rejeto une extrension de la macro 'section'

{{ section | mysection }}  complétée par

{{ section | mysection | fichier_externe}}    (le code est deja sur papier brouillon)


pour finir un template principal

<HTML>
<head>
...
</head>
<body>
Choice your language/Choisir sa langue/.....
...
%login-link%
%loggedin%
.....
</body>
</html>

[style]

[login-link]
{{section | login-link | hfs{{urlvar|lang}}.tpl}}
OU
{{section | {{urlvar|lang}} | hfs.login-link.tpl}}


[loggedin]
{{section | loggedin | hfs{{urlvar|lang}}.tpl}}
OU
{{section | {{urlvar|lang}} | hfs.loggedin.tpl}}

....




« Last Edit: January 26, 2010, 10:18:14 PM by Mars »


Offline rejetto

  • Administrator
  • Tireless poster
  • *****
    • Posts: 13523
    • View Profile
pour ma part je préfère les chose plus simples où <#nom_employe> ou %user% sont remplacés par leur équivalent meme si on introduit un peu de language  style basic sans aller jusqu'au POKE ;D

yes, it's easier, but also inadequate.
the example of the link is indeed about simple %symbols%, not for a more complex language.
using > as closing sequence would be confused with the closing of html tags.

Quote
à ce propos je propose à rejeto une extrension de la macro 'section'
{{ section | mysection | fichier_externe}}    (le code est deja sur papier brouillon)

you'd better tell what is supposed to do ;)
if it loads the [mysection] from an external template file, then you can just do {{load|file}} {{$mysection}}


Offline Mars

  • Operator
  • Tireless poster
  • *****
    • Posts: 2068
    • View Profile
Quote
Quote
à ce propos je propose à rejeto une extrension de la macro 'section'
{{ section | mysection | fichier_externe}}    (le code est deja sur papier brouillon)


you'd better tell what is supposed to do
if it loads the [mysection] from an external template file, then you can just do {{load|file}} {{$mysection}}

le but est de lire une partie (section) d'un fichier sans le charger complètement dans le template principal, au lieu d'avoir N fichiers contenant chacun 1 section, je préfère avoir 1 fichier contenant N sections et pouvoir charger la section qui m'intéresse.

si dans mon fichier j'ai des information confidentielles organisées en section comme par exemple

[user1]
name=toto
address= chez rejetto
tel=0123456789

[user2]
name=titi
address= toujours chez  rejetto
tel=0123456789

....
[user5265898]  // yes 5 265 898 users
name=mars
address= chez mars
tel=0123450000

il n'est pas nécessaire de charger tout le fichier dans le template par {{load|file}}  et d'afficher la section désirée par {{$mysection}}, sinon j'utiliserai cette syntaxe

{{section|mysection|{{load|myfile}}}}

en considérant [mysection] is in myfile

utiliser %mysection% dans la partie main de hfs.tpl
et {load|myfile} à lal fin de hfs.tpl comme il se doit,

je ne pense pas que ca puisse fonctionner: 1 chance sur 2 selon l'ordre de résolution des macros


en reprenant mon idée

dans le fichier myfile se trouve la section

Quote
.
[section-précédente].
.
.
[mysection]
//begin mysection
...
//end mysection
[section-suivante]
.
.
.
le resultat obtenu serait:

Quote
//begin mysection
...
//end mysection

Tout ce blabla au dessus pour en arriver à ça:

en code delphi

if name = 'section' then
 if pars.count=2 then begin
      result:= loadFile(par(1));           //avec la syntaxe {{section|mysection|myfile}}
ou    result:= par(1);           //avec la syntaxe {{section|mysection|{{load|myfile}}}}  plus de possibilités avec cette dernière
      chop('['+par(0)+']',result);    //suppression jusqu'au  nom de section
      chopline(result);                 //suppression de la ligne [mysection]
      result:=chop('#13#10[',result); //  couper en debut de section suivante ou si fin de fichier atteinte
      end
    else
    try result:=md.tpl[p] except end;

Répons : oui la syntaxe est bonne et les fonctions sont judicieusement choisies pour ne pas exiger plus de code, et donner le résultat escompté.
« Last Edit: December 06, 2007, 10:55:34 PM by mars »


Offline rejetto

  • Administrator
  • Tireless poster
  • *****
    • Posts: 13523
    • View Profile
ok

your code is good mars, but it has a problem: it would consider [section] even if in the middle of a line, while it must be placed at the beginning. This way it shold fix the problem

Code: [Select]
  s:=loadFile(par(1));
  p:=chop('['+p+']', s);
  if (p > '') and (p[length(p)] <> #10) then
    result:=''
  else
    begin
    chopline(s);
    result:=chop('#10[', s);
    end;

anyway i opted for another version 50% longer, but faster, just in case we handle a big file.

Code: [Select]
  result:='';
  s:=loadFile(par(1));
  // search the starting pattern
  p:='['+p+']';
  b:=0;
    repeat
    b:=posEx(p, s, b+1);
    if b = 0 then exit;
    until (b = 1) or (s[b-1]  = #10);
  b:=1+posEx(#10, s, b); // skip this line
  if b = 1 then exit;
  // calculates the end of the section
  e:=posEx(#10'[', s, b);
  if e = 0 then e:=length(s);
  result:=substr(s,b,e);


Offline Mars

  • Operator
  • Tireless poster
  • *****
    • Posts: 2068
    • View Profile
j'en conclus donc que la macro

{{ section | mysection | fichier_externe}}   

sera dans la prochaine build?
 ;)