|
1 | | -module Gon |
2 | | - module Global |
| 1 | +class Gon |
| 2 | + class Global < Gon |
3 | 3 | class << self |
4 | 4 |
|
5 | 5 | def all_variables |
6 | 6 | @global_vars || {} |
7 | 7 | end |
8 | 8 |
|
9 | | - def method_missing(method, *args, &block) |
10 | | - @global_vars ||= {} |
11 | | - if ( method.to_s =~ /=$/ ) |
12 | | - if public_method_name? method |
13 | | - raise "You can't use Gon public methods for storing data" |
14 | | - end |
15 | | - |
16 | | - @global_vars[method.to_s.delete('=')] = args[0] |
17 | | - else |
18 | | - @global_vars[method.to_s] |
19 | | - end |
20 | | - end |
21 | | - |
22 | | - def rabl(*args) |
23 | | - data, options = Gon::Rabl.handler(args, true) |
24 | | - |
25 | | - store_builder_data 'rabl', data, options |
26 | | - end |
27 | | - |
28 | | - def jbuilder(*args) |
29 | | - data, options = Gon::Jbuilder.handler(args, true) |
30 | | - |
31 | | - store_builder_data 'jbuilder', data, options |
32 | | - end |
33 | | - |
34 | 9 | def clear |
35 | 10 | @global_vars = {} |
36 | 11 | end |
37 | 12 |
|
38 | 13 | def inspect |
39 | | - 'Gon' |
| 14 | + 'Gon::Global' |
40 | 15 | end |
41 | 16 |
|
42 | 17 | private |
43 | 18 |
|
44 | | - def store_builder_data(builder, data, options) |
45 | | - if options[:as] |
46 | | - @global_vars[options[:as].to_s] = data |
47 | | - elsif data.is_a? Hash |
48 | | - data.each do |key, value| |
49 | | - @global_vars[key] = value |
50 | | - end |
51 | | - else |
52 | | - @global_vars[builder] = data |
53 | | - end |
| 19 | + def get_variable(name) |
| 20 | + @global_vars ||= {} |
| 21 | + @global_vars[name] |
54 | 22 | end |
55 | 23 |
|
56 | | - def public_method_name?(method) |
57 | | - public_methods.include?( |
58 | | - if RUBY_VERSION > '1.9' |
59 | | - method.to_s[0..-2].to_sym |
60 | | - else |
61 | | - method.to_s[0..-2] |
62 | | - end |
63 | | - ) |
| 24 | + def set_variable(name, value) |
| 25 | + @global_vars ||= {} |
| 26 | + @global_vars[name] = value |
64 | 27 | end |
65 | 28 |
|
66 | 29 | end |
|
0 commit comments