Я пытаюсь интегрировать средство форматирования Rubocop в редактор: учитывая некоторый код Ruby в качестве входных данных, вернуть строку, представляющую эквивалентный форматированный код. Я рассматривал вариант -s
, предложенный справкой Рубокопа:
-s FILE - Источник трубы из STDIN с использованием FILE в отчетах о нарушениях. Это полезно для интеграции редактора.
В терминале следующая команда успешно считывает содержимое ввода и печатает отформатированный вывод на стандартный вывод:
cat some_file.rb | rubocop -a -f fi -s some_file.rb
Однако я не могу программно воспроизвести что-то подобное, используя Rubocop API. Я надеялся как-то передать входные данные в RuboCop::Runner
, однако, просто анализируя зависания параметров, прежде чем я доберусь до этой точки:
require 'rubocop'
input = "some_var = 'hello'"
options, paths = RuboCop::Options.new.parse(['-a', '-f', 'fi', '-s', 'some_file.rb'])
runner = RuboCop::Runner.new(options, RuboCop::ConfigStore.new)
...
Конечно, один из вариантов - сбросить -s
иработать с временными файлами, однако, это добавляет сложности и является менее эффективным.
Как мне удобно создавать форматированный вывод, используя API?