Module: MetaProgrammingCommon

Defined in:
lib/meta_programming_common.rb,
lib/meta_programming_common/version.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

VERSION =
"0.1.4"

Class Method Summary collapse

Class Method Details

.all_page_models(prefix = "page") ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/meta_programming_common.rb', line 76

def self.all_page_models(prefix = "page")
  models = []
  folder = File.join(Rails.root, "app", "models")
  Dir[File.join(folder, "*")].each do |filename|
    next if filename =~ /page_parser_base/
    next if filename =~ /page_archive/
    if filename =~ /models\/#{prefix}/
      klass = File.basename(filename, '.rb').camelize.constantize
      models << klass 
    end
  end
  
  return models
end

.page_models(prefix = "page") ⇒ Object

MetaProgrammingCommon.page_models



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/meta_programming_common.rb', line 26

def self.page_models(prefix = "page")
  models = []
  # folder = File.join(Rails.root, "app", "models")
  # folder = File.join(`pwd`.strip, 'lib')
  folder = PageParser.gem_lib_root
  #byebug
  # add a variable for the generic page parser so it can be included LAST
  # and, yes, this relies on leaky variable scope; using a tool which is crappy isn't bad 
  # when its standard
  parser_page_base_filename = File.join(folder, 'parser_page_base.rb')
  require parser_page_base_filename
  Dir[File.join(folder, "*")].each do |filename|
    #byebug
    next if filename =~ /page_parser_base/
    next if filename =~ /parser_page_base/
    next if filename =~ /page_parser\.rb$/
    next if filename =~ /page_archive/      
    if filename =~ /lib\/#{prefix}/
      #byebug
      # See: late night hacking
      require filename
      #puts filename
      klass = File.basename(filename, '.rb').camelize.constantize
      if klass == PageParser
        # this is stupid AF -- I know but somehow the next above on 43 is not filtering 
        # out the module
      else
        models << klass if klass.available?
      end
      models << klass if klass.available?
    elsif filename =~ /generic/
      generic_page_parser = filename
    end
    # add in the generic page for handling unknown cased
    
  end
  #byebug
  #raise models.inspect
  # should add this to the very end
  #require generic_page_parser
  generic_page_parser_filename = File.join(folder, 'page_generic.rb')
  require generic_page_parser_filename
  klass = File.basename('page_generic', '.rb').camelize.constantize
  models << klass if klass.available?
  #puts models
  
  
  return models
end