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