1920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson/* 2920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Copyright (C) 2010 Google Inc. 3920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 4920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Licensed under the Apache License, Version 2.0 (the "License"); 5920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * you may not use this file except in compliance with the License. 6920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * You may obtain a copy of the License at 7920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 8920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * http://www.apache.org/licenses/LICENSE-2.0 9920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * 10920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * Unless required by applicable law or agreed to in writing, software 11920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * distributed under the License is distributed on an "AS IS" BASIS, 12920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * See the License for the specific language governing permissions and 14920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson * limitations under the License. 15920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson */ 16920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 17920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpackage com.google.doclava; 18920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 19920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport com.google.clearsilver.jsilver.data.Data; 20920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 21920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.util.regex.Pattern; 22920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonimport java.util.regex.Matcher; 23920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 24920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodsonpublic class ParamTagInfo extends ParsedTagInfo { 25920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson static final Pattern PATTERN = Pattern.compile("([^ \t\r\n]+)[ \t\r\n]+(.*)", Pattern.DOTALL); 26920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 27920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private boolean mIsTypeParameter; 28920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private String mParameterComment; 29920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson private String mParameterName; 30920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 31920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ParamTagInfo(String name, String kind, String text, ContainerInfo base, SourcePositionInfo sp) { 32920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson super(name, kind, text, base, sp); 33920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 34920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson Matcher m = PATTERN.matcher(text); 35920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (m.matches()) { 36920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mParameterName = m.group(1); 37920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mParameterComment = m.group(2); 38920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson int len = mParameterName.length(); 39920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsTypeParameter = 40920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson len > 2 && mParameterName.charAt(0) == '<' && mParameterName.charAt(len - 1) == '>'; 41920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } else { 42920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mParameterName = text.trim(); 43920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mParameterComment = ""; 44920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsTypeParameter = false; 45920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 46920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson setCommentText(mParameterComment); 47920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 48920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 49920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson ParamTagInfo(String name, String kind, String text, boolean isTypeParameter, 50920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson String parameterComment, String parameterName, ContainerInfo base, SourcePositionInfo sp) { 51920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson super(name, kind, text, base, sp); 52920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mIsTypeParameter = isTypeParameter; 53920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mParameterComment = parameterComment; 54920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson mParameterName = parameterName; 55920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 56920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 57920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public boolean isTypeParameter() { 58920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mIsTypeParameter; 59920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 60920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 61920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String parameterComment() { 62920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mParameterComment; 63920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 64920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 65920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public String parameterName() { 66920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson return mParameterName; 67920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 68920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 69920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson @Override 70920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public void makeHDF(Data data, String base) { 71920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".name", parameterName()); 72920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson data.setValue(base + ".isTypeParameter", isTypeParameter() ? "1" : "0"); 73920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson TagInfo.makeHDF(data, base + ".comment", commentTags()); 74920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 75920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson 76920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson public static void makeHDF(Data data, String base, ParamTagInfo[] tags) { 77920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson for (int i = 0; i < tags.length; i++) { 78920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson // don't output if the comment is "" 79920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson if (!"".equals(tags[i].parameterComment())) { 80920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson tags[i].makeHDF(data, base + "." + i); 81920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 82920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 83920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson } 84920dbbbaca6aa578f3b26d89e99d12754c26ed60Ben Dodson} 85