begin process at 2010 02 10 04:55:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > CLASSE DE GESTION DE BBCODES V1.0 A

CLASSE DE GESTION DE BBCODES V1.0 A


 Information sur la source

 Description

Bon, c'est que la première version, il ne faudra donc pas m'en vouloir si elle n'est pas très complète. En effet, il me reste à résoudre le problème des balises imbriquées et des BBCodes spéciaux du genre [a href=adresse]Nom[/a]. Mais ce code sera régulièrement mis à jour en même temps que je dévelloppe mon applet de création et de prévisualisation de BBCodes.

Source

  • import java.util.ArrayList;
  • public class Source
  • {
  • // Balisaes autorisées
  • public static String[] Balises = {"h2", "em", "strong", "q", "blockquote", "cite","code", "ul", "li", "p"};
  • // Conteneur de la source sauvée
  • private StringBuffer SourceSauve = new StringBuffer(65000);
  • // Conteneur de la source courante
  • private StringBuffer SourceCourante = new StringBuffer(65000);
  • // Tableau des balises ouvertes
  • private ArrayList OBal = new ArrayList();
  • // Tableau des balises fermées
  • private ArrayList FBal = new ArrayList();
  • // Constructeur
  • public Source()
  • {
  • }
  • // METHODES DE RECUPERATION
  • // Récupération de la source
  • public String RecupSource()
  • {
  • return SourceCourante.toString();
  • }
  • // Récupération du nombre de balises ouvertes
  • public int RecupNOBal()
  • {
  • return OBal.size()-FBal.size();
  • }
  • // Récupération de la source convertie en xhtml
  • public String RecupXHtml()
  • {
  • StringBuffer SB = new StringBuffer(SourceCourante.toString());
  • int Nb=0;
  • while(Nb<SB.length())
  • {
  • if(SB.charAt(Nb)=='[')
  • {
  • SB.setCharAt(Nb,'<');
  • }
  • if(SB.charAt(Nb)==']')
  • {
  • SB.setCharAt(Nb,'>');
  • }
  • Nb++;
  • }
  • return SB.toString();
  • }
  • // METHODES DE SAUVEGARDE
  • // Methode de sauvegarde de la source
  • public boolean Sauver()
  • {
  • if(Verifier(SourceCourante))
  • {
  • SourceSauve.replace(0, SourceCourante.length(), SourceCourante.toString());
  • return true;
  • }
  • else
  • return false;
  • }
  • // Méthode de restauration de la source sauvegardée
  • public void Restaurer()
  • {
  • SourceCourante.replace(0, SourceCourante.length(), SourceSauve.toString());
  • }
  • // METHODES D'EDITION
  • public boolean DefSource(String S)
  • {
  • SourceCourante.replace(0, SourceCourante.length(), S);
  • if(S!="")
  • {
  • if(Verifier(SourceCourante)) { return true; } else { return false; }
  • }
  • else return true;
  • }
  • public void Ajouter(String S)
  • {
  • SourceCourante.append(S);
  • }
  • public void AjouterBalise(String B, boolean O)
  • {
  • if(O)
  • {
  • OBal.add(OBal.size(), B);
  • Ajouter("[" + B + "]");
  • }
  • else
  • {
  • FBal.add(FBal.size(), B);
  • Ajouter("[/" + B + "]");
  • }
  • }
  • // METHODES PRIVEES
  • boolean EstBalise(String S)
  • {
  • int i=0;
  • for(i=0; i<Balises.length; i++)
  • {
  • if(Balises[i].equals(S))
  • {
  • return true;
  • }
  • }
  • return false;
  • }
  • void RecupBalise(int pos, boolean O, StringBuffer S)
  • {
  • String var="";
  • if(O)
  • {
  • while((pos<S.length())&&(S.charAt(pos)!=']'))
  • {
  • var+=S.charAt(pos);
  • pos++;
  • }
  • if(EstBalise(var))
  • {
  • OBal.add(OBal.size(), var);
  • }
  • }
  • else
  • {
  • while((pos<S.length())&&(S.charAt(pos)!=']'))
  • {
  • var+=S.charAt(pos);
  • pos++;
  • }
  • if(EstBalise(var))
  • {
  • FBal.add(FBal.size(), var);
  • }
  • }
  • }
  • // Verification du code source
  • private boolean Verifier(StringBuffer S)
  • {
  • OBal.clear();
  • FBal.clear();
  • int Nb=0;
  • while(Nb<S.length())
  • {
  • if(S.charAt(Nb)=='[')
  • {
  • if(S.charAt(Nb+1)=='/')
  • {
  • RecupBalise(Nb+2,false,S);
  • }
  • else
  • {
  • RecupBalise(Nb+1,true,S);
  • }
  • }
  • Nb++;
  • }
  • if(OBal.size()==FBal.size())
  • {
  • int i;
  • for(i=0; i<OBal.size(); i++)
  • {
  • if(!OBal.get(i).equals(FBal.get(i)))
  • {
  • return false;
  • }
  • }
  • return true;
  • }
  • else
  • {
  • return false;
  • }
  • }
  • // Débuggage du code source
  • private boolean Debug(String S)
  • {
  • return false;
  • }
  • }
import java.util.ArrayList;

public class Source
{
  // Balisaes autorisées
  public static String[] Balises = {"h2", "em", "strong", "q", "blockquote", "cite","code", "ul", "li", "p"};
  // Conteneur de la source sauvée
  private StringBuffer SourceSauve = new StringBuffer(65000);
  // Conteneur de la source courante
  private StringBuffer SourceCourante = new StringBuffer(65000);
  // Tableau des balises ouvertes
  private ArrayList OBal = new ArrayList();
  // Tableau des balises fermées
  private ArrayList FBal = new ArrayList();
  // Constructeur
  public Source()
  {

  }
  // METHODES DE RECUPERATION
  // Récupération de la source
  public String RecupSource()
  {
    return SourceCourante.toString();
  }
  // Récupération du nombre de balises ouvertes
  public int RecupNOBal()
  {
    return OBal.size()-FBal.size();
  }
  // Récupération de la source convertie en xhtml
  public String RecupXHtml()
  {
    StringBuffer SB = new StringBuffer(SourceCourante.toString());
    int Nb=0;
    while(Nb<SB.length())
    {
      if(SB.charAt(Nb)=='[')
      {
        SB.setCharAt(Nb,'<');
      }
      if(SB.charAt(Nb)==']')
      {
        SB.setCharAt(Nb,'>');
      }
      Nb++;
    }
    return SB.toString();
  }
  // METHODES DE SAUVEGARDE
  // Methode de sauvegarde de la source
  public boolean Sauver()
  {
    if(Verifier(SourceCourante))
    {
    SourceSauve.replace(0, SourceCourante.length(), SourceCourante.toString());
      return true;
    }
    else
      return false;
  }
  // Méthode de restauration de la source sauvegardée
  public void Restaurer()
  {
    SourceCourante.replace(0, SourceCourante.length(), SourceSauve.toString());
  }
  // METHODES D'EDITION
  public boolean DefSource(String S)
  {
    SourceCourante.replace(0, SourceCourante.length(), S);
    if(S!="")
    {
    if(Verifier(SourceCourante)) { return true; } else { return false; }
    }
    else return true;
  }
  public void Ajouter(String S)
  {
    SourceCourante.append(S);
  }
  public void AjouterBalise(String B, boolean O)
  {
    if(O)
    {
      OBal.add(OBal.size(), B);
      Ajouter("[" + B + "]");
    }
    else
    {
      FBal.add(FBal.size(), B);
      Ajouter("[/" + B + "]");
    }
  }
  // METHODES PRIVEES
  boolean EstBalise(String S)
  {
    int i=0;
    for(i=0; i<Balises.length; i++)
    {
      if(Balises[i].equals(S))
      {
        return true;
      }
    }
    return false;
  }
  void RecupBalise(int pos, boolean O, StringBuffer S)
  {
    String var="";
    if(O)
    {
      while((pos<S.length())&&(S.charAt(pos)!=']'))
      {
        var+=S.charAt(pos);
        pos++;
      }
      if(EstBalise(var))
      {
        OBal.add(OBal.size(), var);
      }
    }
    else
    {
      while((pos<S.length())&&(S.charAt(pos)!=']'))
      {
        var+=S.charAt(pos);
        pos++;
      }
      if(EstBalise(var))
      {
        FBal.add(FBal.size(), var);
      }
    }
  }
  // Verification du code source
  private boolean Verifier(StringBuffer S)
  {
    OBal.clear();
    FBal.clear();
   int Nb=0;
   while(Nb<S.length())
   {
     if(S.charAt(Nb)=='[')
     {
      if(S.charAt(Nb+1)=='/')
       {
         RecupBalise(Nb+2,false,S);
       }
       else
       {
         RecupBalise(Nb+1,true,S);
       }
     }
     Nb++;
   }
   if(OBal.size()==FBal.size())
   {
     int i;
     for(i=0; i<OBal.size(); i++)
     {
       if(!OBal.get(i).equals(FBal.get(i)))
       {
       return false;
       }
     }
    return true;
   }
   else
   {
   return false;
   }
  }
  // Débuggage du code source
  private boolean Debug(String S)
  {
    return false;
  }
}

 Conclusion

Voilà, laissez vos commentaires et donnez moi des conseils précieux pour optimiser le code, je m'en inspirerai pour mes prochaines versions.


 Sources de la même categorie

Source avec Zip Source avec une capture TRADUCTEUR FRANÇAIS --> NERLANDAIS par edouard333
Source avec Zip IA POUR DISCUTER par edouard333
Source avec Zip Source avec une capture JSUBTITLE1.0 par darrylsite
Source avec Zip COMPILATEUR PASCAL par youma85
Source avec Zip CONTENEUR DE COMPOSANT HETEROGENES par mad_charif

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales