fn_space 1.0.0 → 1.0.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 +4 -4
- data/README.md +3 -3
- data/lib/fn_space/definable.rb +8 -0
- data/lib/fn_space/import.rb +9 -6
- data/lib/fn_space/utils.rb +9 -7
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4d7526e1282e51b6fc248eaa124bf4d2dacd5f8
|
4
|
+
data.tar.gz: 813b4dad11b9fe018c96041dc342eef3d19c0c31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c997bcce83d4cd44d6e5c9bfa7f25d1ac1ec1731c18d8f362098da8140c04ab08178a02da863caf3da18e0b612f4e440f0770c2438bafcdb1a42c58908e5790e
|
7
|
+
data.tar.gz: b9b79e75268bf8f6c0ad58b508bd3cbec28876fb9e3a2fee75ab14bc8cf7302f9124c1b1fb7f9a22b29e2f568b2641c8055125f738983f0e383a978e7f91e79e
|
data/README.md
CHANGED
@@ -10,7 +10,7 @@ methods to enable functional paradigms.
|
|
10
10
|
# my_awsome_project/formula.rb
|
11
11
|
require 'fn_space'
|
12
12
|
|
13
|
-
fn_space(
|
13
|
+
fn_space('Formula') do |import, exports|
|
14
14
|
pi = 3.14
|
15
15
|
exports.circ = ->(r) { 2 * pi * r }
|
16
16
|
exports.area = ->(r) { pi * r ** 2 }
|
@@ -43,8 +43,8 @@ be used to store any properties added to the `exports` OpenStruct.
|
|
43
43
|
### `import.(*names).from Source`
|
44
44
|
|
45
45
|
`import.()` can be used to import properties from a source. If only a single
|
46
|
-
property is requested then only a single value will be
|
47
|
-
array will
|
46
|
+
property is requested then only a single value will be returned, otherwise an
|
47
|
+
array of values will.
|
48
48
|
|
49
49
|
``` ruby
|
50
50
|
MagicNumbers = Struct.new(:a, :b, :c).new(5, 7, 19)
|
data/lib/fn_space/import.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require_relative 'utils'
|
2
|
+
require_relative 'definable'
|
3
|
+
|
2
4
|
chain = FnSpace::Utils.chain
|
3
5
|
mod = FnSpace::Utils.mod
|
4
6
|
|
@@ -7,14 +9,15 @@ map = ->(array) { ->(map_fn) { array.map(&map_fn) } }
|
|
7
9
|
send_map_fn = ->(obj) { ->(name) { obj.send(name) } }
|
8
10
|
method_map_fn = ->(obj) { ->(name) { obj.method(name) } }
|
9
11
|
|
10
|
-
importer =
|
11
|
-
|
12
|
-
|
12
|
+
importer = Class.new
|
13
|
+
.extend(FnSpace::Definable)
|
14
|
+
.define(:initialize) { |names, map_fn| @names = names; @map_fn = map_fn }
|
15
|
+
.define(:from) do |source|
|
16
|
+
chain.(source) >> @map_fn >> map.(@names) >> first_or_all | :value
|
13
17
|
end
|
14
|
-
end
|
15
18
|
|
16
|
-
import = ->(*names) { importer.(names, send_map_fn) }
|
17
|
-
import_methods = ->(*names) { importer.(names, method_map_fn) }
|
19
|
+
import = ->(*names) { importer.new(names, send_map_fn) }
|
20
|
+
import_methods = ->(*names) { importer.new(names, method_map_fn) }
|
18
21
|
|
19
22
|
FnSpace::Import = mod.()
|
20
23
|
.assign(:call, &import)
|
data/lib/fn_space/utils.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
require_relative 'assignable'
|
2
|
+
require_relative 'definable'
|
2
3
|
|
3
4
|
mod = ->(&b) { Module.new(&b).extend(FnSpace::Assignable) }
|
4
5
|
struct = ->(hash) { hash.reduce(mod.()) { |obj, (k, v)| obj.assign(k){v} } }
|
5
6
|
apply_send = ->(method, *args) { ->(obj) { obj.send(method, *args) } }
|
6
7
|
|
7
|
-
chain =
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
chain = Class.new
|
9
|
+
.extend(FnSpace::Definable)
|
10
|
+
.define(:initialize) { |value| @value = value }
|
11
|
+
.define(:>>) { |fn| @value = fn.to_proc.(value); self }
|
12
|
+
.define(:<<) { |fn| fn.to_proc.(value); self }
|
13
|
+
.define(:|) { |fn| fn.to_proc.(self) }
|
14
|
+
.define(:value) { @value }
|
15
|
+
.method(:new)
|
14
16
|
|
15
17
|
FnSpace::Utils = struct.(mod: mod, struct: struct, apply_send: apply_send, chain: chain)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fn_space
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max White
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -40,6 +40,7 @@ files:
|
|
40
40
|
- README.md
|
41
41
|
- lib/fn_space.rb
|
42
42
|
- lib/fn_space/assignable.rb
|
43
|
+
- lib/fn_space/definable.rb
|
43
44
|
- lib/fn_space/export.rb
|
44
45
|
- lib/fn_space/import.rb
|
45
46
|
- lib/fn_space/utils.rb
|