예제 #1
0
            public void Should_Parse_Content_Recursivly()
            {
                // Given
                var commentParser = Substitute.For <ICommentParser>();
                var nodeParser    = new ParamParser();
                var node          = @"<param name=""test"">Hello World</param>".CreateXmlNode();

                // When
                nodeParser.Parse(commentParser, node);

                // Then
                commentParser.Received(1).Parse(Arg.Any <XmlNode>());
            }
예제 #2
0
            public void Should_Parse_Parameter_Name()
            {
                // Given
                var commentParser = Substitute.For <ICommentParser>();
                var nodeParser    = new ParamParser();
                var node          = @"<param name=""test"" />".CreateXmlNode();

                // When
                var result = nodeParser.Parse(commentParser, node);

                // Then
                Assert.Equal("test", result.Name);
            }
예제 #3
0
        /// <summary>
        /// 查询元素
        /// </summary>
        /// <param name="document"></param>
        /// <param name="source"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        internal IEnumerable <Element> Select(Document document, IEnumerable <Element> source, string param)
        {
            ElementFilter[] filters = ParamParser.Parse(param);

            if (filters.Length > 1)
            {
                return(filters.SelectMany(i => i.Eval(document, source)).Distinct().OrderBy(i => i.Index));
            }
            else
            {
                return(filters[0].Eval(document, source).ToArray());
            }
        }
예제 #4
0
        private void SetupSlackApp(string[] args)
        {
            // Parse any command line arguments and environment variables
            _config = ParamParser <CommandLine> .Parse(args);

            // Setup Slack integration
            // Depending on the scenario, you will need to supply only some fields
            //  - SocketMode app.          AppLevelToken from https://api.slack.com/apps/{id}/general
            //  - Make calls as a Bot.     BotAccessToken or (ClientId + ClientSecret + BotScopes + RedirectUrl for browser login)
            //  - Make calls as a User.    UserAccessToken or ((ClientId + ClientSecret + UserScopes + RedirectUrl for browser login)
            // RedirectUrl is optional for browser login. The default url will be http://localhost:3100/ if it is not supplied
            _app = new SlackApp
            {
                ClientId            = _config.ClientId,
                ClientSecret        = _config.ClientSecret,
                AppLevelToken       = _config.AppLevelToken,
                BotAccessToken      = _config.BotAccessToken,
                BotScopes           = _config.BotScopes ?? DefaultBotScope,
                UserAccessToken     = _config.UserAccessToken,
                UserScopes          = _config.UserScopes ?? DefaultUserScope,
                RedirectUrl         = _config.RedirectUrl ?? DefaultRedirectUrl,
                AccessTokensUpdated = slackApp =>
                {
                    // If you aren't supplying a bot or user access token,
                    // After the user logs in using the browser
                    Console.WriteLine($"Bot Access Token: {slackApp.BotAccessToken}");
                    Console.WriteLine($"User Access Token: {slackApp.UserAccessToken}");
                    // TODO: Save new access tokens to a safe place
                },
                LogBuilder = builder =>
                {
                    // Microsoft Logging framework. Configure as you feel best
                    // TODO: configure the Logger builder
                    builder
                                       #if DEBUG
                    .SetMinimumLevel(LogLevel.Debug)
                                       #endif
                    .AddDebug()
                    .AddConsole(options =>
                    {
                        options.LogToStandardErrorThreshold = LogLevel.Debug;
                    });
                }
            };
        }
예제 #5
0
 /// <summary>
 /// 查询元素
 /// </summary>
 /// <param name="document"></param>
 /// <param name="param"></param>
 /// <returns></returns>
 internal IEnumerable <Element> Select(Document document, string param)
 {
     return(ParamParser.Parse(param).SelectMany(i => i.Eval(document)).Distinct().OrderBy(i => i.Index));
 }