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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 312fd0d573b01d95bf651f4af2335c0ed1068014
4
- data.tar.gz: 6ea484f492e56b24c2f297660200f43e5203ff64
2
+ SHA256:
3
+ metadata.gz: b6f95877f5a0906e4be07fcae52a0e773c286eeb2103af22bbf0d380127073e6
4
+ data.tar.gz: ef58b9bcaa9ba85c03b5fc96b623b35c809aaaccb5bb6eae8aae08b109a0e97e
5
5
  SHA512:
6
- metadata.gz: 6a6d0752d73178a2b321c9522de1114eb1a982aeb95e98e83cdb2d01345f13ca9cda7850f035beb3bfb47cc26ea06105b03604136ef175372195a0bafa05941d
7
- data.tar.gz: 36ae200a0903040d74585ce9b2eb0e6879fb2403c58ecfe916a175299d65645cbab74348cbbf8eb9cf6df7960648cd93b212b8494b4d2880b8758780fe654007
6
+ metadata.gz: d9ecc765cbe017dd929d2a61d0572bac1a11013f330a6e5510c46b9818889c4430ba90923b5571964dd68ce6ae8f979e0a795249d7beaadcc8288ccfc2789ed3
7
+ data.tar.gz: e2f7369b408fca4207d7f2c2666cd3443b9f465d5be55aba942a39a876acaa58419f5294289ee1343ceb295381057da187b19b629795272ba32c0843c2260703
data/README.md CHANGED
@@ -12,10 +12,10 @@ Intrusive Ruby Tools for the Console Only
12
12
 
13
13
  ## Usage
14
14
 
15
- ```ruby
15
+ ```ruby no-literate
16
16
  require 'lab42/console'
17
17
 
18
18
  # gives access to the new console object c
19
19
 
20
- c.version # => 0.0.0
20
+ c.version # => 0.1.0
21
21
  ```
@@ -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
- module Lab42
10
- class Console
11
- def kwd; Kwd end
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
- class Object
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
@@ -1,5 +1,5 @@
1
1
  module Lab42
2
2
  class Console
3
- VERSION = '0.0.1'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  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.1
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: 2018-02-28 00:00:00.000000000 Z
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.5'
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.5'
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.7'
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.7'
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/fn.rb
137
- - lib/lab42/console/h.rb
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.3.1
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
- rubyforge_project:
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!
File without changes
@@ -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
@@ -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
@@ -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
@@ -1,9 +0,0 @@
1
- module Lab42
2
- class Console
3
- module Shortcut
4
- def c
5
- @__lab42_console_shortcut__ ||= Lab42::Console.new
6
- end
7
- end
8
- end
9
- end
@@ -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
@@ -1,14 +0,0 @@
1
- module Lab42
2
- class Console
3
- module Tools extend self
4
- module ForwardToNewInstance
5
- def method_missing name, kwds, *args
6
- insm = instance_method(name)
7
- insm.bind(new(kwds)).(*args)
8
- rescue NameError
9
- super
10
- end
11
- end
12
- end
13
- end
14
- end
@@ -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
@@ -1,14 +0,0 @@
1
- module Lab42
2
- class Lazy < Enumerator::Lazy
3
-
4
- def f *a, &blk
5
- return force if a.empty? && blk.nil?
6
- super
7
- end
8
-
9
- def inspect
10
- force
11
- end
12
-
13
- end
14
- end