class Datadog::Statsd::Schema::SchemaBuilder

def build

Build the final schema (returns the root namespace)
def build
  @root_namespace
end

def initialize

def initialize
  @transformers = {}
  @root_namespace = Namespace.new(name: :root)
end

def namespace(name, &)

Define a namespace
def namespace(name, &)
  builder = NamespaceBuilder.new(name, @transformers)
  builder.instance_eval(&) if block_given?
  namespace_def = builder.build
  @root_namespace = @root_namespace.add_namespace(namespace_def)
end

def transformers(&)

Define transformers that can be used by tag definitions
def transformers(&)
  return @transformers unless block_given?
  TransformerBuilder.new(@transformers).instance_eval(&)
end

def validate!

Validate the schema for consistency
def validate!
  errors = @root_namespace.validate_tag_references
  raise SchemaError, "Schema validation failed: #{errors.join(", ")}" unless errors.empty?
end