Sha256: dc858d34f8ea874aec4d1d74624e47c748f43e7e65c315a9b6ac133b5b63ef0f

Contents?: true

Size: 1.25 KB

Versions: 8

Compression:

Stored size: 1.25 KB

Contents

module Silmarails
  module AutoInclude
    module Methods
      def auto_include_magic_view_data_attr
        Silmarails::AutoInclude::MagicView.add_data_attr(self)
      end
    end

    class MagicView
      OPENING_BODY_TAG = "<body"

      attr_reader :controller

      def self.add_data_attr(controller)
        data_attr_include = new(controller)
        data_attr_include.include_magic_view_classes!
      end

      def initialize(kontroller)
        @controller = kontroller
      end

      def include_magic_view_classes!
        response.body = response.body.gsub(
          OPENING_BODY_TAG,
          '\\0' + " data-action-view=\"#{action_class_name}View\"
          data-controller-view=\"#{controller_class_name}View\"")
      end

      private

      def response
        controller.response
      end

      def action_class_name
        action = case controller.action_name
                 when "create" then "new"
                 when "update" then "edit"
                 else
                   controller.action_name
                 end
        action = action.camelize
        "#{controller_class_name}#{action}"
      end

      def controller_class_name
        controller.class.name.gsub('::', '').gsub(/Controller$/, '')
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
silmarails-0.3.4 lib/silmarails/auto_include_magic_view.rb
silmarails-0.3.2 lib/silmarails/auto_include_magic_view.rb
silmarails-0.3.1 lib/silmarails/auto_include_magic_view.rb
silmarails-0.3.0 lib/silmarails/auto_include_magic_view.rb
silmarails-0.2.2 lib/silmarails/auto_include_magic_view.rb
silmarails-0.2.1 lib/silmarails/auto_include_magic_view.rb
silmarails-0.2.0 lib/silmarails/auto_include_magic_view.rb
silmarails-0.1.1 lib/silmarails/auto_include_magic_view.rb