Module: Coradoc::Validation

Defined in:
lib/coradoc/validation.rb

Overview

Document validation framework for schema-based validation.

This module provides a flexible validation framework for ensuring documents conform to expected structures and rules.

Examples:

Creating a validation schema

schema = Coradoc::Validation::Schema.define do
  required :title, type: String, min_length: 1
  required :sections, type: Array, min_count: 1
  optional :author, type: String

  rule :check_references do |doc|
    refs = doc.query('xref')
    missing = refs.reject { |r| doc.resolve_reference(r) }
    missing.map { |r| "Unresolved reference: #{r.target}" }
  end
end

Validating a document

result = schema.validate(document)
if result.valid?
  puts "Document is valid"
else
  result.errors.each { |e| puts e.message }
end

Defined Under Namespace

Modules: Rules Classes: Error, Result, Rule, Schema, SchemaGenerator

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.default_schemaSchema

Get the default validation schema

Returns:



613
614
615
616
617
618
# File 'lib/coradoc/validation.rb', line 613

def default_schema
  @default_schema ||= Schema.define do
    optional :id, type: String
    optional :title, type: String
  end
end

Class Method Details

.auto_schema(model_class, **options) ⇒ Schema

Generate a validation schema from a CoreModel class

Examples:

schema = Coradoc::Validation.auto_schema(Coradoc::CoreModel::Block)
result = schema.validate(document)

Parameters:

  • model_class (Class)

    The CoreModel class

  • options (Hash)

    Options passed to SchemaGenerator.generate

Returns:

  • (Schema)

    Generated validation schema



598
599
600
# File 'lib/coradoc/validation.rb', line 598

def auto_schema(model_class, **options)
  SchemaGenerator.generate(model_class, **options)
end

.define { ... } ⇒ Schema

Define a validation schema

Yields:

  • Schema definition block

Returns:

  • (Schema)

    The defined schema



584
585
586
# File 'lib/coradoc/validation.rb', line 584

def define(&block)
  Schema.define(&block)
end

.validate(document) ⇒ Result

Validate a document with default schema

Parameters:

  • document (Object)

    Document to validate

Returns:

  • (Result)

    Validation result



606
607
608
# File 'lib/coradoc/validation.rb', line 606

def validate(document)
  default_schema.validate(document)
end