Example #1
0
        /// <summary>
        /// 注册一个事件
        /// </summary>
        /// <param name="eventName">事件名称</param>
        /// <param name="handler">事件句柄</param>
        /// <param name="life">在几次后事件会被自动释放</param>
        /// <returns>事件句柄</returns>
        public IEventHandler Listen(string eventName, Func <object, object> handler, int life = 0)
        {
            Guard.Requires <ArgumentNullException>(eventName != null);
            Guard.Requires <ArgumentNullException>(handler != null);

            eventName = Normalize(eventName);

            var wildcard     = eventName.IndexOf("*") != -1;
            var eventHandler = new EventHandler(this, wildcard ? Str.AsteriskWildcard(eventName) : eventName, handler, life, wildcard);

            lock (syncRoot)
            {
                if (wildcard)
                {
                    SetWildcardListener(eventHandler);
                }
                else
                {
                    List <EventHandler> handlers;
                    if (!this.handlers.TryGetValue(eventName, out handlers))
                    {
                        this.handlers[eventName] = handlers = new List <EventHandler>();
                    }
                    handlers.Add(eventHandler);
                }

                return(eventHandler);
            }
        }
Example #2
0
 public void TestStrIs()
 {
     Console.WriteLine(Str.AsteriskWildcard("path.?+/hello/w*d"));
     Assert.AreEqual(true, Str.Is("path.?+/hello/w*d", @"path.?+/hello/world"));
     Assert.AreEqual(false, Str.Is("path.?+/hello/w*d", @"hellopath.?+/hello/world"));
     Assert.AreEqual(true, Str.Is("path.?+/hello/w*d", @"path.?+/hello/worlddddddddd"));
     Assert.AreEqual(false, Str.Is("path.?+/hello/w*d", @"path.?+/hello/worldddddddddppppp"));
 }
Example #3
0
        public void TestAsteriskWildcard()
        {
            var input = "path.?+/hello/wor*d";

            input = Str.AsteriskWildcard(input);

            Assert.AreEqual(@"path\.\?\+/hello/wor.*?d", input);
        }
Example #4
0
 public void TestAsteriskWildcard(string expected, string input, string message)
 {
     Assert.AreEqual(expected, Str.AsteriskWildcard(input), message);
 }
 private static bool Is(string pattern, string value)
 {
     return(pattern == value || Regex.IsMatch(value, Str.AsteriskWildcard(pattern)));
 }
Example #6
0
 /// <summary>
 /// Build a regex pattern from a package name, expanding * globs as required.
 /// </summary>
 /// <param name="packageNamePattern">The package name pattern.</param>
 /// <param name="wrap">Wrap the cleaned string by the given string.</param>
 public static string PackageNameToRegexPattern(string packageNamePattern, string wrap = "(?i:^{0}$)")
 {
     return(string.Format(wrap, Str.AsteriskWildcard(packageNamePattern)));
 }