Sha256: 7cfd009b7c29d7f38e51fdcc6226db1a2f8d953656730c98c7b2e2e5f295dd09

Contents?: true

Size: 1.6 KB

Versions: 12

Compression:

Stored size: 1.6 KB

Contents

require 'sproutcore/merb/bundle_controller'

module SproutCore
  module Merb
    module RouterMethods
      
      # Connect a BundleController to the specified location.  All requests matching
      # this path root will by default be handled by this new controller.
      #
      # ==== Params
      # path<String>:: The root path or other matcher to use for the matcher.  This
      #  will be passed through to the router, so you can use anything you like.
      #
      # === Options
      # library:: Optional path to the library that should be hosted 
      # You can also include any other options that are known to Merb::Bundle
      #
      def connect_clients(match_path, opts ={}, &block)
        
        # Create library 
        library_root = opts.delete(:library) || opts.delete(:library_root) || ::Merb.root
        library = Library.library_for(library_root, opts)
        
        # Define new subclass of bundle controller
        cnt = 0
        while Object.const_defined?(class_name = "SproutCoreBundleController#{cnt}".to_sym)
          cnt += 1
        end
        klass = eval("class ::#{class_name} < SproutCore::Merb::BundleController; end; #{class_name}")
        
        # Register library for class in BundleController
        ::SproutCore::Merb::BundleController.register_library_for_class(library, klass)
        
        # Finally, register match
        return self.match(%r[^#{match_path}\/?.*]).to(:controller => "sprout_core_bundle_controller_#{cnt}", :action => 'main')
        
      end
    end
  end
end

# Install in router.
Merb::Router::Behavior.send(:include, SproutCore::Merb::RouterMethods)

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
sproutcore-0.9.1 lib/sproutcore/merb/router.rb
sproutcore-0.9.0 lib/sproutcore/merb/router.rb
sproutcore-0.9.11 lib/sproutcore/merb/router.rb
sproutcore-0.9.10 lib/sproutcore/merb/router.rb
sproutcore-0.9.2 lib/sproutcore/merb/router.rb
sproutcore-0.9.4 lib/sproutcore/merb/router.rb
sproutcore-0.9.5 lib/sproutcore/merb/router.rb
sproutcore-0.9.3 lib/sproutcore/merb/router.rb
sproutcore-0.9.7 lib/sproutcore/merb/router.rb
sproutcore-0.9.9 lib/sproutcore/merb/router.rb
sproutcore-0.9.6 lib/sproutcore/merb/router.rb
sproutcore-0.9.8 lib/sproutcore/merb/router.rb