/// <summary> Returns the segment specified in the given segment_path_spec. </summary> public virtual Segment getSegment(System.String segSpec) { Segment seg = null; if (segSpec.Substring(0, (1) - (0)).Equals("/")) { Finder.reset(); } Tokenizer tok = new Tokenizer(segSpec, "/", false); SegmentFinder finder = Finder; while (tok.HasMoreTokens) { System.String pathSpec = tok.NextToken(); Terser.PathSpec ps = parsePathSpec(pathSpec); if (tok.HasMoreTokens) { ps.isGroup = true; } else { ps.isGroup = false; } if (ps.isGroup) { Group g = null; if (ps.find) { g = finder.findGroup(ps.pattern, ps.rep); } else { g = finder.getGroup(ps.pattern, ps.rep); } finder = new SegmentFinder(g); } else { if (ps.find) { seg = finder.findSegment(ps.pattern, ps.rep); } else { seg = finder.getSegment(ps.pattern, ps.rep); } } } return(seg); }
/// <summary>Creates a new instance of Terser </summary> public Terser(Message message) { finder = new SegmentFinder(message); }
/// <summary>Creates a new instance of Terser </summary> public Terser(Message message) { finder = new SegmentFinder(message); }
/// <summary> Returns the segment specified in the given segment_path_spec. </summary> public virtual Segment getSegment(System.String segSpec) { Segment seg = null; if (segSpec.Substring(0, (1) - (0)).Equals("/")) { Finder.reset(); } Tokenizer tok = new Tokenizer(segSpec, "/", false); SegmentFinder finder = Finder; while (tok.HasMoreTokens) { System.String pathSpec = tok.NextToken(); Terser.PathSpec ps = parsePathSpec(pathSpec); if (tok.HasMoreTokens) { ps.isGroup = true; } else { ps.isGroup = false; } if (ps.isGroup) { Group g = null; if (ps.find) { g = finder.findGroup(ps.pattern, ps.rep); } else { g = finder.getGroup(ps.pattern, ps.rep); } finder = new SegmentFinder(g); } else { if (ps.find) { seg = finder.findSegment(ps.pattern, ps.rep); } else { seg = finder.getSegment(ps.pattern, ps.rep); } } } return seg; }