Sha256: 7ae71195a7d865af118acae4d48fe7c49dfbbf19d03a8e8375217c848683740a

Contents?: true

Size: 889 Bytes

Versions: 4

Compression:

Stored size: 889 Bytes

Contents

# frozen_string_literal: true
class Shoes
  # Backwards compatibility, kind of likely to be removed
  def self.inherited(base_class)
    base_class.send :include, URL # include is private, therefore send
  end

  module URL
    attr_accessor :app

    Shoes::App.subscribe_to_dsl_methods self

    def self.included(base_class)
      base_class.extend URLDefiner
    end

    def self.urls
      @urls ||= {}
    end
  end

  module URLDefiner
    def url(page, method)
      page = convert_page_to_regex(page)
      url_class = self

      Shoes::URL.urls[page] = proc do |app, arg|
        new_url_instance = url_class.new
        new_url_instance.app = app

        if arg
          new_url_instance.send(method, arg)
        else
          new_url_instance.send method
        end
      end
    end

    private

    def convert_page_to_regex(page)
      /^#{page}$/
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
shoes-core-4.0.0.pre12 lib/shoes/url.rb
shoes-core-4.0.0.pre11 lib/shoes/url.rb
shoes-core-4.0.0.pre10 lib/shoes/url.rb
shoes-core-4.0.0.pre9 lib/shoes/url.rb