class Lap::Class
Public Class Methods
new(node, indent_level = 0)
click to toggle source
# File lib/lap/class.rb, line 7 def initialize(node, indent_level = 0) @node = node @indent_level = indent_level @has_contents = !@node.members.empty? end
Public Instance Methods
render()
click to toggle source
# File lib/lap/class.rb, line 13 def render superclass = @node.super_class ? " < #{@node.super_class.name.name}" : "" self_indent = " " * (Lap::Config[:indent] * @indent_level) comment = get_comment(@node) "#{comment}#{self_indent}class #{@node.name.name}#{superclass}#{contents}#{self_indent if @has_contents}end\n" end
Private Instance Methods
contents()
click to toggle source
# File lib/lap/class.rb, line 22 def contents @contents ||= begin if @has_contents member_indent = (Lap::Config[:indent] * (@indent_level + 1)).to_i members = @node.members.map do |member| case member when RBS::AST::Members::MethodDefinition Lap::Method.new(member, @indent_level + 1).render when RBS::AST::Declarations::Class self.class.new(member, @indent_level + 1).render when RBS::AST::Declarations::Module Lap::Module.new(member, @indent_level + 1).render when RBS::AST::Members::AttrReader with_comment(member, "attr_reader :#{member.name}").indent(member_indent) when RBS::AST::Members::AttrWriter with_comment(member, "attr_writer :#{member.name}").indent(member_indent) when RBS::AST::Members::AttrAccessor with_comment(member, "attr_accessor :#{member.name}").indent(member_indent) when RBS::AST::Members::Public "public\n".indent(member_indent) when RBS::AST::Members::Private "private\n".indent(member_indent) when RBS::AST::Members::Include with_comment(member, "include #{member.name}").indent(member_indent) when RBS::AST::Members::Extend with_comment(member, "extend #{member.name}").indent(member_indent) when RBS::AST::Declarations::Constant Lap::Constant.new(member, @indent_level + 1).render when RBS::AST::Declarations::Alias # no-op: not present in ruby else warn "Unsupported member for classes: #{member}" end end "\n#{members.compact.join("\n")}" else "; " end end end