using System;
using System.Collections.Generic;
using System.IO;
namespace Mustache
{
///
/// Generates the text for a tag that is replaced with its generated text.
///
internal sealed class InlineGenerator : IGenerator
{
private readonly TagDefinition _definition;
private readonly ArgumentCollection _arguments;
///
/// Initializes a new instance of an InlineGenerator.
///
/// The tag to render the text for.
/// The arguments passed to the tag.
public InlineGenerator(TagDefinition definition, ArgumentCollection arguments)
{
_definition = definition;
_arguments = arguments;
}
void IGenerator.GetText(TextWriter writer, Scope scope, Scope context, Action postProcessor)
{
Dictionary arguments;
if (_definition.IsSetter)
{
arguments = _arguments.GetArgumentKeyNames();
}
else
{
arguments = _arguments.GetArguments(scope, context);
}
_definition.GetText(writer, arguments, context);
}
}
}