Sha256: ee1c151893998ff74c2239f8eec83e918119f4a369cbd8c8cd753a461bc3c8b3

Contents?: true

Size: 856 Bytes

Versions: 4

Compression:

Stored size: 856 Bytes

Contents

class Roda
  module RodaPlugins
    module DryView
      def self.load_dependencies(app)
        app.plugin :csrf
        app.plugin :flash
        app.plugin :flow
      end

      module InstanceMethods
        def view_context
          self.class["view_context"].with(view_context_options)
        end

        def view_context_options
          {
            flash:        flash,
            csrf_token:   Rack::Csrf.token(request.env),
            csrf_metatag: Rack::Csrf.metatag(request.env),
            csrf_tag:     Rack::Csrf.tag(request.env),
          }
        end
      end

      module RequestMethods
        def view(name, options = {})
          options = {context: scope.view_context}.merge(options)
          is to: "views.#{name}", call_with: [options]
        end
      end
    end

    register_plugin :dry_view, DryView
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dry-web-roda-0.6.3 lib/roda/plugins/dry_view.rb
dry-web-roda-0.6.2 lib/roda/plugins/dry_view.rb
dry-web-roda-0.6.1 lib/roda/plugins/dry_view.rb
dry-web-roda-0.6.0 lib/roda/plugins/dry_view.rb