public override void Visit(ArgMetadataBlockNode node, Context context)
 {
     context._yaml.WriteStartObject(node.Identifier);
     context._sb.Clear();
     node.Default.Accept(this, context);
     context._yaml.WriteProperty("Default", context._sb.ToString());
     context._yaml.WriteEndObject();
 }
Example #2
0
        private ArgMetadataBlockNode ParseArgMetadataBlock(YamlToken p)
        {
            var argNode = new ArgMetadataBlockNode()
            {
                Identifier = p.Property
            };

            while (true)
            {
                p = _yaml.ReadNext();
                switch (p.Kind)
                {
                case YamlTokenKind.EndObj:
                    return(argNode);

                case YamlTokenKind.Property:
                    if (p.Property == nameof(ArgMetadataBlockNode.Default))
                    {
                        argNode.Default = new ExpressionNode()
                        {
                            Expression = p.Value
                        }
                    }
                    ;
                    else
                    {
                        _errorContainer.ParseError(p.Span, $"Unexpected key in function definition: {p}");
                        throw new DocumentException();
                    }
                    break;

                case YamlTokenKind.Error:
                    _errorContainer.ParseError(p.Span, p.Value);
                    return(null);

                default:
                    _errorContainer.ParseError(p.Span, $"Unexpected yaml token: {p}");
                    throw new DocumentException();
                }
            }
        }