private void Apply(UxNode uxClass, List <PropertyValue> propertyValues) { foreach (var child in uxClass.Children.Where(c => c is UxNode).Cast <UxNode>()) { Apply(child, propertyValues); } if (uxClass.ClassName == "Text") { var layerName = uxClass.SketchLayerName; switch (NameValidator.NameIsValid(layerName)) { case NameValidity.InvalidCharacter: _log.Warning($"Could not create a text property for the layer '{layerName}', as it contains an invalid character. Please only use the letters a-z, numbers, or underscores, and don't start the name with a number."); break; case NameValidity.InvalidKeyword: _log.Warning($"Could not create a text property for the layer '{layerName}', as '{layerName}' is a reserved word. Please choose another name."); break; case NameValidity.Valid: if (propertyValues.Any(p => p.Name.Equals(layerName))) { _log.Warning($"Could not create a text property for the layer '{layerName}', as a text property for another layer with the same name has already been created. Please use unique names for text layers within the same symbol."); } else { var defaultValue = (UxString)uxClass.Attributes["Value"]; propertyValues.Add(new PropertyValue(layerName, defaultValue.Value)); uxClass.Attributes["Value"] = new UxString("{Property " + layerName + "}"); } break; default: throw new NotImplementedException("Internal error"); } } }
public void NameIsValid_ValidNames([Values("a", "aAaa", "A1", "a_1", "_a", "_1")] string name) { Assert.That(NameValidator.NameIsValid(name), Is.EqualTo(NameValidity.Valid)); }
public void NameIsValid_UnoKeywords([Values("draw", "local", "add")] string name) { Assert.That(NameValidator.NameIsValid(name), Is.EqualTo(NameValidity.InvalidKeyword)); }
public void NameIsValid_CSharpKeywords([Values("async", "string", "class")] string name) { Assert.That(NameValidator.NameIsValid(name), Is.EqualTo(NameValidity.InvalidKeyword)); }
public void NameIsValid_InvalidCharacters([Values("1", "1A", "", "a B", "aå", "a-b", "a.b")] string name) { Assert.That(NameValidator.NameIsValid(name), Is.EqualTo(NameValidity.InvalidCharacter)); }