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.setup_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: erb = ERB.new(File.read(configuration)) 76: erb.filename = configuration 77: configuration = YAML.load(erb.result) 78: else 79: ENV["RAILS_ENV"] = configuration 80: require 'config/environment' 81: configuration = ActiveLdap::Base.configurations[configuration] 82: end 83: end 84: if Object.const_defined?(:RAILS_ENV) 85: rails_configuration = ActiveLdap::Base.configurations[RAILS_ENV] 86: configuration = rails_configuration.merge(configuration) 87: end 88: configuration = configuration.symbolize_keys 89: end
# File lib/active_ldap/get_text/parser.rb, line 103 103: def extract(targets) 104: @targets = {} 105: targets.each do |id, *file_infos| 106: @targets[id] = file_infos 107: end 108: yield 109: @targets.collect do |id, file_infos| 110: [id, *file_infos.uniq] 111: end.sort_by do |id,| 112: id 113: end 114: 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 91 91: def load_constants(file) 92: old_constants = Object.constants 93: begin 94: eval(File.read(file), TOPLEVEL_BINDING, file) 95: rescue 96: format = _("Ignored '%{file}'. Solve dependencies first.") 97: $stderr.puts(format % {:file => file}) 98: $stderr.puts($!) 99: end 100: Object.constants - old_constants 101: end
# File lib/active_ldap/get_text/parser.rb, line 116 116: def register(id, file) 117: file_info = "#{file}:-" 118: @targets[id] ||= [] 119: @targets[id] << file_info 120: end
# File lib/active_ldap/get_text/parser.rb, line 139 139: def register_attribute(attribute, file) 140: [attribute.name, *attribute.aliases].each do |name| 141: msgid = ActiveLdap::Base.human_attribute_name_msgid(name) 142: register(msgid, file) if msgid 143: end 144: if attribute.description 145: msgid = ActiveLdap::Base.human_attribute_description_msgid(attribute) 146: register(msgid, file) 147: end 148: end
# File lib/active_ldap/get_text/parser.rb, line 122 122: def register_object_class(object_class, file) 123: [object_class.name, *object_class.aliases].each do |name| 124: register(ActiveLdap::Base.human_object_class_name_msgid(name), file) 125: end 126: if object_class.description 127: msgid = 128: ActiveLdap::Base.human_object_class_description_msgid(object_class) 129: register(msgid, file) 130: end 131: (object_class.must(false) + object_class.may(false)).each do |attribute| 132: register_attribute(attribute, file) 133: end 134: object_class.super_classes.each do |super_class| 135: register_object_class(super_class, file) 136: end 137: end
# File lib/active_ldap/get_text/parser.rb, line 150 150: def register_syntax(syntax, file) 151: msgid = ActiveLdap::Base.human_syntax_name_msgid(syntax) 152: register(msgid, file) 153: 154: if syntax.description 155: msgid = ActiveLdap::Base.human_syntax_description_msgid(syntax) 156: register(msgid, file) 157: end 158: end