Sha256: bae7517e9b63a448bb001789005842b819393f914919949f3d50d32030777bb1

Contents?: true

Size: 625 Bytes

Versions: 2

Compression:

Stored size: 625 Bytes

Contents

require "sexp_info/version"
require 'active_support/all'
require 'sexp_info/sexp_thing/sexp_thing'
class SexpInfo

  def initialize(sexp)
    @sexp = sexp
  end

  def type
    sexp[1][0][0]
  end

  def defined_methods
    defined(:def)
  end

  def defined_classes
    defined(:class)
  end

  def defined_modules
    defined(:module)
  end

  def [](name)
    (defined_classes + defined_methods + defined_modules).find{|m| m == name }
  end

  private

  attr_reader :sexp
  def defined(type)
    sexp[1] ? sexp[1].find_all{|s| s[0] == type}.map{|c| "SexpThing::#{type.to_s.camelize}".constantize.new(c) } : []
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sexp_info-0.0.2 lib/sexp_info.rb
sexp_info-0.0.1 lib/sexp_info.rb