Sha256: 2572c4aa5502758acbcb07e8ff1cbf2ec6a2abf616748d00ecdbd7ff2a79516d

Contents?: true

Size: 801 Bytes

Versions: 9

Compression:

Stored size: 801 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) ? class_name.constantize : nil
      end.compact
    end

  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
hobo-1.3.0.pre24 lib/hobo/routes.rb
hobo-1.3.0.pre23 lib/hobo/routes.rb
hobo-1.3.0.pre22 lib/hobo/routes.rb
hobo-1.3.0.pre21 lib/hobo/routes.rb
hobo-1.3.0.pre20 lib/hobo/routes.rb
hobo-1.3.0.pre19 lib/hobo/routes.rb
hobo-1.3.0.pre18 lib/hobo/routes.rb
hobo-1.3.0.pre16 lib/hobo/routes.rb
hobo-1.3.0.pre15 lib/hobo/routes.rb