intar 2.10 → 2.12

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
2
  SHA256:
3
- metadata.gz: d8a5df71bb9222dac02bb3a53fdcd892046b97c92e134c5c213a8b35bce797c5
4
- data.tar.gz: dbe79cebdf7939fea7b5fd2ff8aaf7170b4ae70269efd87c618af2e490ee2a42
3
+ metadata.gz: a0b8c82a2fd61d3a7fe7be7078c4cf96b37dabd18c00c25ad84a51cb34d06445
4
+ data.tar.gz: c8045ce6959c1fda974eec564229bbe95b2adf2acd9470c650863f4e405f7adf
5
5
  SHA512:
6
- metadata.gz: c776f36ee574f66db1c35a3cb24806750955bd155f6fe1dc2846735dd7b3e91c09b36254ac08e95d5b4cb7e3bf2841669baae874c1f42893fba068769f792dc6
7
- data.tar.gz: 7aed84c5b1dfd079d0970555ea83322ef261d3d4e3afa162eacbb71df4f1cfe96a6158836e0bcb2a22a4560885c02260118c2f51740193fa177b53bb6a4567b1
6
+ metadata.gz: a3a6d77c597107d260b723a107feae4049a31c81654b420169ef4ec6db55eaa1e23e47f9357f74b9d80308439acfb39da6d14c3d68a09be992d3636b99caf1ca
7
+ data.tar.gz: 950d148dc9e33d4d840c3d9187de1db39ebc0b2cabc046f334c8474202f180b4db9e0a65e8f9086f7856f3a858cc5fafae11ffe7f4788a0f77bdef9385ee0d0d
data/README CHANGED
@@ -12,7 +12,8 @@ inside an application and so on.
12
12
 
13
13
  Today, Intar is a tool far less complex than Irb.
14
14
 
15
- Yet, Intar is more robust. Try this in Irb and in Intar:
15
+ Yet, Intar is more robust. Have a look at what happens
16
+ after this in Irb and in Intar:
16
17
 
17
18
  prompt> Thread.new { sleep 3 ; Thread.main.raise "stop" }
18
19
 
@@ -24,6 +25,7 @@ Yet, Intar is more robust. Try this in Irb and in Intar:
24
25
 
25
26
  obj.method & enter a sub-Intar
26
27
  obj.each & enter multiple sub-Intars
28
+ obj.method &x enter a sub-Intar with variable x
27
29
 
28
30
  \q exit from the innermost sub-Intar
29
31
  \q! exit from the innermost sub-Intar loop
@@ -32,7 +32,7 @@ class Intar
32
32
  class RedirectPipe < Redirect
33
33
  class <<self
34
34
  def detect line, pager
35
- if line.slice! /\s+\|(\b[^|&;{}()\[\]]*)?\z/ then
35
+ if line.slice! /\s+\|((?:\b|\/)[^|&;{}()\[\]]*)?\z/ then
36
36
  new $1||pager
37
37
  end
38
38
  end
data/lib/intar/version.rb CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  class Intar
6
6
 
7
- VERSION = "2.10".freeze
7
+ VERSION = "2.12".freeze
8
8
 
9
9
  end
10
10
 
data/lib/intar.rb CHANGED
@@ -76,21 +76,21 @@ class Intar
76
76
 
77
77
  @@current = nil
78
78
 
79
- attr_reader :params, :prompt, :depth, :n
79
+ attr_reader :params, :prompt, :depth, :n, :binding
80
80
  def initialize obj = nil, **params
81
81
  @obj = obj.nil? ? (eval "self", TOPLEVEL_BINDING) : obj
82
82
  if @@current then
83
- @params = @@current.params
84
- @prompt = @@current.prompt
85
- @depth = @@current.depth + 1
83
+ @params = @@current.params
84
+ @prompt = @@current.prompt
85
+ @depth = @@current.depth + 1
86
+ @binding = @@current.binding
86
87
  else
87
88
  @params = DEFAULTS.dup.update params
88
89
  @prompt = Prompt.new
89
90
  @depth = 0
91
+ @binding = @obj.intar_binding
90
92
  end
91
93
  @n = 1
92
-
93
- @binding = @obj.intar_binding
94
94
  end
95
95
 
96
96
 
@@ -146,11 +146,26 @@ class Intar
146
146
  eval code, @binding, "#{self.class}/execute"
147
147
  end
148
148
 
149
+ def set_var name, val
150
+ @binding.local_variable_set name, val
151
+ end
152
+
149
153
 
150
154
  private
151
155
 
152
156
  def eval_line l
153
- ls = l.sub %r/\s*&\s*\z/, SUB
157
+ ls = l.sub %r/\s+&(\w+)?\s*\z/ do
158
+ <<~EOT
159
+ \ do |obj|
160
+ Intar.open #{"obj " unless $1}do |i|
161
+ #{"# " unless $1}i.set_var "#$1", obj
162
+ i.run
163
+ end
164
+ rescue Intar::Break
165
+ break
166
+ end
167
+ EOT
168
+ end
154
169
  @redir.redirect_output do eval ls, @binding, @file end
155
170
  end
156
171
 
@@ -181,14 +196,6 @@ class Intar
181
196
  end
182
197
 
183
198
 
184
- SUB = <<~EOT
185
- \ do |obj|
186
- Intar.run obj
187
- rescue Intar::Break
188
- break
189
- end
190
- EOT
191
-
192
199
  OLDSET = <<~EOT
193
200
  _, __, ___ = nil, nil, nil
194
201
  proc { |r,n|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intar
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.10'
4
+ version: '2.12'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-21 00:00:00.000000000 Z
11
+ date: 2023-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appl
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  version: '0'
75
75
  requirements:
76
76
  - Ruby and some small Gems; Readline
77
- rubygems_version: 3.4.17
77
+ rubygems_version: 3.4.20
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: Interactive Ruby