001/**
002 *
003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
004 *
005 * This library is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU Lesser General Public
007 * License as published by the Free Software Foundation; either 
008 * version 2.1 of the License, or (at your option) any later version.
009 * 
010 * This library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013 * Lesser General Public License for more details.
014 * 
015 * You should have received a copy of the GNU Lesser General Public 
016 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
017 * 
018 **/
019package lucee.transformer.cfml.script;
020
021import java.util.HashMap;
022import java.util.Map;
023
024import lucee.transformer.bytecode.Literal;
025import lucee.transformer.bytecode.literal.LitString;
026import lucee.transformer.bytecode.statement.tag.Attribute;
027
028public class DocComment {
029
030        private StringBuilder tmpHint=new StringBuilder();
031        private String hint;
032        //private List<DocCommentParam> params=new ArrayList<DocComment.DocCommentParam>();
033        Map<String,Attribute> params=new HashMap<String, Attribute>();
034        
035        public void addHint(char c){
036                tmpHint.append(c);
037        }
038        public void addParam(Attribute attribute){
039                params.put(attribute.getName(),attribute);
040        }
041        
042        /**
043         * @return the hint
044         */
045        public String getHint() {
046                if(hint==null) {
047                        Attribute attr = params.remove("hint");
048                        if(attr!=null) {
049                                Literal lit=(Literal) attr.getValue();
050                                hint=lit.getString().trim();
051                        }
052                        else {
053                                hint=DocCommentTransformer.unwrap(tmpHint.toString());
054                        }
055                }
056                return hint;
057        }
058
059        public Attribute getHintAsAttribute() {
060                return new Attribute(true,"hint",LitString.toExprString(getHint()),"string");
061        }
062        
063        
064        
065        /**
066         * @return the params
067         */
068        public Map<String,Attribute> getParams() {
069                return params;
070        }
071}