public object ReadYaml(IParser parser, Type type)
        {
            var scalar = (YamlDotNet.Core.Events.Scalar)parser.Current;
            var value  = scalar.Value;

            if (string.IsNullOrWhiteSpace(value))
            {
                parser.MoveNext();
                return(null);
            }

            var values = value
                         .Split(delimiter, StringSplitOptions.RemoveEmptyEntries)
                         .ToList();

            Color?color = TryParseEachAndRemove <Color?>(values,
                                                         x => {
                bool success = ColorX.TryParse(x, out Color c);
                return(success, c);
            });
            int?size = TryParseEachAndRemove(values, x
                                             => {
                bool success = int.TryParse(x, out int number);
                return(success, number);
            });

            var result = new BorderSideStyle
            {
                Width = size ?? 0,
                Color = color ?? Color.Transparent,
            };

            parser.MoveNext();
            return(result);
        }
Esempio n. 2
0
        public void Execute(LayoutContext context, string arg)
        {
            Color newColor;

            if (ColorX.TryParse(arg, out newColor))
            {
                context.Font.Color = newColor;
            }
            else
            {
                context.Font.Color = Color.White;
            }
        }
        public object ReadYaml(IParser parser, Type type)
        {
            var scalar = (YamlDotNet.Core.Events.Scalar)parser.Current;
            var value = scalar.Value;

            if (string.IsNullOrWhiteSpace(value))
            {
                parser.MoveNext();
                return null;
            }

            var values = value
                .Split(delimiter, StringSplitOptions.RemoveEmptyEntries)
                .ToList();

            Color? color = TryParseEachAndRemove(values, 
                x => {
                    bool success = ColorX.TryParse(x, out Color c);
                    if (!success) return (false, null);
                    return (success, (Color?)c);
                });