lab42_console 0.0.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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