public void TagFound(string name, string value) { PGNTag tag = new PGNTag (name, value); if (curTagList.Contains (tag)) return; curTagList.Add (tag); }
/* private static void loadTokensTillDelim(string delim, StringBuilder buf, PGNTokenizer tokenizer) { string token; while((token = tokenizer.nextToken()) != null) { buf.Append(token); if(token.Equals(delim)) return; } throw new PGNParserException(); } */ private static void readTagValuePair(IList tagList, PGNTokenizer tokenizer) { string name, value; if ((name = tokenizer.nextToken ()) == null) throw new PGNParserException ("Reached the end after starting a token begin!"); if (name.Equals ("]")) /* empty tag */ return; StringBuilder value_buf = new StringBuilder (); while (true) { value = tokenizer.nextToken (); if (value == null) { throw new PGNParserException ("No more tokens but i'm trying to read the tag value"); } if (value.Equals ("]")) { PGNTag tag = new PGNTag (name, extractTagValue (value_buf. ToString ())); if (!tagList. Contains (tag)) tagList.Add (tag); break; } value_buf.Append (value); } }
// altvalue will be returned if the tag doesnt exist public string GetTagValue(string name, string altvalue) { PGNTag tag = new PGNTag (name, null); if (!tagList.Contains (tag)) return altvalue; int idx = tagList.IndexOf (tag); tag = (PGNTag) tagList[idx]; return tag.Value; }