lab42_console 0.0.1 → 0.2.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 +5 -5
- data/README.md +2 -2
- data/lib/lab42/console.rb +15 -14
- data/lib/lab42/console/enum.rb +24 -0
- data/lib/lab42/console/runner.rb +62 -0
- data/lib/lab42/console/version.rb +1 -1
- metadata +10 -47
- data/lib/function.rb +0 -0
- data/lib/lab42/console/fn.rb +0 -21
- data/lib/lab42/console/h.rb +0 -36
- data/lib/lab42/console/intrusive.rb +0 -43
- data/lib/lab42/console/kwd.rb +0 -52
- data/lib/lab42/console/shortcut.rb +0 -9
- data/lib/lab42/console/tools.rb +0 -37
- data/lib/lab42/console/tools/forward_to_new_instance.rb +0 -14
- data/lib/lab42/functor.rb +0 -23
- data/lib/lab42/lazy.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b6f95877f5a0906e4be07fcae52a0e773c286eeb2103af22bbf0d380127073e6
|
4
|
+
data.tar.gz: ef58b9bcaa9ba85c03b5fc96b623b35c809aaaccb5bb6eae8aae08b109a0e97e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9ecc765cbe017dd929d2a61d0572bac1a11013f330a6e5510c46b9818889c4430ba90923b5571964dd68ce6ae8f979e0a795249d7beaadcc8288ccfc2789ed3
|
7
|
+
data.tar.gz: e2f7369b408fca4207d7f2c2666cd3443b9f465d5be55aba942a39a876acaa58419f5294289ee1343ceb295381057da187b19b629795272ba32c0843c2260703
|
data/README.md
CHANGED
data/lib/lab42/console.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
|
-
require_relative 'console/h'
|
2
|
-
require_relative 'console/intrusive'
|
3
|
-
require_relative 'console/fn'
|
4
|
-
require_relative 'console/kwd'
|
5
|
-
require_relative 'console/shortcut'
|
1
|
+
# require_relative 'console/h'
|
2
|
+
# require_relative 'console/intrusive'
|
3
|
+
# require_relative 'console/fn'
|
4
|
+
# require_relative 'console/kwd'
|
5
|
+
# require_relative 'console/shortcut'
|
6
6
|
|
7
|
-
require_relative 'lazy'
|
7
|
+
# require_relative 'lazy'
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
def h; H end
|
13
|
-
end
|
9
|
+
require_relative "console/enum"
|
10
|
+
module Enumerable
|
11
|
+
extend Lab42::Console::Enum
|
14
12
|
end
|
15
|
-
|
16
|
-
|
17
|
-
include Lab42::Console::Shortcut
|
13
|
+
class Array
|
14
|
+
include Lab42::Console::Enum
|
18
15
|
end
|
16
|
+
|
17
|
+
# class Object
|
18
|
+
# include Lab42::Console::Shortcut
|
19
|
+
# end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative 'runner'
|
2
|
+
module Lab42
|
3
|
+
class Console
|
4
|
+
module Enum
|
5
|
+
def by(*args)
|
6
|
+
Lab42::Console::Runner.new(by: args, method: nil, subject: self)
|
7
|
+
end
|
8
|
+
def fnd(*args)
|
9
|
+
if args.size.zero?
|
10
|
+
Lab42::Console::Runner.new(method: :find, subject: self)
|
11
|
+
else
|
12
|
+
Lab42::Console::Runner.new(*args, method: :find, subject: self).run
|
13
|
+
end
|
14
|
+
end
|
15
|
+
def sel(*args)
|
16
|
+
if args.size.zero?
|
17
|
+
Lab42::Console::Runner.new(method: :filter, subject: self)
|
18
|
+
else
|
19
|
+
Lab42::Console::Runner.new(*args, method: :filter, subject: self).run
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Lab42
|
2
|
+
class Console
|
3
|
+
class Runner
|
4
|
+
|
5
|
+
attr_reader :filter, :method, :subject
|
6
|
+
|
7
|
+
def fnd(*args)
|
8
|
+
@method = :find
|
9
|
+
@filter = _make_filter(*args)
|
10
|
+
run
|
11
|
+
end
|
12
|
+
|
13
|
+
def run
|
14
|
+
subject
|
15
|
+
.send(method, &filter)
|
16
|
+
end
|
17
|
+
|
18
|
+
def sel(*args)
|
19
|
+
@method = :filter
|
20
|
+
@filter = _make_filter(*args)
|
21
|
+
run
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def initialize(*args, by: [], method:, subject:)
|
28
|
+
@args = args
|
29
|
+
@by = by
|
30
|
+
@id = args.first
|
31
|
+
@method = method
|
32
|
+
@subject = subject
|
33
|
+
@filter = _default_filter
|
34
|
+
_init_by(by) unless by.empty?
|
35
|
+
end
|
36
|
+
|
37
|
+
def _default_filter
|
38
|
+
-> element do
|
39
|
+
element.id == @id
|
40
|
+
rescue
|
41
|
+
nil
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def _init_by(by)
|
46
|
+
@args = by
|
47
|
+
end
|
48
|
+
|
49
|
+
def _make_filter(*args)
|
50
|
+
if args.size == 1
|
51
|
+
-> element do
|
52
|
+
element.send(*@args) == args.first
|
53
|
+
end
|
54
|
+
else
|
55
|
+
-> element do
|
56
|
+
element.send(*@args).send(*args)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lab42_console
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Dober
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: forwarder2
|
@@ -24,62 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.2'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: lab42_function
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0.1'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0.1'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: pry
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.11'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.11'
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
28
|
name: pry-byebug
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
58
30
|
requirements:
|
59
31
|
- - "~>"
|
60
32
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
33
|
+
version: '3.9'
|
62
34
|
type: :development
|
63
35
|
prerelease: false
|
64
36
|
version_requirements: !ruby/object:Gem::Requirement
|
65
37
|
requirements:
|
66
38
|
- - "~>"
|
67
39
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
40
|
+
version: '3.9'
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
42
|
name: rspec
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
45
|
- - "~>"
|
74
46
|
- !ruby/object:Gem::Version
|
75
|
-
version: '3.
|
47
|
+
version: '3.9'
|
76
48
|
type: :development
|
77
49
|
prerelease: false
|
78
50
|
version_requirements: !ruby/object:Gem::Requirement
|
79
51
|
requirements:
|
80
52
|
- - "~>"
|
81
53
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
54
|
+
version: '3.9'
|
83
55
|
- !ruby/object:Gem::Dependency
|
84
56
|
name: simplecov
|
85
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,18 +103,10 @@ extra_rdoc_files: []
|
|
131
103
|
files:
|
132
104
|
- LICENSE
|
133
105
|
- README.md
|
134
|
-
- lib/function.rb
|
135
106
|
- lib/lab42/console.rb
|
136
|
-
- lib/lab42/console/
|
137
|
-
- lib/lab42/console/
|
138
|
-
- lib/lab42/console/intrusive.rb
|
139
|
-
- lib/lab42/console/kwd.rb
|
140
|
-
- lib/lab42/console/shortcut.rb
|
141
|
-
- lib/lab42/console/tools.rb
|
142
|
-
- lib/lab42/console/tools/forward_to_new_instance.rb
|
107
|
+
- lib/lab42/console/enum.rb
|
108
|
+
- lib/lab42/console/runner.rb
|
143
109
|
- lib/lab42/console/version.rb
|
144
|
-
- lib/lab42/functor.rb
|
145
|
-
- lib/lab42/lazy.rb
|
146
110
|
homepage: https://github.com/RobertDober/lab42_console
|
147
111
|
licenses:
|
148
112
|
- Apache
|
@@ -156,15 +120,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
156
120
|
requirements:
|
157
121
|
- - ">="
|
158
122
|
- !ruby/object:Gem::Version
|
159
|
-
version: 2.
|
123
|
+
version: 2.7.0
|
160
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
125
|
requirements:
|
162
126
|
- - ">="
|
163
127
|
- !ruby/object:Gem::Version
|
164
128
|
version: '0'
|
165
129
|
requirements: []
|
166
|
-
|
167
|
-
rubygems_version: 2.6.11
|
130
|
+
rubygems_version: 3.1.2
|
168
131
|
signing_key:
|
169
132
|
specification_version: 4
|
170
133
|
summary: Useful but Intrusive Ruby Tools for the console use only there!
|
data/lib/function.rb
DELETED
File without changes
|
data/lib/lab42/console/fn.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require_relative './tools.rb'
|
2
|
-
module Lab42
|
3
|
-
class Console
|
4
|
-
module Fn
|
5
|
-
def fn desc, *args, &blk
|
6
|
-
case desc
|
7
|
-
when Symbol, String
|
8
|
-
Tools.make_fn [desc, *args], blk
|
9
|
-
else
|
10
|
-
raise ArgumentError, "#{desc} does not describe a function"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def p rcv, name, *args, &blk
|
15
|
-
m = rcv.method(name)
|
16
|
-
Tools.make_partial m, args, blk
|
17
|
-
end
|
18
|
-
end
|
19
|
-
include Fn
|
20
|
-
end
|
21
|
-
end
|
data/lib/lab42/console/h.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require_relative 'tools/forward_to_new_instance'
|
2
|
-
module Lab42
|
3
|
-
class Console
|
4
|
-
class H
|
5
|
-
extend Tools::ForwardToNewInstance
|
6
|
-
|
7
|
-
attr_reader :hash
|
8
|
-
|
9
|
-
def find *keys
|
10
|
-
prewalk hash
|
11
|
-
end
|
12
|
-
|
13
|
-
def pre_walk nodes, condition, visitor, visited: Set.new
|
14
|
-
return if visisted.includes? nodes
|
15
|
-
case nodes
|
16
|
-
when Hash
|
17
|
-
walk_hash_pairs nodes, condition, visitor, visited: visited
|
18
|
-
when Enumerable
|
19
|
-
nodes.each do |ele|
|
20
|
-
pre_walk ele, condition, visitor, visited: visited.add(ele)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def initialize hash
|
28
|
-
@hash = hash
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
def walk_hash_pairs nodes, condition, visitor, visited:
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require_relative './tools'
|
2
|
-
|
3
|
-
# This is the reason not to use this anywhere else but in the console!!!
|
4
|
-
# =======================================================================
|
5
|
-
|
6
|
-
class Object
|
7
|
-
def identity; self end
|
8
|
-
end
|
9
|
-
|
10
|
-
module Enumerable
|
11
|
-
|
12
|
-
def f *args, &blk
|
13
|
-
blk = Lab42::Console::Tools.make_fn(args, blk)
|
14
|
-
Lab42::Lazy.new(self) do | yielder, element |
|
15
|
-
yielder << element if blk.(element)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def f! *args, &blk
|
20
|
-
blk = Lab42::Console::Tools.make_fn(args, blk)
|
21
|
-
Lab42::Lazy.new(self) do | yielder, element |
|
22
|
-
yielder << element unless blk.(element)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def m *args, &blk
|
27
|
-
blk = Lab42::Console::Tools.make_fn(args, blk)
|
28
|
-
Lab42::Lazy.new(self) do | yielder, element |
|
29
|
-
yielder << ( blk ? blk.(element) : element )
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def fm *args, &blk
|
34
|
-
blk = Lab42::Console::Tools.make_fn(args, blk)
|
35
|
-
Lab42::Lazy.new(self) do | yielder, element |
|
36
|
-
producer = Array(blk ? blk.(element) : element)
|
37
|
-
producer.lazy.each do |ele|
|
38
|
-
yielder << ele
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
data/lib/lab42/console/kwd.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
require_relative 'tools/forward_to_new_instance'
|
2
|
-
|
3
|
-
module Lab42
|
4
|
-
class Console
|
5
|
-
class Kwd
|
6
|
-
extend Tools::ForwardToNewInstance
|
7
|
-
|
8
|
-
attr_reader :kwds
|
9
|
-
|
10
|
-
|
11
|
-
def count *keys
|
12
|
-
kwds.count{ |pairs| keys.include? pairs.keys.first }
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
def first_value *keys
|
17
|
-
raise ArgumentError, "need 0, 1, got #{keys.size}" unless keys.size < 2
|
18
|
-
key = keys.first
|
19
|
-
if key
|
20
|
-
kwds.find{ |pairs| pairs.keys.first == key }.values.first
|
21
|
-
else
|
22
|
-
kwds.first.values.first
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def last_value *keys
|
27
|
-
raise ArgumentError, "need 0, 1, got #{keys.size}" unless keys.size < 2
|
28
|
-
key = keys.first
|
29
|
-
if key
|
30
|
-
kwds.reverse.find{ |pairs| pairs.keys.first == key }.values.first
|
31
|
-
else
|
32
|
-
kwds.reverse.first.values.first
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def values *keys
|
37
|
-
if keys.empty?
|
38
|
-
kwds.map{ |pairs| pairs.values.first }
|
39
|
-
else
|
40
|
-
kwds.map{ |pairs| keys.include?(pairs.keys.first) && pairs.values.first }.select(&:identity)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
def initialize kwds
|
48
|
-
@kwds = kwds
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
data/lib/lab42/console/tools.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
module Lab42
|
2
|
-
class Console
|
3
|
-
module Tools extend self
|
4
|
-
|
5
|
-
|
6
|
-
def make_fn fn_ary, blk
|
7
|
-
|
8
|
-
return ->(x){x} if fn_ary.empty? && blk.nil?
|
9
|
-
return blk if fn_ary.empty?
|
10
|
-
|
11
|
-
make_fn_from_ary( *fn_ary ).tap do | argfn |
|
12
|
-
# Chain in one pass if applicable
|
13
|
-
return ->(x){ blk.(argfn.(x)) } if blk
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def make_fn_from_ary desc, *args
|
18
|
-
-> (rcv, *a) {
|
19
|
-
rcv.send(desc, *(args + a))
|
20
|
-
}
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
def make_partial mthd, args, blk
|
25
|
-
make_partial_from(mthd, args).tap do | partial |
|
26
|
-
return ->(*x){ blk.(partial.(*x)) } if blk
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def make_partial_from mthd, args
|
31
|
-
-> (*a) {
|
32
|
-
mthd.( *(args + a) )
|
33
|
-
}
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
data/lib/lab42/functor.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Lab42
|
2
|
-
class Functor < BasicObject
|
3
|
-
|
4
|
-
attr_reader :function, :result
|
5
|
-
|
6
|
-
|
7
|
-
def call *args
|
8
|
-
@result = function.(*args)
|
9
|
-
end
|
10
|
-
|
11
|
-
def inspect
|
12
|
-
result.to_s
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def initialize &function
|
18
|
-
@function = function
|
19
|
-
@result = nil
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|