Sha256: f103d71573a85ab5b0269b7200e0cba4ef4ef2a09853b8a855a9123119179293

Contents?: true

Size: 1.1 KB

Versions: 7

Compression:

Stored size: 1.1 KB

Contents

module ActiveMocker

  class ModelReader

    attr_reader :model_name, :model_dir, :file_reader

    def initialize(options={})
      @file_reader = options[:file_reader] ||= FileReader
      @model_dir   = options[:model_dir]
    end

    def parse(model_name)
      @model_name = model_name
      klass
      self
    end

    def klass
      @klass ||= eval_file
    end

    def eval_file
      m = Module.new
      m.module_eval(read_file)
      m.const_get m.constants.first
    end

    def read_file
      file_reader.read("#{model_dir}/#{model_name}.rb")
    end

    def class_methods
      klass.methods(false)
    end

    def class_methods_with_arguments
      class_methods.map do |m|
        {m => klass.method(m).parameters }
      end
    end

    def instance_methods_with_arguments
      instance_methods.map do |m|
        {m => klass.new.method(m).parameters }
      end
    end

    def instance_methods
      klass.public_instance_methods(false)
    end

    def relationships_types
      klass.relationships
    end

    def relationships
      relationships_types.to_h.values.flatten
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
active_mocker-1.1.2 lib/active_mocker/model_reader.rb
active_mocker-1.1.1 lib/active_mocker/model_reader.rb
active_mocker-1.1.0 lib/active_mocker/model_reader.rb
active_mocker-1.0.1 lib/active_mocker/model_reader.rb
active_mocker-1.0.0 lib/active_mocker/model_reader.rb
active_mocker-0.4.0 lib/active_mocker/model_reader.rb
active_mocker-0.3.1 lib/active_mocker/model_reader.rb