Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions lib/rbi/formatter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,23 @@ class Formatter
#: Integer?
attr_accessor :max_line_length

#: (?add_sig_templates: bool, ?group_nodes: bool, ?max_line_length: Integer?, ?nest_singleton_methods: bool, ?nest_non_public_members: bool, ?sort_nodes: bool) -> void
#: (?add_sig_templates: bool, ?group_nodes: bool, ?max_line_length: Integer?, ?nest_singleton_methods: bool, ?nest_non_public_members: bool, ?sort_nodes: bool, ?replace_attributes_with_methods: bool) -> void
def initialize(
add_sig_templates: false,
group_nodes: false,
max_line_length: nil,
nest_singleton_methods: false,
nest_non_public_members: false,
sort_nodes: false
sort_nodes: false,
replace_attributes_with_methods: false
)
@add_sig_templates = add_sig_templates
@group_nodes = group_nodes
@max_line_length = max_line_length
@nest_singleton_methods = nest_singleton_methods
@nest_non_public_members = nest_non_public_members
@sort_nodes = sort_nodes
@replace_attributes_with_methods = replace_attributes_with_methods
end

#: (RBI::File file) -> String
Expand All @@ -36,6 +38,7 @@ def format_file(file)

#: (RBI::Tree tree) -> void
def format_tree(tree)
tree.replace_attributes_with_methods! if @replace_attributes_with_methods
tree.add_sig_templates! if @add_sig_templates
tree.nest_singleton_methods! if @nest_singleton_methods
tree.nest_non_public_members! if @nest_non_public_members
Expand Down
5 changes: 3 additions & 2 deletions rbi/rbi.rbi
Original file line number Diff line number Diff line change
Expand Up @@ -403,10 +403,11 @@ class RBI::Formatter
max_line_length: T.nilable(::Integer),
nest_singleton_methods: T::Boolean,
nest_non_public_members: T::Boolean,
sort_nodes: T::Boolean
sort_nodes: T::Boolean,
replace_attributes_with_methods: T::Boolean
).void
end
def initialize(add_sig_templates: T.unsafe(nil), group_nodes: T.unsafe(nil), max_line_length: T.unsafe(nil), nest_singleton_methods: T.unsafe(nil), nest_non_public_members: T.unsafe(nil), sort_nodes: T.unsafe(nil)); end
def initialize(add_sig_templates: T.unsafe(nil), group_nodes: T.unsafe(nil), max_line_length: T.unsafe(nil), nest_singleton_methods: T.unsafe(nil), nest_non_public_members: T.unsafe(nil), sort_nodes: T.unsafe(nil), replace_attributes_with_methods: T.unsafe(nil)); end

sig { params(file: ::RBI::File).void }
def format_file(file); end
Expand Down
21 changes: 21 additions & 0 deletions test/rbi/formatter_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,27 @@ def foo(a, b); end
RBI
end

def test_format_replace_attributes_with_methods
rbi = <<~RBI
module Foo
attr_reader :a
end
RBI

file = File.new
file.root = parse_rbi(rbi)

out = Formatter.new(replace_attributes_with_methods: false).print_file(file)
assert_equal(rbi, out)

out = Formatter.new(replace_attributes_with_methods: true).print_file(file)
assert_equal(<<~RBI, out)
module Foo
def a; end
end
RBI
end

def test_format_group_nodes
rbi = <<~RBI
module Foo
Expand Down