Sha256: 98e36b602621179ffd7604e3e6e0610c433d614eff0f3b418255b7e6c9586fd4

Contents?: true

Size: 844 Bytes

Versions: 1

Compression:

Stored size: 844 Bytes

Contents

require_relative "routes_context"
require_relative "js_function_helper"

module AssetPipelineRoutes
  class RoutesHelper
    def initialize(routes, default_block = '{{\1}}')
      routes.each do |route|
        next if route.name.nil? # only handle named_routes

        self.class.instance_eval do
          define_method :"#{route.name}_path" do |id_replacement = default_block|
            proc { |route, mapping| build_url route, mapping }.curry[route].call id_replacement
          end

          define_method :"#{route.name}_path_method" do |style = :js|
            AssetPipelineRoutes::JsFunctionHelper::route_to_anonymous_function build_url(route, ':\1'), style
          end
        end
      end
    end

    def build_url route, mapping
      route.path.ast.to_s.gsub(/\(\.:\w+\)/,'').gsub(/:(\w+)/, mapping).to_s
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
asset_pipeline_routes-0.0.3 lib/asset_pipeline_routes/routes_helper.rb