package org.develnext.jphp.genapi.parameter;
import org.develnext.jphp.core.syntax.SyntaxAnalyzer;
import org.develnext.jphp.core.tokenizer.token.expr.value.NameToken;
import org.develnext.jphp.core.tokenizer.token.stmt.NamespaceStmtToken;
import php.runtime.common.StringUtils;
public class MethodParamParameter extends BaseParameter {
protected String[] types;
protected String argument;
protected String description;
public MethodParamParameter(NamespaceStmtToken namespace, String value) {
super(namespace, value);
}
protected int parseArgument(int offset) {
int k = value.indexOf(' ', offset);
if (k == -1) {
argument = value.substring(offset);
return value.length();
} else {
argument = value.substring(offset, k);
return k + 1;
}
}
protected int parseTypes(int offset) {
int k = value.indexOf(' ', offset);
String tmp;
if (k == -1) {
tmp = value;
k = value.length() - 1;
} else {
tmp = value.substring(offset, k);
k = k + 1;
}
String types[] = StringUtils.split(tmp, '|');
this.types = new String[types.length];
int i = -1;
for(String el : types) {
i++;
el = el.trim();
if (!isNotClass(el))
el = SyntaxAnalyzer.getRealName(NameToken.valueOf(el.trim()), namespace).getName();
this.types[i] = el;
}
return k;
}
@Override
protected void parse() {
int i = 0;
if (value.startsWith("$")) {
i = parseArgument(i + 1);
} else {
i = parseTypes(i);
if (i < value.length() && value.charAt(i) == '$')
i = parseArgument(i + 1);
}
if (i < value.length())
description = value.substring(i);
else
description = "";
}
public String[] getTypes() {
return types;
}
public String getArgument() {
return argument;
}
public String getDescription() {
return description;
}
}