module Miquire

Constants

PATH_KIND_CONVERTER

Public Class Methods

file_or_directory_require(rb) click to toggle source
# File core/miquire.rb, line 83
def file_or_directory_require(rb)
  if(match = rb.match(/\A(.*)\.rb\Z/))
    rb = match[1] end
  case
  when FileTest.directory?(File.join(rb))
    plugin = (File.join(rb, File.basename(rb)))
    if FileTest.exist? plugin or FileTest.exist? "#{plugin}.rb"
      miquire_original_require plugin
    else
      miquire_original_require rb end
  else
    miquire_original_require rb end end
miquire(kind, *files) click to toggle source

CHIのコアソースコードファイルを読み込む。 kind はファイルの種類、 file はファイル名(拡張子を除く)。 file を省略すると、そのディレクトリ下のrubyファイルを全て読み込む。 その際、そのディレクトリ下にディレクトリがあれば、そのディレクトリ内に そのディレクトリと同じ名前のRubyファイルがあると仮定して読み込もうとする。

Example

miquire :plugin

Directory hierarchy

plugins/
+ a.rb
`- b/
   + README
   + b.rb
   ` c.rb
a.rbとb.rbが読み込まれる(c.rbやREADMEは読み込まれない)
# File core/miquire.rb, line 59
def miquire(kind, *files)
  kind = kind.to_sym
  if files.empty?
    miquire_all_files(kind)
  else
    if kind == :lib
      files.each{ |file|
        path = File.expand_path(PATH_KIND_CONVERTER[:lib] + file)
        directory = File.dirname(path)
        if FileTest.exist?(directory)
          Dir.chdir(File.dirname(path)) {
            miquire_original_require file }
        else
          miquire_original_require file end }
    else
      files.each{ |file|
        file_or_directory_require PATH_KIND_CONVERTER[kind] + file.to_s } end end end
miquire_all_files(kind) click to toggle source

miquireと同じだが、全てのファイルが対象になる

# File core/miquire.rb, line 78
def miquire_all_files(kind)
  kind = kind.to_sym
  Dir.glob(PATH_KIND_CONVERTER[kind] + '*'.freeze).select{ |x| FileTest.directory?(x) or x.end_with?('.rb'.freeze) }.sort.each{ |rb|
    file_or_directory_require(rb) } end
miquire_original_require(file) click to toggle source
# File core/miquire.rb, line 96
def miquire_original_require(file)
  require file end