class JekyllOpenSdgPlugins::ValidateIndicatorConfig
Public Instance Methods
generate(site)
click to toggle source
# File lib/jekyll-open-sdg-plugins/validate_indicator_config.rb, line 11 def generate(site) schema_path = File.join(File.dirname(__FILE__), 'schema-indicator-config.json') json_from_file = File.read(schema_path) schema = JSON.parse(json_from_file) schemer = JSONSchemer.schema(schema) # Perform validation if the "validate_indicator_config" flag is true. if site.config.has_key?('validate_indicator_config') && site.config['validate_indicator_config'] # We don't care too much what language we use, just get the first one. language = 'en' if site.config.has_key?('languages') language = site.config['languages'][0] end metadata = {} if opensdg_translated_builds(site) metadata = site.data[language]['meta'] else metadata = site.data['meta'] end # Loop through the indicators (using metadata as a list). validation_failed = false metadata.each do |inid, meta| unless schemer.valid?(meta) validation_failed = true opensdg_notice('Indicator ' + inid + ' configuration invalid:') errors = schemer.validate(meta).to_a errors.each { |error| opensdg_validation_error(error) } end end if validation_failed opensdg_notice "Some indicator configuration was not valid. See feedback above." raise "Invalid indicator configuration" end end # Regardless place the schema in site data so it can be used in Jekyll templates. site.data['schema-indicator-config'] = schema end