Sha256: 4377d4a8118520920d33d54cc6b28be68a5fa02e721d05959876eeb2bb0630c4

Contents?: true

Size: 773 Bytes

Versions: 2

Compression:

Stored size: 773 Bytes

Contents

require "roda"
require "rack/csrf"

class Roda
  module RodaPlugins
    module Page
      module InstanceMethods
        def current_page
          page.with_flash(flash)
        end

        def page
          self.class["page"].with(
            csrf_token: -> { Rack::Csrf.token(request.env) },
            csrf_metatag: -> { Rack::Csrf.metatag(request.env) },
            csrf_tag: -> { Rack::Csrf.tag(request.env) },
          )
        end
      end
    end

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

    register_plugin :page, Page
    register_plugin :view, View
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dry-web-roda-0.5.1 lib/dry/web/roda/skeletons/umbrella/lib/roda_plugins.rb
dry-web-roda-0.5.0 lib/dry/web/roda/skeletons/umbrella/lib/roda_plugins.rb