| 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