Sha256: b0e1143d3e46a383a55c98b7f4f6ef6055e54253cb6ce59ac1321034526ea02d

Contents?: true

Size: 781 Bytes

Versions: 7

Compression:

Stored size: 781 Bytes

Contents

module Pakyow

  # Handles looking up paths for named routes and populating
  # the path with data.
  #
  class RouteLookup
    include Helpers

    def path(name, data = nil)
      route = get_named_route(name)
      data ? populate(route, data) : File.join('/', route[4])
    end

    def group(name)
      @group = name
      self
    end

    protected

    def get_named_route(name)
      if defined? @group
        Router.instance.route(name, @group)
      else
        Router.instance.route(name)
      end
    end

    def populate(route, data = {})
      vars  = route[1]

      split_path = Request.split_url(route[4])

      vars.each {|v|
        split_path[v[:url_position]] = data.delete(v[:var])
      }

      File.join('/', split_path.join('/'))
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
pakyow-core-0.11.3 pakyow-core/lib/pakyow/core/route_lookup.rb
pakyow-core-0.11.2 pakyow-core/lib/pakyow/core/route_lookup.rb
pakyow-core-0.11.1 pakyow-core/lib/pakyow/core/route_lookup.rb
pakyow-core-0.11.0 pakyow-core/lib/pakyow/core/route_lookup.rb
pakyow-core-0.10.2 pakyow-core/lib/core/route_lookup.rb
pakyow-core-0.10.1 pakyow-core/lib/core/route_lookup.rb
pakyow-core-0.10.0 pakyow-core/lib/core/route_lookup.rb