Class | ActiveLdap::GetText::Parser |
In: |
lib/active_ldap/get_text/parser.rb
|
Parent: | Object |
# File lib/active_ldap/get_text/parser.rb, line 9 9: def initialize(configuration=nil) 10: configuration = ensure_configuration(configuration) 11: configuration = default_configuration.merge(configuration) 12: 13: configuration = extract_options(configuration) 14: ActiveLdap::Base.establish_connection(configuration) 15: end
# File lib/active_ldap/get_text/parser.rb, line 37 37: def extract_all_in_schema(targets=[]) 38: extract(targets) do 39: schema = ActiveLdap::Base.schema 40: schema.object_classes.each do |object_class| 41: register_object_class(object_class, "-") 42: end 43: schema.attributes.each do |attribute| 44: register_attribute(attribute, "-") 45: end 46: schema.ldap_syntaxes.each do |syntax| 47: register_syntax(syntax, "-") 48: end 49: end 50: end
# File lib/active_ldap/get_text/parser.rb, line 17 17: def parse(file, targets=[]) 18: targets = RubyParser.parse(file, targets) if RubyParser.target?(file) 19: extract(targets) do 20: load_constants(file).each do |name| 21: klass = name.constantize 22: next unless klass.is_a?(Class) 23: next unless klass < ActiveLdap::Base 24: register(klass.name.singularize.underscore.gsub(/_/, " "), file) 25: next unless @extract_schema 26: klass.classes.each do |object_class| 27: register_object_class(object_class, file) 28: end 29: end 30: end 31: end
# File lib/active_ldap/get_text/parser.rb, line 33 33: def target?(file) 34: @classes_re.match(File.read(file)) 35: end
# File lib/active_ldap/get_text/parser.rb, line 61 61: def default_configuration 62: { 63: :host => "127.0.0.1", 64: :allow_anonymous => true, 65: :extract_schema => false, 66: } 67: end
# File lib/active_ldap/get_text/parser.rb, line 69 69: def ensure_configuration(configuration) 70: configuration ||= ENV["RAILS_ENV"] || {} 71: if configuration.is_a?(String) 72: if File.exists?(configuration) 73: require 'erb' 74: require 'yaml' 75: configuration = YAML.load(ERB.new(File.read(configuration)).result) 76: else 77: ENV["RAILS_ENV"] = configuration 78: require 'config/environment' 79: configuration = ActiveLdap::Base.configurations[configuration] 80: end 81: end 82: if Object.const_defined?(:RAILS_ENV) 83: rails_configuration = ActiveLdap::Base.configurations[RAILS_ENV] 84: configuration = rails_configuration.merge(configuration) 85: end 86: configuration = configuration.symbolize_keys 87: end
# File lib/active_ldap/get_text/parser.rb, line 101 101: def extract(targets) 102: @targets = {} 103: targets.each do |id, *file_infos| 104: @targets[id] = file_infos 105: end 106: yield 107: @targets.collect do |id, file_infos| 108: [id, *file_infos.uniq] 109: end.sort_by do |id,| 110: id 111: end 112: end
# File lib/active_ldap/get_text/parser.rb, line 53 53: def extract_options(configuration) 54: configuration = configuration.dup 55: classes = configuration.delete(:classes) || ["ActiveLdap::Base"] 56: @classes_re = /class.*#{Regexp.union(*classes)}/ # 57: @extract_schema = configuration.delete(:extract_schema) 58: configuration 59: end
# File lib/active_ldap/get_text/parser.rb, line 89 89: def load_constants(file) 90: old_constants = Object.constants 91: begin 92: eval(File.read(file), TOPLEVEL_BINDING, file) 93: rescue 94: format = _("Ignored '%{file}'. Solve dependencies first.") 95: $stderr.puts(format % {:file => file}) 96: $stderr.puts($!) 97: end 98: Object.constants - old_constants 99: end
# File lib/active_ldap/get_text/parser.rb, line 114 114: def register(id, file) 115: file_info = "#{file}:-" 116: @targets[id] ||= [] 117: @targets[id] << file_info 118: end
# File lib/active_ldap/get_text/parser.rb, line 137 137: def register_attribute(attribute, file) 138: [attribute.name, *attribute.aliases].each do |name| 139: msgid = ActiveLdap::Base.human_attribute_name_msgid(name) 140: register(msgid, file) if msgid 141: end 142: if attribute.description 143: msgid = ActiveLdap::Base.human_attribute_description_msgid(attribute) 144: register(msgid, file) 145: end 146: end
# File lib/active_ldap/get_text/parser.rb, line 120 120: def register_object_class(object_class, file) 121: [object_class.name, *object_class.aliases].each do |name| 122: register(ActiveLdap::Base.human_object_class_name_msgid(name), file) 123: end 124: if object_class.description 125: msgid = 126: ActiveLdap::Base.human_object_class_description_msgid(object_class) 127: register(msgid, file) 128: end 129: (object_class.must(false) + object_class.may(false)).each do |attribute| 130: register_attribute(attribute, file) 131: end 132: object_class.super_classes.each do |super_class| 133: register_object_class(super_class, file) 134: end 135: end
# File lib/active_ldap/get_text/parser.rb, line 148 148: def register_syntax(syntax, file) 149: msgid = ActiveLdap::Base.human_syntax_name_msgid(syntax) 150: register(msgid, file) 151: 152: if syntax.description 153: msgid = ActiveLdap::Base.human_syntax_description_msgid(syntax) 154: register(msgid, file) 155: end 156: end