Sha256: 6e5910697218b00f7b89af7771b04f2f2e2cb484dbbbaf5599731f95a7808d8c

Contents?: true

Size: 724 Bytes

Versions: 187

Compression:

Stored size: 724 Bytes

Contents

module Lalala::Core::ClassInheritableSetting

  extend ActiveSupport::Concern

  module ClassMethods
    def define_setting(name, options={})
      class_eval <<-RUBY, __FILE__, __LINE__ + 1

        class << self
          attr_writer #{name.inspect}
        end

        def self.#{name}
          if defined?(@#{name})
            @#{name}
          elsif superclass.respond_to?(#{name.inspect})
            superclass.#{name}
          else
            nil
          end
        end

        def #{name}
          if defined?(@#{name})
            @#{name}
          else
            self.class.#{name}
          end
        end

      RUBY

      instance_variable_set("@#{name}", options[:default])
    end
  end

end

Version data entries

187 entries across 187 versions & 1 rubygems

Version Path
lalala-4.1.0.dev.425 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.420 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.419 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.418 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.417 lib/lalala/core/class_inheritable_setting.rb
lalala-4.0.0.dev.416 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.415 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.414 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.413 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.412 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.411 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.410 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.409 lib/lalala/core/class_inheritable_setting.rb
lalala-4.0.0.dev.407 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.408 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.398 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.397 lib/lalala/core/class_inheritable_setting.rb
lalala-4.0.0.dev.396 lib/lalala/core/class_inheritable_setting.rb
lalala-4.0.0.dev.395 lib/lalala/core/class_inheritable_setting.rb
lalala-4.1.0.dev.394 lib/lalala/core/class_inheritable_setting.rb