Sha256: f03b6246a6a18b8e72176381af174971ac192e3bfdb2a888307d6de6f1c84d94

Contents?: true

Size: 1.51 KB

Versions: 20

Compression:

Stored size: 1.51 KB

Contents

# Nested and Polymorphic Resource Helpers
#
module Resourcelogic
  module Context
    def self.included(klass)
      klass.class_eval do
        add_acts_as_resource_module(Methods)
      end
    end
    
    module Methods
      def self.included(klass)
        klass.helper_method :context, :contexts, :contexts_url_parts
        klass.hide_action :context, :contexts
      end
      
      def context
        @context ||= contexts.last
      end
      
      def contexts
        return @contexts if defined?(@contexts)
        path_parts = request.path.split("/")
        path_parts.shift
        @contexts = []
        path_parts.each_with_index do |part, index|
          break if model_name_from_path_part(part.split(".").first) == model_name
          @contexts << (part.to_i > 0 ? @contexts.pop.to_s.singularize.to_sym : part.underscore.to_sym)
        end
        @contexts
      end
      
      private
        def contexts_url_parts
          return @contexts_url_parts if @contexts_url_parts
          path_parts = request.path.split("/")
          path_parts.shift
          @contexts_url_parts = []
          path_parts.each_with_index do |part, index|
            break if model_name_from_path_part(part.split(".").first) == model_name
            if part.to_i > 0
              @contexts_url_parts << [route_name_from_path_part(@contexts_url_parts.pop), part.to_i]
            else
              @contexts_url_parts << part.underscore.to_sym
            end
          end
          @contexts_url_parts
        end
    end
  end
end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
binarylogic-resourcelogic-0.0.11 lib/resourcelogic/context.rb
binarylogic-resourcelogic-0.0.12 lib/resourcelogic/context.rb
binarylogic-resourcelogic-0.12.0 lib/resourcelogic/context.rb
binarylogic-resourcelogic-0.12.1 lib/resourcelogic/context.rb
binarylogic-resourcelogic-0.12.2 lib/resourcelogic/context.rb
binarylogic-resourcelogic-0.12.3 lib/resourcelogic/context.rb
binarylogic-resourcelogic-0.12.4 lib/resourcelogic/context.rb
binarylogic-resourcelogic-0.12.5 lib/resourcelogic/context.rb
binarylogic-resourcelogic-0.12.6 lib/resourcelogic/context.rb
resourcelogic-0.12.6 lib/resourcelogic/context.rb
resourcelogic-0.12.5 lib/resourcelogic/context.rb
resourcelogic-0.12.3 lib/resourcelogic/context.rb
resourcelogic-0.12.4 lib/resourcelogic/context.rb
resourcelogic-0.0.11 lib/resourcelogic/context.rb
resourcelogic-0.0.12 lib/resourcelogic/context.rb
resourcelogic-0.12.0 lib/resourcelogic/context.rb
resourcelogic-0.12.1 lib/resourcelogic/context.rb
resourcelogic-0.12.2 lib/resourcelogic/context.rb
resourcelogic-0.11.0 lib/resourcelogic/context.rb
resourcelogic-0.10.0 lib/resourcelogic/context.rb