예제 #1
0
        public NLedgerConfiguration(IEnumerable <ISettingDefinition> externalDefinitions = null)
        {
            var isAttyDefinition                = AddDefinition(new BoolSettingDefinition("IsAtty", IsAttyDescription, true));
            var isTimeZoneIdDefinition          = AddDefinition(new TimeZoneSettingDefinition("TimeZoneId", TimeZoneDescription, TimeZoneInfo.Local));
            var outputEncodingDefinition        = AddDefinition(new EncodingSettingDefinition("OutputEncoding", OutputEncodingDescription, Encoding.Default));
            var ansiTerminalEmulationDefinition = AddDefinition(new BoolSettingDefinition("AnsiTerminalEmulation", AnsiTerminalEmulationDescription, true));
            var defaultPagerDefinition          = AddDefinition(new StringSettingDefinition("DefaultPager", DefaultPagerDescription));
            var disableUserSettingsDefinition   = AddDefinition(new BoolSettingDefinition("DisableUserSettings", DisableUserSettingsDescription, false, SettingScopeEnum.Application));

            if (externalDefinitions != null && externalDefinitions.Any())
            {
                Definitions = Definitions.Concat(externalDefinitions).ToList();
            }

            SettingsContainer = new NLedgerSettingsContainer(Definitions);

            IsAtty                = new SettingValue <bool>(SettingsContainer, isAttyDefinition);
            TimeZoneId            = new SettingValue <TimeZoneInfo>(SettingsContainer, isTimeZoneIdDefinition);
            OutputEncoding        = new SettingValue <Encoding>(SettingsContainer, outputEncodingDefinition);
            AnsiTerminalEmulation = new SettingValue <bool>(SettingsContainer, ansiTerminalEmulationDefinition);
            DefaultPager          = new SettingValue <string>(SettingsContainer, defaultPagerDefinition);
            DisableUserSettings   = new SettingValue <bool>(SettingsContainer, disableUserSettingsDefinition);

            SettingsContainer.EffectiveScope = DisableUserSettings.Value ? SettingScopeEnum.Application : SettingScopeEnum.User;
        }