Skip to content

Commit

Permalink
add try parse methods for CodeStyleOption
Browse files Browse the repository at this point in the history
  • Loading branch information
jmarolf committed Feb 24, 2017
1 parent c3ab8f0 commit e1c4a0b
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 11 deletions.
30 changes: 20 additions & 10 deletions src/Workspaces/Core/Portable/CodeStyle/CodeStyleHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,37 +5,47 @@ namespace Microsoft.CodeAnalysis.CodeStyle
internal static class CodeStyleHelpers
{
public static CodeStyleOption<bool> ParseEditorConfigCodeStyleOption(string arg)
{
TryParseEditorConfigCodeStyleOption(arg, out var option);
return option;
}

public static bool TryParseEditorConfigCodeStyleOption(string arg, out CodeStyleOption<bool> option)
{
var args = arg.Split(':');
bool isEnabled = false;
var isEnabled = false;
if (args.Length != 2)
{
if (args.Length == 1)
{
if (bool.TryParse(args[0].Trim(), out isEnabled) && !isEnabled)
{
return new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.None);
option = new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.None);
return true;
}
else
{
return CodeStyleOption<bool>.Default;
option = CodeStyleOption<bool>.Default;
return false;
}
}
return CodeStyleOption<bool>.Default;
option = CodeStyleOption<bool>.Default;
return false;
}

if (!bool.TryParse(args[0].Trim(), out isEnabled))
{
return CodeStyleOption<bool>.Default;
option = CodeStyleOption<bool>.Default;
return false;
}

switch (args[1].Trim())
{
case EditorConfigSeverityStrings.Silent: return new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.None);
case EditorConfigSeverityStrings.Suggestion: return new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.Suggestion);
case EditorConfigSeverityStrings.Warning: return new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.Warning);
case EditorConfigSeverityStrings.Error: return new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.Error);
default: return new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.None);
case EditorConfigSeverityStrings.Silent: option = new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.None); return true;
case EditorConfigSeverityStrings.Suggestion: option = new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.Suggestion); return true;
case EditorConfigSeverityStrings.Warning: option = new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.Warning); return true;
case EditorConfigSeverityStrings.Error: option = new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.Error); return true;
default: option = new CodeStyleOption<bool>(value: isEnabled, notification: NotificationOption.None); return false;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ internal sealed class EditorConfigStorageLocation : OptionStorageLocation
}
else if (type == typeof(CodeStyleOption<bool>))
{
return ParseEditorConfigCodeStyleOption(s);
var value = CodeStyleOption<bool>.Default;
return TryParseEditorConfigCodeStyleOption(s, out value) ? value : null;
}
else
{
Expand Down

0 comments on commit e1c4a0b

Please sign in to comment.