Class: URBANopt::Scenario::DefaultReports::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/urbanopt/scenario/default_reports/validator.rb

Constant Summary collapse

@@schema =
nil

Instance Method Summary collapse

Constructor Details

#initializeValidator

Initialize the root directory



40
41
42
43
44
45
46
47
# File 'lib/urbanopt/scenario/default_reports/validator.rb', line 40

def initialize
  super

  @root_dir = File.absolute_path(File.join(File.dirname(__FILE__), '..', '..', '..', '..'))

  @instance_lock = Mutex.new
  @@schema ||= schema
end

Instance Method Details

#files_dirObject

Return the absolute path of the default reports files



50
51
52
# File 'lib/urbanopt/scenario/default_reports/validator.rb', line 50

def files_dir
  File.absolute_path(File.join(@root_dir, 'lib/urbanopt/scenario/default_reports/'))
end

#schemaObject

return schema



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/urbanopt/scenario/default_reports/validator.rb', line 60

def schema
  @instance_lock.synchronize do
    if @@schema.nil?
      File.open(schema_file, 'r') do |f|
        @@schema = JSON.parse(f.read, symbolize_names: true)
      end
    end
  end

  @@schema
end

#schema_fileObject

return path to schema file



55
56
57
# File 'lib/urbanopt/scenario/default_reports/validator.rb', line 55

def schema_file
  File.join(files_dir, 'schema/scenario_schema.json')
end

#schema_valid?Boolean

check if the schema is valid

Returns:

  • (Boolean)


84
85
86
87
# File 'lib/urbanopt/scenario/default_reports/validator.rb', line 84

def schema_valid?
  metaschema = JSON::Validator.validator_for_name('draft6').metaschema
  JSON::Validator.validate(metaschema, @@schema)
end

#schema_validation_errorsObject

return detailed schema validation errors



90
91
92
93
# File 'lib/urbanopt/scenario/default_reports/validator.rb', line 90

def schema_validation_errors
  metaschema = JSON::Validator.validator_for_name('draft6').metaschema
  JSON::Validator.fully_validate(metaschema, @@schema)
end

#validate(schema, data) ⇒ Object

validate data against schema

parameters:

schema - Hash - A hash of the JSON scenario_schema. data - Hash - A hash of the data to be validated against scenario_schema.



79
80
81
# File 'lib/urbanopt/scenario/default_reports/validator.rb', line 79

def validate(schema, data)
  JSON::Validator.fully_validate(schema, data)
end