private static IDictionary <string, TokenHandler <LogEntry> > GetExtraTokenHandlers()
        {
            IDictionary <string, TokenHandler <LogEntry> > extraHandlers = new Dictionary <string, TokenHandler <LogEntry> >();

            try
            {
                // Web Application parameters
                extraHandlers["namaspace"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((WeblogEntry)le).NamespaceName);

                extraHandlers["className"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((WeblogEntry)le).ClassName);

                extraHandlers["methodSignature"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((WeblogEntry)le).MethodSignature);

                extraHandlers["user"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((WeblogEntry)le).CurrentUserName);

                extraHandlers["ipAddress"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((WeblogEntry)le).CurrentUserIPAddress);

                extraHandlers["userAgent"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((WeblogEntry)le).CurrentUserAgent);

                extraHandlers["url"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((WeblogEntry)le).CurrentUrl);

                extraHandlers["referrer"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((WeblogEntry)le).CurrentUrl);
            }
            catch (System.Web.HttpException)
            {
            }

            return(extraHandlers);
        }
        private static IDictionary <string, TokenHandler <LogEntry> > GetExtraTokenHandlersDictionary()
        {
            Dictionary <string, TokenHandler <LogEntry> > tokenHandlers = new Dictionary <string, TokenHandler <LogEntry> >();

            tokenHandlers["field1"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((CustomLogEntry)le).AcmeCoField1);

            tokenHandlers["field2"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((CustomLogEntry)le).AcmeCoField2);

            tokenHandlers["field3"] = GenericTextFormatter <LogEntry> .CreateSimpleTokenHandler(le => ((CustomLogEntry)le).AcmeCoField3);

            return(tokenHandlers);
        }
        internal ScriptablePresenter(IMainView view)
        {
            // TODO: Review below
            _view               = view;
            _profilesProvider   = Create.New <IProfilesProvider>();
            _settingsProvider   = Create.New <ISettingsProvider>();
            _containersProvider = Create.New <IContainersProvider>();

            _view.ScriptFinishRequested += ScriptFinishRequested;

            _outputFormatter      = new ConsoleOutputFormatter();
            _genericTextFormatter = new GenericTextFormatter();
            _progressFormatter    = new ProgressFormatter();
            _errorFormatter       = new ErrorFormatter();
        }
        /// <summary>
        /// Creates a <see cref="Formatter{T}"/> for all the entries in the <see cref="LogEntry.ExtendedProperties"/>
        /// dictionary.
        /// </summary>
        private static Formatter<LogEntry> DictionaryTokenHandlerFactory(string parameter)
        {
            Dictionary<string, TokenHandler<KeyValuePair<string, object>>> handlers
                = new Dictionary<string, TokenHandler<KeyValuePair<string, object>>>();
            handlers["newline"]
                = GenericTextFormatter<KeyValuePair<string, object>>.CreateSimpleTokenHandler(Environment.NewLine);
            handlers["tab"]
                = GenericTextFormatter<KeyValuePair<string, object>>.CreateSimpleTokenHandler("\t");
            handlers["key"]
                = GenericTextFormatter<KeyValuePair<string, object>>.CreateSimpleTokenHandler(kvp => kvp.Key);
            handlers["value"]
                = GenericTextFormatter<KeyValuePair<string, object>>.CreateSimpleTokenHandler(kvp => kvp.Value.ToString());

            GenericTextFormatter<KeyValuePair<string, object>> entryFormatter
                = new GenericTextFormatter<KeyValuePair<string, object>>(parameter, handlers);

            return le =>
            {
                StringBuilder entries = new StringBuilder();

                foreach (var kvp in le.ExtendedProperties)
                {
                    entryFormatter.Format(kvp, entries);
                }

                return entries.ToString();
            };
        }
        protected TextFormatter(string template, IDictionary<string, TokenHandler<LogEntry>> extraTokenHandlers)
        {
            if (!string.IsNullOrEmpty(template))
            {
                this.template = template;
            }
            else
            {
                this.template = DefaultTextFormat;
            }

            Dictionary<string, TokenHandler<LogEntry>> tokenHandlers = defaultTokenHandlers;
            if (extraTokenHandlers.Count > 0)
            {
                tokenHandlers = new Dictionary<string, TokenHandler<LogEntry>>(defaultTokenHandlers);
                foreach (var kvp in extraTokenHandlers)
                {
                    tokenHandlers.Add(kvp.Key, kvp.Value);
                }
            }

            this.formatter = new GenericTextFormatter<LogEntry>(this.template, tokenHandlers);
        }