Sha256: 6fa0e8b0c3d18815b9db730760ab802fdf66dc3fdd95812dc5a3d6e087ae03ef

Contents?: true

Size: 806 Bytes

Versions: 22

Compression:

Stored size: 806 Bytes

Contents

module Hobo
  module Routes
    extend self

    def reset_linkables
      @linkable_keys = Set.new
    end

    def linkable_key(klass, action, options)
      subsite = options[:subsite] || options['subsite']
      method  = options[:method]  || options['method'] || :get
      [ subsite, klass.name, action, method ].join('/')
    end

    def linkable!(klass, action, options={})
      @linkable_keys << linkable_key(klass, action, options)
    end

    def linkable?(klass, action, options={})
      @linkable_keys.member? linkable_key(klass, action, options)
    end

    def models_with(wanted_action)
      @linkable_keys.map do |k|
        subsite, class_name, action, method = k.split('/')
        (action == wanted_action.to_s) ? class_name.constantize : nil
      end.compact
    end

  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
hobo-1.3.3 lib/hobo/routes.rb
hobo-1.3.2 lib/hobo/routes.rb
hobo-1.3.1 lib/hobo/routes.rb
hobo-1.4.0.pre8 lib/hobo/routes.rb
hobo-1.4.0.pre7 lib/hobo/routes.rb
hobo-1.4.0.pre6 lib/hobo/routes.rb
hobo-1.4.0.pre5 lib/hobo/routes.rb
hobo-1.4.0.pre4 lib/hobo/routes.rb
hobo-1.4.0.pre3 lib/hobo/routes.rb
hobo-1.4.0.pre2 lib/hobo/routes.rb
hobo-1.3.0 lib/hobo/routes.rb
hobo-1.3.0.RC4 lib/hobo/routes.rb
hobo-1.3.0.RC3 lib/hobo/routes.rb
hobo-1.3.0.RC2 lib/hobo/routes.rb
hobo-1.3.0.RC1 lib/hobo/routes.rb
hobo-1.3.0.RC lib/hobo/routes.rb
hobo-1.3.0.pre31 lib/hobo/routes.rb
hobo-1.3.0.pre29 lib/hobo/routes.rb
hobo-1.3.0.pre28 lib/hobo/routes.rb
hobo-1.3.0.pre27 lib/hobo/routes.rb