class Railroader::Collection

Attributes

collection[R]
files[R]
includes[R]
name[R]
options[R]
parent[R]
src[R]
tracker[R]

Public Class Methods

new(name, parent, file_name, src, tracker) click to toggle source
# File lib/railroader/tracker/collection.rb, line 9
def initialize name, parent, file_name, src, tracker
  @name = name
  @parent = parent
  @file_name = file_name
  @files = [ file_name ]
  @src = { file_name => src }
  @includes = []
  @methods = { :public => {}, :private => {}, :protected => {} }
  @options = {}
  @tracker = tracker
end

Public Instance Methods

add_file(file_name, src) click to toggle source
# File lib/railroader/tracker/collection.rb, line 33
def add_file file_name, src
  @files << file_name unless @files.include? file_name
  @src[file_name] = src
end
add_include(class_name) click to toggle source
# File lib/railroader/tracker/collection.rb, line 38
def add_include class_name
  @includes << class_name
end
add_method(visibility, name, src, file_name) click to toggle source
# File lib/railroader/tracker/collection.rb, line 47
def add_method visibility, name, src, file_name
  if src.node_type == :defs
    name = :"#{src[1]}.#{name}"
  end

  @methods[visibility][name] = { :src => src, :file => file_name }
end
add_option(name, exp) click to toggle source
# File lib/railroader/tracker/collection.rb, line 42
def add_option name, exp
  @options[name] ||= []
  @options[name] << exp
end
ancestor?(parent, seen={}) click to toggle source
# File lib/railroader/tracker/collection.rb, line 21
def ancestor? parent, seen={}
  seen[self.name] = true

  if self.parent == parent or seen[self.parent]
    true
  elsif parent_model = collection[self.parent]
    parent_model.ancestor? parent, seen
  else
    false
  end
end
each_method() { |name, info| ... } click to toggle source
# File lib/railroader/tracker/collection.rb, line 55
def each_method
  @methods.each do |_vis, meths|
    meths.each do |name, info|
      yield name, info
    end
  end
end
file() click to toggle source
# File lib/railroader/tracker/collection.rb, line 73
def file
  @files.first
end
get_method(name) click to toggle source
# File lib/railroader/tracker/collection.rb, line 63
def get_method name
  each_method do |n, info|
    if n == name
      return info
    end
  end

  nil
end
methods_public() click to toggle source
# File lib/railroader/tracker/collection.rb, line 89
def methods_public
  @methods[:public]
end
top_line() click to toggle source
# File lib/railroader/tracker/collection.rb, line 77
def top_line
  if sexp? @src[file]
    @src[file].line
  else
    @src.each_value do |source|
      if sexp? source
        return source.line
      end
    end
  end
end