116 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.Text.RegularExpressions;
 | 
						|
namespace VEPROMS.CSLA.Library
 | 
						|
{
 | 
						|
	public partial class LinkText
 | 
						|
	{
 | 
						|
		public LinkText(string linkInfoText)
 | 
						|
		{
 | 
						|
			_LinkInfoText = linkInfoText;
 | 
						|
		}
 | 
						|
		public void ParseLink()
 | 
						|
		{
 | 
						|
			if (_MyParsedLinkType == ParsedLinkType.NotParsed)
 | 
						|
			{
 | 
						|
				if (_LinkInfoText == null) return;
 | 
						|
				// First parse the string
 | 
						|
				_LinkInfoText = _LinkInfoText.Replace(@"\v ", "");
 | 
						|
				// for tran : "2, #, #, # and 4#Link:TransitionRange:2 10 173 166"
 | 
						|
				Match m = Regex.Match(_LinkInfoText, @"(.*)[#]Link:([A-Za-z]*):(.*)");
 | 
						|
				_MyValue = m.Groups[1].Value;
 | 
						|
				_MyLink = "#Link:" + m.Groups[2].Value + ":" + m.Groups[3].Value;
 | 
						|
				switch (m.Groups[2].Value)
 | 
						|
				{
 | 
						|
					case "ReferencedObject":
 | 
						|
						_MyParsedLinkType = ParsedLinkType.ReferencedObject;
 | 
						|
						string[] subs = m.Groups[3].Value.Split(" ".ToCharArray());
 | 
						|
						if (subs[0] == "<NewID>")
 | 
						|
							_MyRoUsageInfo = null;
 | 
						|
						else
 | 
						|
						{
 | 
						|
							int roUsageid = Convert.ToInt32(subs[0]);
 | 
						|
							_MyRoUsageInfo = RoUsageInfo.Get(roUsageid);
 | 
						|
						}
 | 
						|
						break;
 | 
						|
					case "Transition":
 | 
						|
					case "TransitionRange":
 | 
						|
						_MyParsedLinkType = (ParsedLinkType)Enum.Parse(_MyParsedLinkType.GetType(), m.Groups[2].Value);
 | 
						|
						if (m.Groups[3].Value.Split(" ".ToCharArray())[1] == "<NewID>")
 | 
						|
							_MyTransitionInfo = null;
 | 
						|
						else
 | 
						|
						{
 | 
						|
							int transitionID = Convert.ToInt32(m.Groups[3].Value.Split(" ".ToCharArray())[1]);
 | 
						|
							_MyTransitionInfo = TransitionInfo.Get(transitionID);
 | 
						|
						}
 | 
						|
						break;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private string _LinkInfoText;
 | 
						|
		public string LinkInfoText
 | 
						|
		{
 | 
						|
			get { return _LinkInfoText; }
 | 
						|
		}
 | 
						|
		private TransitionInfo _MyTransitionInfo = null;
 | 
						|
		public TransitionInfo MyTransitionInfo
 | 
						|
		{
 | 
						|
			get { ParseLink(); return _MyTransitionInfo; }
 | 
						|
		}
 | 
						|
		public ItemInfo MyTranToItemInfo
 | 
						|
		{
 | 
						|
			get { ParseLink(); return _MyTransitionInfo.MyItemToID; }
 | 
						|
		}
 | 
						|
		public ItemInfo MyTranRangeItemInfo
 | 
						|
		{
 | 
						|
			get { ParseLink(); return _MyTransitionInfo.MyItemRangeID; }
 | 
						|
		}
 | 
						|
		private string _MyValue = null;
 | 
						|
		public string MyValue
 | 
						|
		{
 | 
						|
			get { ParseLink(); return _MyValue; }
 | 
						|
		}
 | 
						|
		private string _MyLink = null;
 | 
						|
		public string MyLink
 | 
						|
		{
 | 
						|
			get { ParseLink(); return _MyLink; }
 | 
						|
		}
 | 
						|
		private RoUsageInfo _MyRoUsageInfo;
 | 
						|
		public RoUsageInfo MyRoUsageInfo
 | 
						|
		{
 | 
						|
			get { ParseLink(); return _MyRoUsageInfo; }
 | 
						|
		}
 | 
						|
		//private string _Roid = null; // TODO: need to return Referenced Object rather than just roid
 | 
						|
		//public string Roid
 | 
						|
		//{
 | 
						|
		//    get { ParseLink(); return _Roid; }
 | 
						|
		//}
 | 
						|
		//private string _RoUsageid = null; // TODO: need to return Referenced Object rather than just roid
 | 
						|
		//public string RoUsageid
 | 
						|
		//{
 | 
						|
		//    get { ParseLink(); return _RoUsageid; }
 | 
						|
		//}
 | 
						|
		//private string _RoDbid = null; // TODO: need to return Referenced Object rather than just roid
 | 
						|
		//public string RoDbid
 | 
						|
		//{
 | 
						|
		//    get { ParseLink(); return _RoDbid; }
 | 
						|
		//}
 | 
						|
		private ParsedLinkType _MyParsedLinkType = ParsedLinkType.NotParsed;
 | 
						|
		public ParsedLinkType MyParsedLinkType
 | 
						|
		{
 | 
						|
			get { ParseLink(); return _MyParsedLinkType; }
 | 
						|
		}
 | 
						|
 | 
						|
	}
 | 
						|
	#region enums
 | 
						|
	public enum ParsedLinkType : int
 | 
						|
	{
 | 
						|
		NotParsed = 0,
 | 
						|
		Transition = 1,
 | 
						|
		TransitionRange = 2,
 | 
						|
		ReferencedObject = 3
 | 
						|
	}
 | 
						|
	#endregion
 | 
						|
}
 |