Module: Natsuzora::Contract

Defined in:
lib/natsuzora/contract.rb,
lib/natsuzora/contract/ast.rb,
lib/natsuzora/contract/field.rb,
lib/natsuzora/contract/parser.rb,
lib/natsuzora/contract/ast/any.rb,
lib/natsuzora/contract/ast/ref.rb,
lib/natsuzora/contract/ast/list.rb,
lib/natsuzora/contract/ast/node.rb,
lib/natsuzora/contract/document.rb,
lib/natsuzora/contract/type_def.rb,
lib/natsuzora/contract/validator.rb,
lib/natsuzora/contract/ast/record.rb,
lib/natsuzora/contract/ast/scalar.rb,
lib/natsuzora/contract/diff_marker.rb,
lib/natsuzora/contract/parse_error.rb,
lib/natsuzora/contract/scalar_type.rb,
lib/natsuzora/contract/compiled_lexer.rb,
lib/natsuzora/contract/type_ref_resolver.rb,
lib/natsuzora/contract/validation_target.rb

Overview

Contract notation (formerly the standalone ‘subaru` gem). Parses `.ntzc` files into a Contract tree, validates JSON data against contracts, and supports two-generation diff markers (`+`, `-`, `*`).

Defined Under Namespace

Modules: AST, CompiledLexer, DiffMarker, ScalarType, ValidationTarget Classes: Document, Error, Field, ParseError, Parser, TypeDef, TypeRefResolver, ValidationError, Validator

Class Method Summary collapse

Class Method Details

.parse(input) ⇒ Object

Parse contract notation into a resolved Contract.



344
345
346
347
348
# File 'lib/natsuzora/contract/parser.rb', line 344

def self.parse(input)
  parser = Parser.new(input)
  file = parser.parse_file
  file.to_contract
end

.parse_file(input) ⇒ Object

Parse contract notation into a Document.



351
352
353
354
# File 'lib/natsuzora/contract/parser.rb', line 351

def self.parse_file(input)
  parser = Parser.new(input)
  parser.parse_file
end

.parse_file_with_diff(input) ⇒ Object

Parse contract notation with diff markers.



357
358
359
360
# File 'lib/natsuzora/contract/parser.rb', line 357

def self.parse_file_with_diff(input)
  parser = Parser.new(input)
  parser.parse_file_with_diff
end

.validate(contract, data) ⇒ Object

Validate JSON data against a contract.



168
169
170
171
# File 'lib/natsuzora/contract/validator.rb', line 168

def self.validate(contract, data) # rubocop:disable Naming/PredicateMethod
  Validator.validate(contract, data)
  true
end

.validate_with_target(document, data, target: ValidationTarget::CURRENT) ⇒ Object

Validate JSON data against a contract file with diff markers.



174
175
176
177
# File 'lib/natsuzora/contract/validator.rb', line 174

def self.validate_with_target(document, data, target: ValidationTarget::CURRENT) # rubocop:disable Naming/PredicateMethod
  Validator.validate_with_target(document, data, target: target)
  true
end