Commit 14471a2f35678f10e297eb5b009d2ce3bd934532
Committed by
Georg Hopp
1 parent
b0a176cf
another aproach to call a method given by a string....maybe less optimal
Showing
3 changed files
with
24 additions
and
6 deletions
| @@ -58,7 +58,7 @@ | @@ -58,7 +58,7 @@ | ||
| 58 | - 'organizationalRole' | 58 | - 'organizationalRole' |
| 59 | - 'MailAlias' | 59 | - 'MailAlias' |
| 60 | 60 | ||
| 61 | - :dnPat: "cn=#{:user},o=#{:mail|sub(/.*@/, '')}" | 61 | + :dnPat: "cn=#{:user},o=#{:mail|:sub, /.*@/, ''}" |
| 62 | 62 | ||
| 63 | :map: | 63 | :map: |
| 64 | :cn: :user | 64 | :cn: :user |
| @@ -72,7 +72,7 @@ | @@ -72,7 +72,7 @@ | ||
| 72 | - 'person' | 72 | - 'person' |
| 73 | - 'MailAlias' | 73 | - 'MailAlias' |
| 74 | 74 | ||
| 75 | - :dnPat: "mail=#{:mail},o=#{:mail|sub(/.*@/, '')}" | 75 | + :dnPat: "mail=#{:mail},o=#{:mail|:sub, /.*@/, ''}" |
| 76 | 76 | ||
| 77 | :map: | 77 | :map: |
| 78 | :sn: :surname | 78 | :sn: :surname |
| @@ -87,7 +87,7 @@ | @@ -87,7 +87,7 @@ | ||
| 87 | - 'person' | 87 | - 'person' |
| 88 | - 'MailAccount' | 88 | - 'MailAccount' |
| 89 | 89 | ||
| 90 | - :dnPat: "mail=#{:mail},o=#{:mail|sub(/.*@/, '')}" | 90 | + :dnPat: "mail=#{:mail},o=#{:mail|:sub, /.*@/, ''}" |
| 91 | 91 | ||
| 92 | :map: | 92 | :map: |
| 93 | :homedirectory: :home | 93 | :homedirectory: :home |
| @@ -20,16 +20,29 @@ class DsAdmin::Storage::Config | @@ -20,16 +20,29 @@ class DsAdmin::Storage::Config | ||
| 20 | ## | 20 | ## |
| 21 | # replace special patterns within config strings with data | 21 | # replace special patterns within config strings with data |
| 22 | # given by the data hash param. These patterns also allow to send | 22 | # given by the data hash param. These patterns also allow to send |
| 23 | - # a message to the replaces data e.g. for some kind of subtitution. | 23 | + # a message to the actual substituted data to do any kind of |
| 24 | + # conversion to it. | ||
| 25 | + # | ||
| 26 | + # actually this is used within the handling of the ldap specific | ||
| 27 | + # :dnPat config parameter to generate the dn entry for a given model | ||
| 28 | + # Data (create or replace) | ||
| 29 | + # | ||
| 30 | + # TODO: I would like to get rid of the eval statements but i don't know | ||
| 31 | + # a better way to build the correct objects from the config strings | ||
| 24 | # | 32 | # |
| 25 | def eval_pattern(pattern, data = {}) | 33 | def eval_pattern(pattern, data = {}) |
| 26 | scan_exp = /([^#]*)(#\{(:[^}|]+)(\|([^}]*))?\})?/ | 34 | scan_exp = /([^#]*)(#\{(:[^}|]+)(\|([^}]*))?\})?/ |
| 27 | 35 | ||
| 28 | result = String.new | 36 | result = String.new |
| 29 | pattern.scan(scan_exp) do |m| | 37 | pattern.scan(scan_exp) do |m| |
| 30 | - key = m[2][1..m[2].length].to_sym if m[2] | 38 | + key = (eval m[2]) if m[2] |
| 31 | val = data[key] if data[key] | 39 | val = data[key] if data[key] |
| 32 | - val = eval('"' + val + '".send ' + m[4]) if val && m[4] | 40 | + |
| 41 | + args = m[4].split(',').map do |arg| | ||
| 42 | + eval arg.strip | ||
| 43 | + end if m[4] | ||
| 44 | + | ||
| 45 | + val = val.send *args if args | ||
| 33 | 46 | ||
| 34 | result += m[0] + (val || "") | 47 | result += m[0] + (val || "") |
| 35 | end | 48 | end |
| @@ -149,4 +149,9 @@ puts 'returns: ' + user.save | @@ -149,4 +149,9 @@ puts 'returns: ' + user.save | ||
| 149 | puts 'base: ' + user.inspect | 149 | puts 'base: ' + user.inspect |
| 150 | 150 | ||
| 151 | puts | 151 | puts |
| 152 | +alias_person.mail = 'noop@steffers.org' | ||
| 153 | +puts 'returns: ' + alias_person.save | ||
| 154 | +puts 'base: ' + alias_person.inspect | ||
| 155 | + | ||
| 156 | +puts | ||
| 152 | puts 'Memory useage: ' + `ps -o rss= -p #{Process.pid}` | 157 | puts 'Memory useage: ' + `ps -o rss= -p #{Process.pid}` |
Please
register
or
login
to post a comment