package rene.util.xml;
public class XmlTag
{ protected String Tag="";
String Param[];
String Value[];
int N=0;
public XmlTag (String s)
{ int n=0;
int k=0;
n=skipBlanks(s,n);
while (n<s.length())
{ n=endItem(s,n);
k++;
n=skipBlanks(s,n);
}
if (k==0) return;
n=0;
n=skipBlanks(s,n);
int m=endItem(s,n);
Tag=s.substring(n,m);
n=m;
N=k-1;
Param=new String[N];
Value=new String[N];
for (int i=0; i<N; i++)
{ n=skipBlanks(s,n);
m=endItem(s,n);
String p=s.substring(n,m);
n=m;
int kp=p.indexOf('=');
if (kp>=0)
{ Param[i]=p.substring(0,kp);
Value[i]=XmlTranslator.toText(p.substring(kp+1));
if (Value[i].startsWith("\"") && Value[i].endsWith("\""))
{ Value[i]=Value[i].substring(1,Value[i].length()-1);
}
else if (Value[i].startsWith("\'") && Value[i].endsWith("\'"))
{ Value[i]=Value[i].substring(1,Value[i].length()-1);
}
}
else
{ Param[i]=p;
Value[i]="";
}
}
}
int skipBlanks (String s, int n)
{ while (n<s.length())
{ char c=s.charAt(n);
if (c==' ' || c=='\t' || c=='\n') n++;
else break;
}
return n;
}
int endItem (String s, int n)
{ while (n<s.length())
{ char c=s.charAt(n);
if (c==' ' || c=='\t' || c=='\n') break;
if (c=='\"')
{ n++;
while (true)
{ if (n>=s.length()) return n;
if (s.charAt(n)=='\"') break;
n++;
}
}
else if (c=='\'')
{ n++;
while (true)
{ if (n>=s.length()) return n;
if (s.charAt(n)=='\'') break;
n++;
}
}
n++;
}
return n;
}
public String name ()
{ return Tag;
}
public int countParams ()
{ return N;
}
public String getParam (int i)
{ return Param[i];
}
public String getValue (int i)
{ return Value[i];
}
public boolean hasParam (String param)
{ for (int i=0; i<N; i++)
if (Param[i].equals(param)) return true;
return false;
}
public boolean hasTrueParam (String param)
{ for (int i=0; i<N; i++)
if (Param[i].equals(param))
{ if (Value[i].equals("true")) return true;
return false;
}
return false;
}
public String getValue (String param)
{ for (int i=0; i<N; i++)
if (Param[i].equals(param)) return Value[i];
return null;
}
}