Пример #1
0
		/// <summary>
		/// path を元に、適切なコントローラを作成します。
		/// </summary>
		private HatomaruGetAction GetAction(AbsPath path){
			string pathStr = path.ToString();
			int qpos = pathStr.IndexOf('?');
			if(qpos > 0){
				path = new AbsPath(pathStr.Substring(0,qpos));
				string query = pathStr.Substring(qpos+1);
				string q = null;
				string i = null;
				string p = null;
				foreach(string pair in query.Split('&', ';')){
					int eqpos = pair.IndexOf('=');
					if(eqpos < 0) continue;
					string name = pair.Substring(0,eqpos);
					string val = pair.Substring(eqpos+1);
					switch(name){
						case QueryName:
						q = val;
						break;
						case IndexTypeName:
						i = val;
						break;
						case PageName:
						p = val;
						break;
					}
				}
				if(!string.IsNullOrEmpty(q)){
					AmazonIndexType index = AmazonIndexType.None;
					if(!string.IsNullOrEmpty(i)) index = (AmazonIndexType)Enum.Parse(typeof(AmazonIndexType), i, true);
					return new AmazonDoSearch(this, path, q.UrlDecode(), index, p.ToInt32());
				}
			}
			return new AmazonViewSearchForm(this, path);
		}
Пример #2
0
		/// <summary>
		/// BasePath を渡して、残りのパス断片の配列を取得します。
		/// </summary>
		public string[] GetFragments(AbsPath basePath){
			string baseStr = basePath.ToString();
			string result = this.RemoveQuery().ToString();
			if(result.StartsWith(baseStr)){
				result = result.Remove(0, baseStr.Length);
			}
			return result.Split(new Char[]{'/', '\\'}, StringSplitOptions.RemoveEmptyEntries);
		}