rubyneat 0.3.5.alpha.6 → 0.4.0.alpha.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.irbrc +2 -0
- data/.ruby-version +1 -0
- data/.semver +3 -3
- data/Gemfile +7 -8
- data/Gemfile.lock +43 -42
- data/Gemfile.lock.orig +161 -0
- data/Gemfile.orig +54 -0
- data/README.md +35 -4
- data/Rakefile +4 -3
- data/lib/rubyneat.rb +4 -3
- data/lib/rubyneat/cli.rb +3 -1
- data/lib/rubyneat/cli/console.rb +18 -0
- data/lib/rubyneat/cli/main.rb +3 -5
- data/lib/rubyneat/cli/templates/generate/.irbrc.tt +3 -0
- data/lib/rubyneat/critter.rb +2 -2
- data/lib/rubyneat/default_neat.rb +1 -1
- data/lib/rubyneat/dsl.rb +13 -12
- data/lib/rubyneat/evaluator.rb +10 -6
- data/lib/rubyneat/evolver.rb +2 -1
- data/lib/rubyneat/expressor.rb +1 -1
- data/lib/rubyneat/neuron.rb +1 -1
- data/lib/rubyneat/population.rb +12 -45
- data/lib/rubyneat/reporting.rb +113 -0
- data/lib/rubyneat/rubyneat.rb +189 -31
- data/rubyneat.gemspec +21 -4
- metadata +53 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09764c7a69d3b22088cfe36ea527462a810ce09b
|
4
|
+
data.tar.gz: 93481f0bd61cb48c6c06d41659d0bf0f204203ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a7d8f0e1793fc5f4e0fd1398a7bd376c2e6655e2aa60b7c1cc577ae32e8f78281a8aa5c347b19a103fe0275c5494272233c9de19543a8167d1687c5e2e34419
|
7
|
+
data.tar.gz: 384d23e865a868d166a56ce8ff21c1e1456d980fff8dde102925f4718ad1ed84f5f6f1180168d1045118ca6068f4a2c69503e6bc67eea612a5ede01c7dc52113
|
data/.irbrc
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.2
|
data/.semver
CHANGED
data/Gemfile
CHANGED
@@ -2,10 +2,6 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
#gemspec
|
4
4
|
|
5
|
-
ruby '2.1.1'
|
6
|
-
|
7
|
-
#gem 'mongo', '~> 1', require: false
|
8
|
-
#gem 'bson_ext', '~> 1', require: false
|
9
5
|
gem 'distribution', '~> 0'
|
10
6
|
|
11
7
|
#TODO: Check out this for a repacement of of statistics2
|
@@ -18,16 +14,19 @@ gem 'thor', '~> 0'
|
|
18
14
|
gem 'awesome_print', '~> 1'
|
19
15
|
gem 'deep_dive', '~> 0'
|
20
16
|
|
17
|
+
# So our console can have name completion
|
18
|
+
gem 'bond', '~> 0.5'
|
19
|
+
gem 'rb-readline', '~> 0.5'
|
20
|
+
gem 'queue_ding', '>= 0'
|
21
|
+
|
21
22
|
group :development do
|
22
23
|
gem 'rspec', '~> 2'
|
23
24
|
gem 'yard', '~> 0'
|
24
25
|
gem 'guard', '~> 2'
|
25
26
|
gem 'guard-rspec', '~> 4'
|
26
27
|
gem 'semver', '~> 1'
|
27
|
-
gem
|
28
|
-
gem
|
29
|
-
#gem 'debugger'
|
30
|
-
#gem 'ruby-debug-ide', '~> 0'
|
28
|
+
gem 'jeweler', '~> 2'
|
29
|
+
gem 'simplecov', '~> 0'
|
31
30
|
end
|
32
31
|
|
33
32
|
#======================================================
|
data/Gemfile.lock
CHANGED
@@ -4,47 +4,45 @@ GEM
|
|
4
4
|
addressable (2.3.6)
|
5
5
|
aquarium (0.5.1)
|
6
6
|
awesome_print (1.2.0)
|
7
|
+
bond (0.5.1)
|
7
8
|
builder (3.2.2)
|
8
9
|
celluloid (0.15.2)
|
9
10
|
timers (~> 1.1.0)
|
10
|
-
celluloid-io (0.15.0)
|
11
|
-
celluloid (>= 0.15.0)
|
12
|
-
nio4r (>= 0.5.0)
|
13
11
|
coderay (1.1.0)
|
14
12
|
debase (0.0.9)
|
15
13
|
debugger-ruby_core_source
|
16
|
-
debugger-ruby_core_source (1.3.
|
17
|
-
deep_dive (0.1
|
14
|
+
debugger-ruby_core_source (1.3.5)
|
15
|
+
deep_dive (0.2.1)
|
18
16
|
debase
|
19
17
|
descendants_tracker (0.0.4)
|
20
18
|
thread_safe (~> 0.3, >= 0.3.1)
|
21
19
|
diff-lcs (1.2.5)
|
22
20
|
distribution (0.7.0)
|
23
|
-
docile (1.1.
|
21
|
+
docile (1.1.5)
|
24
22
|
faraday (0.9.0)
|
25
23
|
multipart-post (>= 1.2, < 3)
|
26
24
|
ffi (1.9.3)
|
27
|
-
formatador (0.2.
|
28
|
-
git (1.2.
|
29
|
-
github_api (0.
|
25
|
+
formatador (0.2.5)
|
26
|
+
git (1.2.8)
|
27
|
+
github_api (0.12.0)
|
30
28
|
addressable (~> 2.3)
|
31
|
-
descendants_tracker (~> 0.0.
|
29
|
+
descendants_tracker (~> 0.0.4)
|
32
30
|
faraday (~> 0.8, < 0.10)
|
33
|
-
hashie (>=
|
31
|
+
hashie (>= 3.2)
|
34
32
|
multi_json (>= 1.7.5, < 2.0)
|
35
|
-
nokogiri (~> 1.6.
|
33
|
+
nokogiri (~> 1.6.3)
|
36
34
|
oauth2
|
37
35
|
gosu (0.7.50)
|
38
|
-
guard (2.6.
|
36
|
+
guard (2.6.1)
|
39
37
|
formatador (>= 0.2.4)
|
40
38
|
listen (~> 2.7)
|
41
39
|
lumberjack (~> 1.0)
|
42
40
|
pry (>= 0.9.12)
|
43
41
|
thor (>= 0.18.1)
|
44
|
-
guard-rspec (4.
|
42
|
+
guard-rspec (4.3.1)
|
45
43
|
guard (~> 2.1)
|
46
44
|
rspec (>= 2.14, < 4.0)
|
47
|
-
hashie (2.
|
45
|
+
hashie (3.2.0)
|
48
46
|
highline (1.6.21)
|
49
47
|
jeweler (2.0.1)
|
50
48
|
builder
|
@@ -56,58 +54,58 @@ GEM
|
|
56
54
|
rake
|
57
55
|
rdoc
|
58
56
|
json (1.8.1)
|
59
|
-
jwt (0.
|
60
|
-
|
61
|
-
listen (2.7.1)
|
57
|
+
jwt (1.0.0)
|
58
|
+
listen (2.7.9)
|
62
59
|
celluloid (>= 0.15.2)
|
63
|
-
celluloid-io (>= 0.15.0)
|
64
60
|
rb-fsevent (>= 0.9.3)
|
65
61
|
rb-inotify (>= 0.9)
|
66
|
-
lumberjack (1.0.
|
62
|
+
lumberjack (1.0.9)
|
67
63
|
method_source (0.8.2)
|
68
|
-
mini_portile (0.
|
69
|
-
multi_json (1.
|
64
|
+
mini_portile (0.6.0)
|
65
|
+
multi_json (1.10.1)
|
70
66
|
multi_xml (0.5.5)
|
71
67
|
multipart-post (2.0.0)
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
oauth2 (0.9.3)
|
68
|
+
nokogiri (1.6.3.1)
|
69
|
+
mini_portile (= 0.6.0)
|
70
|
+
oauth2 (1.0.0)
|
76
71
|
faraday (>= 0.8, < 0.10)
|
77
|
-
jwt (~>
|
72
|
+
jwt (~> 1.0)
|
78
73
|
multi_json (~> 1.3)
|
79
74
|
multi_xml (~> 0.5)
|
80
75
|
rack (~> 1.2)
|
81
|
-
pry (0.
|
82
|
-
coderay (~> 1.0)
|
83
|
-
method_source (~> 0.8)
|
76
|
+
pry (0.10.0)
|
77
|
+
coderay (~> 1.1.0)
|
78
|
+
method_source (~> 0.8.1)
|
84
79
|
slop (~> 3.4)
|
80
|
+
queue_ding (0.1.0)
|
81
|
+
aquarium (~> 0)
|
85
82
|
rack (1.5.2)
|
86
|
-
rake (10.3.
|
83
|
+
rake (10.3.2)
|
87
84
|
rb-fsevent (0.9.4)
|
88
|
-
rb-inotify (0.9.
|
85
|
+
rb-inotify (0.9.5)
|
89
86
|
ffi (>= 0.5.0)
|
87
|
+
rb-readline (0.5.1)
|
90
88
|
rdoc (4.1.1)
|
91
89
|
json (~> 1.4)
|
92
|
-
rspec (2.
|
93
|
-
rspec-core (~> 2.
|
94
|
-
rspec-expectations (~> 2.
|
95
|
-
rspec-mocks (~> 2.
|
96
|
-
rspec-core (2.
|
97
|
-
rspec-expectations (2.
|
90
|
+
rspec (2.99.0)
|
91
|
+
rspec-core (~> 2.99.0)
|
92
|
+
rspec-expectations (~> 2.99.0)
|
93
|
+
rspec-mocks (~> 2.99.0)
|
94
|
+
rspec-core (2.99.1)
|
95
|
+
rspec-expectations (2.99.2)
|
98
96
|
diff-lcs (>= 1.1.3, < 2.0)
|
99
|
-
rspec-mocks (2.
|
97
|
+
rspec-mocks (2.99.2)
|
100
98
|
rubyvis (0.6.0)
|
101
99
|
semver (1.0.1)
|
102
|
-
simplecov (0.
|
100
|
+
simplecov (0.9.0)
|
103
101
|
docile (~> 1.1.0)
|
104
102
|
multi_json
|
105
103
|
simplecov-html (~> 0.8.0)
|
106
104
|
simplecov-html (0.8.0)
|
107
|
-
slop (3.
|
105
|
+
slop (3.6.0)
|
108
106
|
statistics2 (0.54)
|
109
107
|
thor (0.19.1)
|
110
|
-
thread_safe (0.3.
|
108
|
+
thread_safe (0.3.4)
|
111
109
|
timers (1.1.0)
|
112
110
|
yard (0.8.7.4)
|
113
111
|
|
@@ -117,6 +115,7 @@ PLATFORMS
|
|
117
115
|
DEPENDENCIES
|
118
116
|
aquarium (~> 0)
|
119
117
|
awesome_print (~> 1)
|
118
|
+
bond (~> 0.5)
|
120
119
|
debase (~> 0)
|
121
120
|
deep_dive (~> 0)
|
122
121
|
distribution (~> 0)
|
@@ -124,6 +123,8 @@ DEPENDENCIES
|
|
124
123
|
guard (~> 2)
|
125
124
|
guard-rspec (~> 4)
|
126
125
|
jeweler (~> 2)
|
126
|
+
queue_ding
|
127
|
+
rb-readline (~> 0.5)
|
127
128
|
rspec (~> 2)
|
128
129
|
rubyvis (~> 0)
|
129
130
|
semver (~> 1)
|
data/Gemfile.lock.orig
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
addressable (2.3.6)
|
5
|
+
aquarium (0.5.1)
|
6
|
+
awesome_print (1.2.0)
|
7
|
+
bond (0.5.1)
|
8
|
+
builder (3.2.2)
|
9
|
+
celluloid (0.15.2)
|
10
|
+
timers (~> 1.1.0)
|
11
|
+
coderay (1.1.0)
|
12
|
+
debase (0.0.9)
|
13
|
+
debugger-ruby_core_source
|
14
|
+
debugger-ruby_core_source (1.3.5)
|
15
|
+
<<<<<<< HEAD
|
16
|
+
deep_dive (0.1.0)
|
17
|
+
=======
|
18
|
+
deep_dive (0.2.1)
|
19
|
+
>>>>>>> devready
|
20
|
+
debase
|
21
|
+
descendants_tracker (0.0.4)
|
22
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
23
|
+
diff-lcs (1.2.5)
|
24
|
+
distribution (0.7.0)
|
25
|
+
docile (1.1.5)
|
26
|
+
faraday (0.9.0)
|
27
|
+
multipart-post (>= 1.2, < 3)
|
28
|
+
ffi (1.9.3)
|
29
|
+
formatador (0.2.5)
|
30
|
+
<<<<<<< HEAD
|
31
|
+
git (1.2.6)
|
32
|
+
github_api (0.11.3)
|
33
|
+
=======
|
34
|
+
git (1.2.8)
|
35
|
+
github_api (0.12.0)
|
36
|
+
>>>>>>> devready
|
37
|
+
addressable (~> 2.3)
|
38
|
+
descendants_tracker (~> 0.0.4)
|
39
|
+
faraday (~> 0.8, < 0.10)
|
40
|
+
hashie (>= 3.2)
|
41
|
+
multi_json (>= 1.7.5, < 2.0)
|
42
|
+
nokogiri (~> 1.6.3)
|
43
|
+
oauth2
|
44
|
+
gosu (0.7.50)
|
45
|
+
guard (2.6.1)
|
46
|
+
formatador (>= 0.2.4)
|
47
|
+
listen (~> 2.7)
|
48
|
+
lumberjack (~> 1.0)
|
49
|
+
pry (>= 0.9.12)
|
50
|
+
thor (>= 0.18.1)
|
51
|
+
<<<<<<< HEAD
|
52
|
+
guard-rspec (4.2.9)
|
53
|
+
=======
|
54
|
+
guard-rspec (4.3.1)
|
55
|
+
>>>>>>> devready
|
56
|
+
guard (~> 2.1)
|
57
|
+
rspec (>= 2.14, < 4.0)
|
58
|
+
hashie (3.2.0)
|
59
|
+
highline (1.6.21)
|
60
|
+
jeweler (2.0.1)
|
61
|
+
builder
|
62
|
+
bundler (>= 1.0)
|
63
|
+
git (>= 1.2.5)
|
64
|
+
github_api
|
65
|
+
highline (>= 1.6.15)
|
66
|
+
nokogiri (>= 1.5.10)
|
67
|
+
rake
|
68
|
+
rdoc
|
69
|
+
json (1.8.1)
|
70
|
+
jwt (1.0.0)
|
71
|
+
<<<<<<< HEAD
|
72
|
+
listen (2.7.5)
|
73
|
+
=======
|
74
|
+
listen (2.7.9)
|
75
|
+
>>>>>>> devready
|
76
|
+
celluloid (>= 0.15.2)
|
77
|
+
rb-fsevent (>= 0.9.3)
|
78
|
+
rb-inotify (>= 0.9)
|
79
|
+
lumberjack (1.0.9)
|
80
|
+
method_source (0.8.2)
|
81
|
+
mini_portile (0.6.0)
|
82
|
+
multi_json (1.10.1)
|
83
|
+
multi_xml (0.5.5)
|
84
|
+
multipart-post (2.0.0)
|
85
|
+
<<<<<<< HEAD
|
86
|
+
nokogiri (1.6.2.1)
|
87
|
+
mini_portile (= 0.6.0)
|
88
|
+
oauth2 (0.9.4)
|
89
|
+
=======
|
90
|
+
nokogiri (1.6.3.1)
|
91
|
+
mini_portile (= 0.6.0)
|
92
|
+
oauth2 (1.0.0)
|
93
|
+
>>>>>>> devready
|
94
|
+
faraday (>= 0.8, < 0.10)
|
95
|
+
jwt (~> 1.0)
|
96
|
+
multi_json (~> 1.3)
|
97
|
+
multi_xml (~> 0.5)
|
98
|
+
rack (~> 1.2)
|
99
|
+
pry (0.10.0)
|
100
|
+
coderay (~> 1.1.0)
|
101
|
+
method_source (~> 0.8.1)
|
102
|
+
slop (~> 3.4)
|
103
|
+
queue_ding (0.1.0)
|
104
|
+
aquarium (~> 0)
|
105
|
+
rack (1.5.2)
|
106
|
+
rake (10.3.2)
|
107
|
+
rb-fsevent (0.9.4)
|
108
|
+
<<<<<<< HEAD
|
109
|
+
rb-inotify (0.9.4)
|
110
|
+
=======
|
111
|
+
rb-inotify (0.9.5)
|
112
|
+
>>>>>>> devready
|
113
|
+
ffi (>= 0.5.0)
|
114
|
+
rb-readline (0.5.1)
|
115
|
+
rdoc (4.1.1)
|
116
|
+
json (~> 1.4)
|
117
|
+
rspec (2.99.0)
|
118
|
+
rspec-core (~> 2.99.0)
|
119
|
+
rspec-expectations (~> 2.99.0)
|
120
|
+
rspec-mocks (~> 2.99.0)
|
121
|
+
rspec-core (2.99.1)
|
122
|
+
rspec-expectations (2.99.2)
|
123
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
124
|
+
rspec-mocks (2.99.2)
|
125
|
+
rubyvis (0.6.0)
|
126
|
+
semver (1.0.1)
|
127
|
+
simplecov (0.9.0)
|
128
|
+
docile (~> 1.1.0)
|
129
|
+
multi_json
|
130
|
+
simplecov-html (~> 0.8.0)
|
131
|
+
simplecov-html (0.8.0)
|
132
|
+
slop (3.6.0)
|
133
|
+
statistics2 (0.54)
|
134
|
+
thor (0.19.1)
|
135
|
+
thread_safe (0.3.4)
|
136
|
+
timers (1.1.0)
|
137
|
+
yard (0.8.7.4)
|
138
|
+
|
139
|
+
PLATFORMS
|
140
|
+
ruby
|
141
|
+
|
142
|
+
DEPENDENCIES
|
143
|
+
aquarium (~> 0)
|
144
|
+
awesome_print (~> 1)
|
145
|
+
bond (~> 0.5)
|
146
|
+
debase (~> 0)
|
147
|
+
deep_dive (~> 0)
|
148
|
+
distribution (~> 0)
|
149
|
+
gosu (~> 0)
|
150
|
+
guard (~> 2)
|
151
|
+
guard-rspec (~> 4)
|
152
|
+
jeweler (~> 2)
|
153
|
+
queue_ding
|
154
|
+
rb-readline (~> 0.5)
|
155
|
+
rspec (~> 2)
|
156
|
+
rubyvis (~> 0)
|
157
|
+
semver (~> 1)
|
158
|
+
simplecov (~> 0)
|
159
|
+
statistics2 (~> 0)
|
160
|
+
thor (~> 0)
|
161
|
+
yard (~> 0)
|
data/Gemfile.orig
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
#gemspec
|
4
|
+
|
5
|
+
<<<<<<< HEAD
|
6
|
+
ruby '2.1.2'
|
7
|
+
|
8
|
+
#gem 'mongo', '~> 1', require: false
|
9
|
+
#gem 'bson_ext', '~> 1', require: false
|
10
|
+
=======
|
11
|
+
>>>>>>> devready
|
12
|
+
gem 'distribution', '~> 0'
|
13
|
+
|
14
|
+
#TODO: Check out this for a repacement of of statistics2
|
15
|
+
#TODO: https://github.com/thirtysixthspan/descriptive_statistics
|
16
|
+
gem 'statistics2', '~> 0'
|
17
|
+
|
18
|
+
gem 'debase', '~> 0'
|
19
|
+
gem 'aquarium', '~> 0'
|
20
|
+
gem 'thor', '~> 0'
|
21
|
+
gem 'awesome_print', '~> 1'
|
22
|
+
gem 'deep_dive', '~> 0'
|
23
|
+
|
24
|
+
# So our console can have name completion
|
25
|
+
gem 'bond', '~> 0.5'
|
26
|
+
gem 'rb-readline', '~> 0.5'
|
27
|
+
gem 'queue_ding', '>= 0'
|
28
|
+
|
29
|
+
group :development do
|
30
|
+
gem 'rspec', '~> 2'
|
31
|
+
gem 'yard', '~> 0'
|
32
|
+
gem 'guard', '~> 2'
|
33
|
+
gem 'guard-rspec', '~> 4'
|
34
|
+
gem 'semver', '~> 1'
|
35
|
+
<<<<<<< HEAD
|
36
|
+
gem "jeweler", "~> 2"
|
37
|
+
gem "simplecov", '~> 0'
|
38
|
+
#gem 'debugger'
|
39
|
+
#gem 'ruby-debug-ide', '~> 1'
|
40
|
+
=======
|
41
|
+
gem 'jeweler', '~> 2'
|
42
|
+
gem 'simplecov', '~> 0'
|
43
|
+
>>>>>>> devready
|
44
|
+
end
|
45
|
+
|
46
|
+
#======================================================
|
47
|
+
#= Ancillary libraries
|
48
|
+
|
49
|
+
# For demo purposes, we include the gosu library, but
|
50
|
+
# don't want this to be part of the mainstream.
|
51
|
+
gem 'gosu', '~> 0', require: false
|
52
|
+
|
53
|
+
# So we can generate some nice graphics.
|
54
|
+
gem 'rubyvis', '~> 0', require: false
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
RubyNEAT -- Neural Evolution of Augmenting Topologies
|
2
|
+
=====================================================
|
2
3
|
|
3
4
|
For the latest docs, please see http://rubyneat.com
|
4
5
|
|
@@ -7,7 +8,8 @@ expected to be a full blown pure Ruby implementation of the NEAT algorithm by Ke
|
|
7
8
|
|
8
9
|
http://www.cs.ucf.edu/~kstanley/
|
9
10
|
|
10
|
-
|
11
|
+
Quick and Dirty Docs
|
12
|
+
--------------------
|
11
13
|
|
12
14
|
There is an (extreme) alpha RubyGEM. Just do:
|
13
15
|
|
@@ -30,7 +32,18 @@ and a project directory will be created. Cd into that directory, and type:
|
|
30
32
|
and a scaffold Neater will be generated. Note that this generator is still
|
31
33
|
in alpha, but improvements are coming shortly.
|
32
34
|
|
33
|
-
|
35
|
+
Examples
|
36
|
+
--------
|
37
|
+
|
38
|
+
For some examples, clone or fork the following:
|
39
|
+
|
40
|
+
https://github.com/flajann2/rubyneat_examples
|
41
|
+
|
42
|
+
Feel free to add your own and do pull requests so that
|
43
|
+
we can have more examples of using RubyNEAT.
|
44
|
+
|
45
|
+
Also Note
|
46
|
+
---------
|
34
47
|
|
35
48
|
For now, see
|
36
49
|
|
@@ -41,7 +54,25 @@ gets out of alpha. There are a couple of example Neaters there (one of which is
|
|
41
54
|
still in development). Basic, but will be a good example of how to implement your own
|
42
55
|
Neater. Eventually all will be fully documented.
|
43
56
|
|
44
|
-
|
57
|
+
Release Notes
|
58
|
+
-------------
|
59
|
+
* `0.3.5.alpha.7`
|
60
|
+
|
61
|
+
Console made functional.
|
62
|
+
|
63
|
+
* `0.4.0.alpha.0`
|
64
|
+
|
65
|
+
Added a pop parameter to the report hook function. All example
|
66
|
+
code in rubyneat_examples updated. You will need to add the additional
|
67
|
+
parameter to your Neaters on your report hooks.
|
68
|
+
|
69
|
+
Also, added stronger support for plugins. In particular, an attr_neat
|
70
|
+
attribute processor was added to NeatOb, to support default settings
|
71
|
+
as well as hooks. Now, all plugins need to do is to hook into these
|
72
|
+
hook functions to get notifications.
|
73
|
+
|
74
|
+
Copyright Notice
|
75
|
+
----------------
|
45
76
|
|
46
77
|
This code is released under the MIT license:
|
47
78
|
|