Class: RRSE::Database

Inherits:
Object
  • Object
show all
Defined in:
lib/rrse/database.rb

Instance Method Summary collapse

Constructor Details

#initialize(dir, separator) ⇒ Database

Returns a new instance of Database.



4
5
6
7
8
# File 'lib/rrse/database.rb', line 4

def initialize(dir, separator)
  @table = File.open(dir.join("table")){|f| MessagePack.load(f)}
  @index_table = File.open(dir.join("index_table")){|f| MessagePack.load(f)}
  @separator = separator
end

Instance Method Details

#instance_method_name?(spec) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
21
# File 'lib/rrse/database.rb', line 18

def instance_method_name?(spec)
  return false unless /([.:#])[^.:#]+\Z/.match(spec)
  return $1 == "#"
end

#query_full_name(name) ⇒ Object



23
24
25
# File 'lib/rrse/database.rb', line 23

def query_full_name(name)
  @table.fetch(name, []).map{|param| "#{name}#{param}"}.join(@separator)
end

#query_instance_method(query) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/rrse/database.rb', line 10

def query_instance_method(query)
  @index_table.fetch(query, []).find_all{|spec|
    instance_method_name?(spec)
  }.map{|spec|
    query_full_name(spec)
  }.join(@separator)
end

#query_toplevel_method(query) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/rrse/database.rb', line 27

def query_toplevel_method(query)
  @index_table.fetch(query, []).find_all{|spec|
    toplevel_name?(spec)
  }.map{|spec|
    query_full_name(spec)
  }.join(@separator)
end

#toplevel_name?(spec) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/rrse/database.rb', line 35

def toplevel_name?(spec)
  /\A(Object\#|Kernel\.|Module#)(?!(initialize|class))/ =~ spec
end