// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.Collections.Generic; namespace Roslyn.Utilities { internal static class CompilerOptionParseUtilities { /// <summary> /// Parse the value provided to an MSBuild Feature option into a list of entries. This will /// leave name=value in their raw form. /// </summary> public static IList<string> ParseFeatureFromMSBuild(string? features) { if (RoslynString.IsNullOrEmpty(features)) { return new List<string>(capacity: 0); } return features.Split(new[] { ';', ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); } public static void ParseFeatures(IDictionary<string, string> builder, List<string> values) { foreach (var commaFeatures in values) { foreach (var feature in commaFeatures.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { ParseFeatureCore(builder, feature); } } } private static void ParseFeatureCore(IDictionary<string, string> builder, string feature) { int equals = feature.IndexOf('='); if (equals > 0) { string name = feature.Substring(0, equals); string value = feature.Substring(equals + 1); builder[name] = value; } else { builder[feature] = "true"; } } } } |