Skip to content

Commit 5533aac

Browse files
committed
Refactoring and start work on rabl support
1 parent 4b0e4f8 commit 5533aac

File tree

3 files changed

+51
-30
lines changed

3 files changed

+51
-30
lines changed

lib/gon.rb

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,53 @@
11
require 'action_view'
22
require 'action_controller'
33
require 'gon/helpers'
4+
require 'gon/rabl'
45

56
module Gon
6-
def self.all_variables
7-
@request_env[:gon]
8-
end
9-
10-
def self.clear
11-
@request_env[:gon] = {}
12-
end
7+
class << self
8+
def all_variables
9+
@request_env[:gon]
10+
end
1311

14-
def self.request_env=(request_env)
15-
@request_env = request_env
16-
end
12+
def clear
13+
@request_env[:gon] = {}
14+
end
1715

18-
def self.request_env
19-
if defined?(@request_env)
20-
return @request_env
16+
def request_env=(request_env)
17+
@request_env = request_env
18+
@request_env[:gon] ||= {}
2119
end
22-
end
2320

24-
def self.method_missing(m, *args, &block)
25-
@request_env[:gon] ||= {}
21+
def request_env
22+
if defined?(@request_env)
23+
return @request_env
24+
end
25+
end
2626

27-
if ( m.to_s =~ /=$/ )
28-
if self.public_methods.include? m.to_s[0..-2].to_sym
29-
raise "You can't use Gon public methods for storing data"
27+
def method_missing(m, *args, &block)
28+
if ( m.to_s =~ /=$/ )
29+
if public_methods.include? m.to_s[0..-2].to_sym
30+
raise "You can't use Gon public methods for storing data"
31+
end
32+
set_variable(m.to_s.delete('='), args[0])
33+
else
34+
get_variable(m.to_s)
3035
end
31-
set_variable(m.to_s.delete('='), args[0])
32-
else
33-
get_variable(m.to_s)
3436
end
35-
end
3637

37-
def self.get_variable(name)
38-
@request_env[:gon][name]
39-
end
38+
def get_variable(name)
39+
@request_env[:gon][name]
40+
end
4041

41-
def self.set_variable(name, value)
42-
@request_env[:gon][name] = value
42+
def set_variable(name, value)
43+
@request_env[:gon][name] = value
44+
end
45+
46+
def rabl(view_path, options = {})
47+
# if rabl_name = options[:as] || options[:to]
48+
49+
# end
50+
set_variable('rabl', Gon::Rabl.parse_rabl(view_path, @request_env['action_controller.instance']))
51+
end
4352
end
4453
end

lib/gon/helpers.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def self.included base
66

77
module InstanceMethods
88
def include_gon(options = {})
9-
if Gon.request_env
9+
if Gon.request_env && Gon.all_variables.present?
1010
data = Gon.all_variables
1111
namespace = options[:namespace] || 'gon'
1212
script = "<script>window." + namespace + " = {};"
@@ -45,4 +45,4 @@ def gon
4545
end
4646

4747
ActionView::Base.send :include, Gon::Helpers
48-
ActionController::Base.send :include, Gon::GonHelpers
48+
ActionController::Base.send :include, Gon::GonHelpers

lib/gon/rabl.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
require 'rabl'
2+
3+
module Gon::Rabl
4+
class << self
5+
def parse_rabl(rabl_path, controller)
6+
source = File.read(rabl_path)
7+
rabl_engine = Rabl::Engine.new(source, :format => 'json')
8+
output = rabl_engine.render(controller, {})
9+
10+
end
11+
end
12+
end

0 commit comments

Comments
 (0)