module Gon::Jbuilder

Public Class Methods

handler(args, global = false) click to toggle source
# File lib/gon/jbuilder.rb, line 5
def handler(args, global = false)
  options = parse_options_from args
  valid_options? options, global

  controller = Gon::EnvFinder.controller_env(options)
  controller_name = global ? '' : controller.controller_path

  parser = Gon::Jbuilder::Parser.new(
    template_path: Gon::EnvFinder.template_path(options, 'jbuilder'),
    controller: controller,
    controller_name: controller_name,
    locals: options[:locals]
  )
  data = parser.parse!

  [data, options]
end

Private Class Methods

new_api?(args) click to toggle source
# File lib/gon/jbuilder.rb, line 50
def new_api?(args)
  args.first.is_a? Hash
end
old_api?(args) click to toggle source
# File lib/gon/jbuilder.rb, line 46
def old_api?(args)
  args.first.is_a? String
end
parse_options_from(args) click to toggle source
# File lib/gon/jbuilder.rb, line 31
def parse_options_from(args)
  if old_api? args
    text =  "[DEPRECATION] view_path argument is now optional. "
    text << "If you need to specify it, "
    text << "please use gon.jbuilder(:template => 'path')"
    warn text

    args.extract_options!.merge(:template => args[0])
  elsif new_api? args
    args.first
  else
    {}
  end
end
valid_options?(options, global) click to toggle source
# File lib/gon/jbuilder.rb, line 25
def valid_options?(options, global)
  if global && !options[:template]
    raise 'You should provide :template when use rabl with global variables'
  end
end