45 lines
786 B
Ruby
45 lines
786 B
Ruby
require 'json'
|
|
|
|
class FixtureFormatter
|
|
|
|
def initialize(fixtures)
|
|
@fixtures = fixtures
|
|
end
|
|
|
|
def json(path, options={})
|
|
begin
|
|
result = JSON.pretty_generate(get_fixture(path))
|
|
rescue
|
|
raise "Fixture '#{path}' is absent"
|
|
end
|
|
if options[:spaces]
|
|
result = shift_to_right(result, options[:spaces])
|
|
end
|
|
result
|
|
end
|
|
|
|
private
|
|
|
|
def get_fixture(path)
|
|
keys = path.split('/')
|
|
hash = @fixtures
|
|
keys.each do |key|
|
|
hash = hash[key]
|
|
end
|
|
hash
|
|
end
|
|
|
|
def shift_to_right(text, spaces_count)
|
|
buffer = ''
|
|
first_line = true
|
|
text.each_line do |line|
|
|
if first_line
|
|
first_line = false
|
|
buffer += line
|
|
next
|
|
end
|
|
buffer += (' ' * spaces_count) + line
|
|
end
|
|
buffer
|
|
end
|
|
end |