class BreezyTemplate::Handler

Public Class Methods

call(template, source = nil) click to toggle source
# File lib/breezy_template/handler.rb, line 12
def self.call(template, source = nil)

  # this juggling is required to keep line numbers right in the error
  %{__already_defined = defined?(json);json||=::BreezyTemplate.new(self);json._set_search_path_once(breezy_filter) if defined?(breezy_filter); json._set_request_url_once(request.fullpath);#{template.source}
    if !(__already_defined && __already_defined != "method")
      json.merge!({data: json._found! || json.empty! })
      json.set! :screen, '#{self.template_id(template)}'

      if defined?(breezy) && breezy
        breezy.each do |k, v|
          json.set! k, v
        end
      end

      json.fragments ::BreezyTemplate::Var.new('fragments')

      json.private_opts do
        if protect_against_forgery?
          json.csrf_token form_authenticity_token
        end

        __sprockets_assets = (::BreezyTemplate.configuration.track_sprockets_assets || []).map do |asset|
          asset_path(asset)
        end

        __pack_assets = []
        if defined?(asset_pack_path)
          __pack_assets = (::BreezyTemplate.configuration.track_pack_assets || []).map do |asset|
            asset_pack_path(asset)
          end
        end

        if __sprockets_assets.any? || __pack_assets.any?
          json.assets (__sprockets_assets + __pack_assets)
        end

        if defined?(breezy_filter) && !!breezy_filter
          json.action 'graft'
          __formatter = ::BreezyTemplate::KeyFormatter.new({camelize: :lower})
          json.path breezy_filter
            .split('.')
            .map {|part|
              if part.include? '='
                k, v = part.split('=')
                [__formatter.format(k),v].join('=')
              else
                __formatter.format(part)
              end
            }
            .join('.')
        end

        json.last_fragment_name ::BreezyTemplate::Var.new('lastFragmentName')
        json.last_fragment_path ::BreezyTemplate::Var.new('lastFragmentPath')

        json.defers ::BreezyTemplate::Var.new('defers')
      end

      json.target!
    end
  }
end
template_id(template) click to toggle source
# File lib/breezy_template/handler.rb, line 8
def self.template_id(template)
  template.identifier.sub("#{Rails.root}/app/views/", "").split('.')[0]
end