Sha256: d678d0c3016fdca2bf609f66581a2d9cc553250ae896d5062d91f245d9deeef9

Contents?: true

Size: 582 Bytes

Versions: 1

Compression:

Stored size: 582 Bytes

Contents

require 'ruby_parser'

module DRG
  class Ruby
    class Const
      CONSTANT_DEFS = [:class, :module, :cdecl]

      def initialize(file)
        @parser = RubyParser.new.parse File.read(file)
      end

      def name(sexp = @parser, list = [])
        sexp = Array(sexp)
        if sexp[1].is_a?(Sexp) && sexp[1][0] == :colon2
          parts = sexp[1].to_a.flatten
          list.concat parts.drop(parts.size / 2)
        elsif CONSTANT_DEFS.include?(sexp[0])
          name(sexp.compact[2], list << sexp[1].to_s)
        end
        list.join('::')
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
drg-0.13.1 lib/drg/ruby/const.rb