omega 1.0.0
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/omega.rb +4 -0
- data/lib/omega/descendants.rb +9 -0
- data/lib/omega/math.rb +7 -0
- data/lib/omega/memoize.rb +29 -0
- data/lib/omega/meta.rb +6 -0
- metadata +49 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3f1d688b94555b2803900676c622479138859691
|
4
|
+
data.tar.gz: 9a626a96365b8732700a791f70afb39c6a19f2e7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8d9b9cd568ff4392068eb4268e864dc8b540b22e878b5fc9b79b934d0c4f69c580fd8488d0fbe3c5477874c939dca6b922f79d63d5afcc32803a2cad37309ae4
|
7
|
+
data.tar.gz: a6bf605708ee998f654019f9d7343d6088c4e7eebb45e690e62e4ebd33a4bf1f50565f7b56bbe0c3f8248dc8e749fdf66b42e322ea2ee6186113881308168fd3
|
data/lib/omega.rb
ADDED
data/lib/omega/math.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
class Module
|
2
|
+
def memoize n, *arr
|
3
|
+
meta = (class << self; self; end)
|
4
|
+
([n] + arr).each do |m|
|
5
|
+
alias_method "memoized_#{m}", m
|
6
|
+
hash = Hash.new
|
7
|
+
define_method m do |*args|
|
8
|
+
if hash.include? args
|
9
|
+
hash[args]
|
10
|
+
else
|
11
|
+
v = hash[args] = method("memoized_#{m}".to_sym).call(*args)
|
12
|
+
v.freeze
|
13
|
+
v
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def cmemoize n, *m
|
20
|
+
meta = (class << self; self; end)
|
21
|
+
meta.memoize n, *m
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Let's make "main:Object" methods memoizable
|
26
|
+
def memoize n, *m
|
27
|
+
meta = (class << self; self; end)
|
28
|
+
meta.memoize n, *m
|
29
|
+
end
|
data/lib/omega/meta.rb
ADDED
metadata
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: omega
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nax
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-08-07 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: |
|
14
|
+
Omega is a powerful set of extensions to the basic ruby standard.
|
15
|
+
email: max.bacoux@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/omega.rb
|
21
|
+
- lib/omega/descendants.rb
|
22
|
+
- lib/omega/math.rb
|
23
|
+
- lib/omega/memoize.rb
|
24
|
+
- lib/omega/meta.rb
|
25
|
+
homepage: http://rubygems.org/gems/omega
|
26
|
+
licenses:
|
27
|
+
- MIT
|
28
|
+
metadata: {}
|
29
|
+
post_install_message:
|
30
|
+
rdoc_options: []
|
31
|
+
require_paths:
|
32
|
+
- lib
|
33
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
requirements: []
|
44
|
+
rubyforge_project:
|
45
|
+
rubygems_version: 2.2.2
|
46
|
+
signing_key:
|
47
|
+
specification_version: 4
|
48
|
+
summary: A collection of libraries and extensions to the standard.
|
49
|
+
test_files: []
|