class Prettyp::FormatterService

Attributes

formatter_registry[R]
language_detection[R]

Public Class Methods

new(formatter_registry: FormatterRegistry.new, language_detection: LanguageDetectionService.new) click to toggle source
# File lib/prettyp/formatter_service.rb, line 9
def initialize(formatter_registry: FormatterRegistry.new, language_detection: LanguageDetectionService.new)
  @formatter_registry = formatter_registry
  @language_detection = language_detection
end

Public Instance Methods

format_as_language_from_file(language, file) click to toggle source
# File lib/prettyp/formatter_service.rb, line 28
def format_as_language_from_file language, file
  format file, language
end
format_as_language_from_stdin(language) click to toggle source
# File lib/prettyp/formatter_service.rb, line 32
def format_as_language_from_stdin language
  input = $stdin.read

  with_tempfile input do |f|
    format f, language
  end
end
format_from_file(file) click to toggle source
# File lib/prettyp/formatter_service.rb, line 14
def format_from_file file
  language = language_detection.detect_from_file(file)
  format file, language
end
format_from_stdin() click to toggle source
# File lib/prettyp/formatter_service.rb, line 19
def format_from_stdin
  input = $stdin.read

  language = language_detection.detect_from_input(input)
  with_tempfile input do |f|
    format f, language
  end
end

Private Instance Methods

format(file, language) click to toggle source
# File lib/prettyp/formatter_service.rb, line 43
def format file, language
  formatter = formatter_registry.formatter_for(language)
  raise FormatError, "Cannot determine formatter for #{language} from #{formatter_registry.formatters}" unless formatter
  formatter.new.format(file, language)
end
with_tempfile(input, &block) click to toggle source
# File lib/prettyp/formatter_service.rb, line 49
def with_tempfile input, &block
  file = Tempfile.new('prettyp')
  file.write(input)
  begin
    file.rewind
    block.call(file)
  ensure
    file.close
    file.unlink
  end
end