Class: Senko::CodeGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/senko/code_generator.rb

Defined Under Namespace

Classes: UnsupportedSchema

Constant Summary collapse

SUPPORTED_KEYS =
%w[
  type enum const minimum maximum exclusiveMinimum exclusiveMaximum multipleOf
  minLength maxLength pattern required properties additionalProperties allOf anyOf oneOf not
  minItems maxItems uniqueItems prefixItems items contains minContains maxContains
  minProperties maxProperties patternProperties propertyNames dependentRequired
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(schema) ⇒ CodeGenerator

Returns a new instance of CodeGenerator.



24
25
26
27
28
# File 'lib/senko/code_generator.rb', line 24

def initialize(schema)
  @schema = deep_stringify(schema)
  @regexps = []
  @constants = []
end

Class Method Details

.generate(schema) ⇒ Object



16
17
18
19
20
# File 'lib/senko/code_generator.rb', line 16

def self.generate(schema)
  new(schema).generate
rescue UnsupportedSchema
  nil
end

Instance Method Details

#generateObject



30
31
32
33
34
35
# File 'lib/senko/code_generator.rb', line 30

def generate
  expression = compile_schema(@schema, 'data')
  regexps = @regexps
  constants = @constants
  eval("lambda { |data| #{expression} }", binding, __FILE__, __LINE__)
end