Class: NoraMark::Extensions

Inherits:
Object
  • Object
show all
Defined in:
lib/nora_mark/extensions.rb

Class Method Summary collapse

Class Method Details

.const_get_if_available(name) ⇒ Object



14
15
16
17
18
# File 'lib/nora_mark/extensions.rb', line 14

def self.const_get_if_available(name)
  name.split(/::/).inject(Object) { |o, c|
    o.const_get(c) if !o.nil? and o.const_defined? c
  }
end

.load_generator(generator) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/nora_mark/extensions.rb', line 20

def self.load_generator(generator)
  module_name = "NoraMark::#{generator.to_s.capitalize}::Generator"
  generator_module = const_get_if_available(module_name)
  return generator_module unless generator_module.nil?

  path = "#{generator.to_s.downcase}.rb"
  current_dir_path = File.expand_path(File.join('.', '.noramark-plugins', path))
  home_dir_path = File.expand_path(File.join(ENV['HOME'], '.noramark-plugins', path))
  if File.exist? current_dir_path
    require current_dir_path
  elsif File.exist? home_dir_path
    require home_dir_path
  else
    require "nora_mark_#{generator.to_s.downcase}"
  end
  const_get_if_available(module_name)
end

.register_generator(generator) ⇒ Object



3
4
5
6
7
8
# File 'lib/nora_mark/extensions.rb', line 3

def self.register_generator(generator)
  if generator.is_a? Symbol  or generator.is_a? String
    generator = load_generator(generator)
  end
  NoraMark::Document.register_generator(generator)
end

.unregister_generator(generator) ⇒ Object



10
11
12
# File 'lib/nora_mark/extensions.rb', line 10

def self.unregister_generator(generator)
  NoraMark::Document.unregister_generator(generator)
end