Advertisement
xlrnxnlx

owner

Sep 18th, 2014
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.32 KB | None | 0 0
  1. /*
  2.  * Final NxnFormatter - It's a program created to format the content of topics
  3.  * on VBulletin forums so that the text have a better look. It's an upgrade of
  4.  * Uformatter.
  5.  *
  6.  * Copyright (C) 2014 Renan Gomes (rnxn) at <????@live.com>
  7.  *
  8.  * This program is free software: you can redistribute it and/or modify
  9.  * it under the terms of the GNU General Public License as published by
  10.  * the Free Software Foundation, either version 3 of the License, or
  11.  * (at your option) any later version.
  12.  *
  13.  * This program is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  * GNU General Public License for more details.
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  19.  */
  20.  
  21. package sys.models.bbcode;
  22.  
  23. import java.util.ArrayList;
  24. import sys.models.forum.ForumProperty;
  25.  
  26. /**
  27.  * <code>BBcode</code> contém métodos úteis para a formatação dos dados que, irá
  28.  * gerar o output da aplicação. Nessa classe existem métodos úteis para a estilização
  29.  * do texto e demais conteúdos do tópico.
  30.  *
  31.  * @author RENAN GOMES (rnxn)
  32.  * @since 2014
  33.  * @version 1.0
  34.    @see BulletinBoardProperty classe pai/base */
  35.  
  36. public class BBCode extends BulletinBoardProperty {
  37.    
  38.     public BBCode(){}
  39.    
  40.     /**Define uma fonte.
  41.      * @param f nome da fonte.
  42.      * @param c conteúdo.
  43.      * @return [font=nome da fonte]conteúdo[/font] */
  44.    
  45.     public String setFont(String f, String c){
  46.         if(!valid(c)) return  null;
  47.        
  48.         String t = BulletinBoardCode.font.get();
  49.         return putValuedStart(t, f) + c + putEnd(t);
  50.     }
  51.    
  52.     /**Define uma cor.
  53.      * @param cl hex da cor.
  54.      * @param c conteúdo.
  55.      * @return [color="hex da cor"]conteúdo[/color] */
  56.    
  57.     public String setColor(String cl, String c){
  58.         if(!valid(c)) return  null;
  59.        
  60.         String t = BulletinBoardCode.color.get();
  61.         return putQuotedStart(t, cl) + c + putEnd(t);
  62.     }
  63.    
  64.     /**Define o tamanho da fonte.
  65.      * @param s tamanho.
  66.      * @param c conteúdo.
  67.      * @return [size=tamanho]conteúdo[/size] */
  68.    
  69.     public String setSize(String s, String c){
  70.         if(!valid(c)) return  null;
  71.        
  72.         String t = BulletinBoardCode.size.get();
  73.         return putValuedStart(t, s) + c + putEnd(t);
  74.     }
  75.    
  76.     // constantes de alinhamento horizontal do texto.
  77.     public final char CENTER = 0;
  78.     public final char LEFT   = 1;
  79.     public final char RIGHT  = 2;
  80.    
  81.     /**Define a posição horizontal do texto.
  82.      * @param al alinhamento (constantes da classe).
  83.      * @param c conteúdo.
  84.      * @return [alinhamento]conteúdo[/alinhamento] */
  85.    
  86.     public String setAlign(char al, String c){
  87.         if(al != CENTER || al != LEFT || al != RIGHT) return null;
  88.        
  89.         String s = "";    
  90.         switch(al){ // get align code
  91.             case CENTER: s = BulletinBoardCode.center.get(); break;
  92.             case LEFT: s = BulletinBoardCode.left.get(); break;
  93.             case RIGHT: s = BulletinBoardCode.right.get(); break;
  94.         }
  95.        
  96.         return putStart(s) + c + putEnd(s);
  97.     }
  98.    
  99.     /**Define uma lista. Nesse programa não é tratada listas ordenadas ou não,
  100.      * todas as listas são criadas com um caractere ("▪") na frente dos ítens.
  101.      * @param list lista.
  102.      * @param c centralizada ou não.
  103.      * @return ▪ item1 \n ▪ item2 \n ▪item3...*/
  104.    
  105.     public String setSimpleList(ArrayList<String>list, boolean c){
  106.         if(!valid(list)) return null;
  107.        
  108.         String t = "";
  109.         for(String s : list){
  110.             // necessário pois cada navegador cria a lista de uma forma.
  111.             // desta forma pelo menos ela ficará "padronizada" em todos.
  112.             t += "▪ " + s;
  113.             t += putLine();
  114.         }
  115.         return c ? setAlign(CENTER, t) : t;
  116.     }
  117.    
  118.     /**Define uma lista numerada/ordenada.
  119.      * @param list lista.
  120.      * @param c centralizada ou não.
  121.      * @return [list=1][*]item1 \n [*]item2 \n [*]item3...*/
  122.    
  123.     public String setNumberedList(ArrayList<String>list, boolean c){
  124.         if(!valid(list)) return null;
  125.        
  126.         String t = ""; // content
  127.         String ll = BulletinBoardCode.list.get(); // bbcode list
  128.         String li = BulletinBoardCode.list_item.get(); // bbcode list item
  129.        
  130.         t += putValuedStart(ll, "1");
  131.         for(String s : list){
  132.             t += putStart(li) + s;
  133.             t += putLine();
  134.         }
  135.         t+= putEnd(ll);
  136.        
  137.         return c ? setAlign(CENTER, t) : t;
  138.     }
  139.    
  140.     /**Define uma URL/Link.
  141.      * @param u url.
  142.      * @param w frase de exibição.
  143.      * @return [url="url"]frase de exibição[/url] */
  144.    
  145.     public String setLink(String u, String w){
  146.         String t = BulletinBoardCode.link.get();
  147.         return putQuotedStart(t, u) + w + putEnd(t);
  148.     }
  149.    
  150.     /**Define uma imagem.
  151.      * @param u url.
  152.      * @return [img]url[/img] */
  153.    
  154.     public String setImage(String u){
  155.         String t = BulletinBoardCode.image.get();
  156.         return putStart(t) + u + putEnd(t);
  157.     }
  158.    
  159.     /**Define um vídeo
  160.      * @param u url.
  161.      * @return [video]url[/video] */
  162.    
  163.     public String setVideo(String u){
  164.         String t = BulletinBoardCode.video.get();
  165.         return putStart(t) + u + putEnd(t);
  166.     }
  167.    
  168.     /**Define uma forma de contactar pelo skype. (Enviando convite)
  169.      * @param u userID skype.
  170.      * @param i icone.
  171.      * @param w frase de substituição.
  172.      * @return [url="skype:userID?add"][img]icone[/img]frase de substituição[/url] */
  173.    
  174.     public String setSkype(String u, String i, String w){
  175.         String t = BulletinBoardCode.link.get();
  176.         return putQuotedStart(t, ForumProperty.skype_before + u + ForumProperty.skype_after) + setImage(i) + w + putEnd(t);
  177.     }
  178.    
  179.     /**Define um link para envio de mensagem privativa a outro usuário.
  180.      * @param path path do fórum.
  181.      * @param userID id de usuário no fórum.
  182.      * @param i ícone.
  183.      * @param w frase de substituição.
  184.      * @return [url="path do forum/private.php?do=newpm&u=id de usuário"][img]icone[/img]palavra de substituição[/url] */
  185.    
  186.     public String setPrivateMessage(String path, String userID, String i, String w){
  187.         String t = BulletinBoardCode.link.get();
  188.         return putQuotedStart(t, ForumProperty.pm.get() + userID) + setImage(i) + w + putEnd(t);
  189.     }
  190.    
  191.     /**Define um spoiler.
  192.      * @param c conteúdo.
  193.      * @return [spoiler]conteúdo[/spoiler] */
  194.    
  195.     public String setSpoiler(String c){
  196.         String t = BulletinBoardCode.spoiler.get();
  197.         return putStart(t) + putLine() + c + putLine() + putEnd(t);
  198.     }
  199.    
  200.     /* Valida uma lista/string (pvt).
  201.      * @param s objeto a ser verificado.
  202.      * @return true - ok. */
  203.     private boolean valid(Object s){
  204.         if(s != null){
  205.             if(s instanceof String){
  206.                 String t = (String) s;
  207.                 return !t.isEmpty();
  208.             } else if(s instanceof ArrayList){
  209.                 ArrayList t = (ArrayList) s;
  210.                 return !t.isEmpty();
  211.             }
  212.         }
  213.         return false;
  214.     }
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement