Sha256: c30ed18a3320873473adae6e6db95c2cc36ae5b41285482dd797efff1fe184b5

Contents?: true

Size: 856 Bytes

Versions: 7

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

7 entries across 7 versions & 1 rubygems

Version Path
dry-web-roda-0.8.0 lib/roda/plugins/dry_view.rb
dry-web-roda-0.7.5 lib/roda/plugins/dry_view.rb
dry-web-roda-0.7.4 lib/roda/plugins/dry_view.rb
dry-web-roda-0.7.3 lib/roda/plugins/dry_view.rb
dry-web-roda-0.7.2 lib/roda/plugins/dry_view.rb
dry-web-roda-0.7.1 lib/roda/plugins/dry_view.rb
dry-web-roda-0.7.0 lib/roda/plugins/dry_view.rb