Sha256: 8c3d7fe1a3fb9a8ac15648341513e405a21810928186111600bb0198bddc3112

Contents?: true

Size: 717 Bytes

Versions: 6

Compression:

Stored size: 717 Bytes

Contents

class Shoes
  class Widget
    def self.inherited klass, &blk
      m = klass.to_s[/(^|::)(\w+)$/, 2].
              gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
              gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase
      Shoes::App.class_eval do
        define_method m do |*args, &blk|
          klass.send :class_variable_set, :@@__app__, self
          parent = cslot
          klass.new(*args, &blk).tap do |s|
            s.define_singleton_method(:parent){parent}
          end
        end
      end
      klass.class_eval do
        define_method :method_missing do |*args, &blk|
          klass.send(:class_variable_get, :@@__app__).send *args, &blk
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
purple_shoes-0.7.166 lib/shoes/widget.rb
purple_shoes-0.6.153 lib/shoes/widget.rb
purple_shoes-0.5.149 lib/shoes/widget.rb
purple_shoes-0.0.126 lib/shoes/widget.rb
purple_shoes-0.0.115 lib/shoes/widget.rb
purple_shoes-0.0.101 lib/shoes/widget.rb