lib/prmd/commands/combine.rb in prmd-0.3.2 vs lib/prmd/commands/combine.rb in prmd-0.4.0

- old
+ new

@@ -6,11 +6,21 @@ [options[:meta]] else [path] end # sort for stable loading on any platform - schemata = files.sort.map { |file| [file, YAML.load(File.read(file))] } + schemata = [] + files.sort.each do |file| + begin + schemata << [file, YAML.load(File.read(file))] + rescue + $stderr.puts "unable to parse #{file}" + end + end + unless schemata.length == files.length + exit(1) # one or more files failed to parse + end data = { '$schema' => 'http://json-schema.org/draft-04/hyper-schema', 'definitions' => {}, 'properties' => {}, @@ -43,10 +53,10 @@ datum.map {|element| reference_localizer.call(element)} when Hash if datum.has_key?('$ref') datum['$ref'] = '#/definitions' + datum['$ref'].gsub('#', '').gsub('/schemata', '') end - if datum.has_key?('href') + if datum.has_key?('href') && datum['href'].is_a?(String) datum['href'] = datum['href'].gsub('%23', '').gsub(%r{%2Fschemata(%2F[^%]*%2F)}, '%23%2Fdefinitions\1') end datum.each { |k,v| datum[k] = reference_localizer.call(v) } else datum