evt-attribute 0.1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/attribute.rb +1 -0
- data/lib/attribute/define.rb +54 -0
- metadata +59 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 84e4750f8ee634fd0a4ce789d9d73066138c3e7a
|
4
|
+
data.tar.gz: ce38778fd644bfc3e32041b333255b312725db32
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8b85c0dc18f503d7ed9a2c0a0cc7f8310ae0becf8b459a8f471041e73a90b6596c555fd40edc188fd3c405982081b9b7200d5f35993d33300ac8acf43664a9c6
|
7
|
+
data.tar.gz: f02c277b54f14440ba4556ea4f30608cd1e008a722bc95bd9bc26e7c0cc5363b73f92b0f56f67795ae73bca23ead1a9fc39edd17ea6898652d5530fd75358abe
|
data/lib/attribute.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'attribute/define'
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Attribute
|
2
|
+
module Define
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def call(target_class, attr_name, visibility=nil, check: nil, &initialize_value)
|
6
|
+
visibility ||= :reader
|
7
|
+
|
8
|
+
if [:reader, :accessor].include? visibility
|
9
|
+
define_reader(target_class, attr_name, visibility, check, &initialize_value)
|
10
|
+
end
|
11
|
+
|
12
|
+
if [:writer, :accessor].include? visibility
|
13
|
+
define_writer(target_class, attr_name, visibility, check, &initialize_value)
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_name
|
17
|
+
end
|
18
|
+
class << self; alias :! :call; end # TODO: Remove deprecated actuator [Kelsey, Thu Oct 08 2015]
|
19
|
+
|
20
|
+
def define_reader(target_class, attr_name, visibility, check, &initialize_value)
|
21
|
+
attr_name = :"#{attr_name}" unless attr_name.is_a? Symbol
|
22
|
+
var_name = "@#{attr_name}"
|
23
|
+
target_class.send :define_method, attr_name do
|
24
|
+
val = instance_variable_get(var_name)
|
25
|
+
|
26
|
+
if val.nil?
|
27
|
+
if initialize_value
|
28
|
+
val = initialize_value.()
|
29
|
+
instance_variable_set var_name, val
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
if check
|
34
|
+
check.(val)
|
35
|
+
end
|
36
|
+
|
37
|
+
val
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def define_writer(target_class, attr_name, visibility, check, &initialize_value)
|
42
|
+
attr_name = :"#{attr_name}" unless attr_name.is_a? Symbol
|
43
|
+
writer_name = :"#{attr_name}="
|
44
|
+
var_name = "@#{attr_name}"
|
45
|
+
target_class.send :define_method, writer_name do |val|
|
46
|
+
if check
|
47
|
+
check.(val)
|
48
|
+
end
|
49
|
+
|
50
|
+
instance_variable_set var_name, val
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: evt-attribute
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- The Eventide Project
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ntl-test_bench
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: " "
|
28
|
+
email: opensource@eventide-project.org
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- lib/attribute.rb
|
34
|
+
- lib/attribute/define.rb
|
35
|
+
homepage: https://github.com/eventide-project/attribute
|
36
|
+
licenses:
|
37
|
+
- MIT
|
38
|
+
metadata: {}
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options: []
|
41
|
+
require_paths:
|
42
|
+
- lib
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.3.3
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
requirements: []
|
54
|
+
rubyforge_project:
|
55
|
+
rubygems_version: 2.5.2
|
56
|
+
signing_key:
|
57
|
+
specification_version: 4
|
58
|
+
summary: Define an attribute on a class using an imperative API
|
59
|
+
test_files: []
|