lib/fattr.rb in fattr-2.3.0 vs lib/fattr.rb in fattr-2.4.0
- old
+ new
@@ -1,12 +1,9 @@
module Fattr
- Fattr::Version = '2.3.0' unless Fattr.const_defined?(:Version)
- def Fattr.version() Fattr::Version end
+ require_relative 'fattr/_lib.rb'
- def Fattr.description
- 'a "fatter attr" for ruby'
- end
+ SEMAPHORE = Mutex.new
class List < ::Array
attr_accessor :object
def initialize(*args, &block)
@@ -86,25 +83,25 @@
names.each do |name|
names_and_configs[name] = config
end
end
- initializers = __fattrs__.initializers
+ #initializers = __fattrs__.initializers
- names_and_configs.each do |name, config|
+ names_and_configs.each do |name, _config|
raise(NameError, "bad instance variable name '@#{ name }'") if("@#{ name }" =~ %r/[!?=]$/o)
name = name.to_s
default = nil
- default = config[:default] if config.has_key?(:default)
- default = config['default'] if config.has_key?('default')
+ default = _config[:default] if _config.has_key?(:default)
+ default = _config['default'] if _config.has_key?('default')
inheritable = false
if Module===self
- inheritable = config[:inheritable] if config.has_key?(:inheritable)
- inheritable = config['inheritable'] if config.has_key?('inheritable')
+ inheritable = _config[:inheritable] if _config.has_key?(:inheritable)
+ inheritable = _config['inheritable'] if _config.has_key?('inheritable')
end
initialize = (
if inheritable
lambda do |*ignored|
@@ -123,11 +120,11 @@
initializer = lambda do |this|
Object.instance_method('instance_eval').bind(this).call(&initialize)
end
- initializer_id = initializer.object_id
+ #initializer_id = initializer.object_id
__fattrs__.initializers[name] = initializer
compile = lambda do |code|
begin
@@ -149,9 +146,10 @@
# getter, providing a value or block causes it to acts as setter
code = <<-code
def #{ name }(*value, &block)
value.unshift block if block
return self.send('#{ name }=', value.first) unless value.empty?
+ #SEMAPHORE.synchronize{ #{ name }! unless defined? @#{ name } }
#{ name }! unless defined? @#{ name }
@#{ name }
end
code
compile[code]