Sha256: dade852f36b43a20dd799561ec89f73c368c7931d75204f79cafc81f4ed10b4d

Contents?: true

Size: 1.26 KB

Versions: 5

Compression:

Stored size: 1.26 KB

Contents

module GenesisRails
  module AutoInclude
    module Methods
      def auto_include_magic_view_data_attr
        GenesisRails::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

5 entries across 5 versions & 1 rubygems

Version Path
genesis_rails-0.1.1 lib/genesis_rails/auto_include_magic_view.rb
genesis_rails-0.1.0 lib/genesis_rails/auto_include_magic_view.rb
genesis_rails-0.0.8 lib/genesis_rails/auto_include_magic_view.rb
genesis_rails-0.0.7 lib/genesis_rails/auto_include_magic_view.rb
genesis_rails-0.0.6 lib/genesis_rails/auto_include_magic_view.rb