Sha256: 38a44a9f2d9684abef5f069072bf2891fd6d6f8c9c46800341bacb74877bbd1c

Contents?: true

Size: 724 Bytes

Versions: 4

Compression:

Stored size: 724 Bytes

Contents

module Nuklear
  module UI
    class Base
      include Nuklear::UI::Events
      include Nuklear::UI::Enableable

      def initialize(enabled: true)
        self.enabled = enabled
      end

      def dsl(&block)
        require 'nuklear/dsl'
        Nuklear::DSL.new(self, &block)
      end

      class << self
        attr_writer :dsl_method_name

        def dsl_method_name
          # Nukelar::UI::ColorPicker => 'color_picker'
          @dsl_method_name ||= name.split('::').last.gsub(/([A-Z])/) { |a| "_#{a.downcase}" }.sub(/^_/, '')
        end

        def descendants
          @descendants ||= []
        end

        def inherited(child)
          descendants << child
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nuklear-0.1.3 lib/nuklear/ui/base.rb
nuklear-0.1.2 lib/nuklear/ui/base.rb
nuklear-0.1.1 lib/nuklear/ui/base.rb
nuklear-0.1.0 lib/nuklear/ui/base.rb