class Tardef::Validator::Extensions
Public Instance Methods
validate(obj)
click to toggle source
# File lib/tardef/validator/extensions.rb, line 3 def validate(obj) errors = [] extension_list = {} obj.imports.each { |e| extension_list[e["name"]] = e } obj = obj.to_hash if obj["extensions"] and not obj["extensions"].empty? obj["root"] = {"extensions" => obj["extensions"]} end keys = ["tasks", "lists", "tags", "root"] keys.each do |type| next unless obj[type] obj[type].each do |entry| next unless entry["extensions"] entry["extensions"].each do |extension| # Check that the extension is defined unless extension_list.keys.include?(extension["name"]) errors << "Extension #{extension["name"]} is not defined" next end # Check that the extension is in the right place unless extension_list[extension["name"]]["target"] == type.chop errors << "Extension #{extension["name"]} is not allowed as #{type} extension" next end # Check for valid syntax validator = Syntax.new(extension_list[extension["name"]]["schema"]) errors += validator.validate(extension["data"]) end end end errors end