Sha256: 2b9e42e402594451b3f0bc58ee7bdcc66eaef1fdf4ae24e82d5d1574e746c2a6
Contents?: true
Size: 1.81 KB
Versions: 40
Compression:
Stored size: 1.81 KB
Contents
#!/usr/bin/env ruby require "bundler/setup" require "rbs" Members = RBS::AST::Members def group(member) case member when Members::Include, Members::Extend, Members::Prepend 0 when Members::ClassVariable -3 when Members::ClassInstanceVariable -2 when Members::InstanceVariable -1 when Members::AttrAccessor, Members::AttrWriter, Members::AttrReader 2 when Members::MethodDefinition if member.singleton? if member.name == :new 0.4 else 1 end else if member.name == :initialize 0.5 else 3 end end when Members::Alias if member.singleton? 1 else 3 end when Members::Private, Members::Public -4 end end def key(member) case member when Members::Include, Members::Extend, Members::Prepend member.name.to_s when Members::ClassVariable, Members::ClassInstanceVariable, Members::InstanceVariable member.name.to_s when Members::AttrAccessor, Members::AttrWriter, Members::AttrReader member.name.to_s when Members::MethodDefinition member.name.to_s when Members::Alias member.new_name.to_s else 1 end end ARGV.map {|f| Pathname(f) }.each do |path| puts "Opening #{path}..." buffer = RBS::Buffer.new(name: path, content: path.read) sigs = RBS::Parser.parse_signature(buffer) sigs.each do |sig| case sig when RBS::AST::Declarations::Class, RBS::AST::Declarations::Module, RBS::AST::Declarations::Interface sig.members.sort! do |m1, m2| group1 = group(m1) group2 = group(m2) if group1 == group2 key(m1) <=> key(m2) else group1 <=> group2 end end end end puts "Writing #{path}..." path.open('w') do |out| writer = RBS::Writer.new(out: out) writer.write sigs end end
Version data entries
40 entries across 40 versions & 2 rubygems