intar 2.0 → 2.3

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: ebb1f8448fc1b1975a50bbc99cac9e601dfc5c8c949fc9c6bb3e2e9ccec5d556
4
- data.tar.gz: ac7e7ac5915357dd60db8e958a4c58fc15050c3b04d52746a0d3e3d05d971d98
3
+ metadata.gz: f69cab2073de237de8c934b10e796b5a424fde33d92ab2bc41ab1aa612da14b7
4
+ data.tar.gz: 8095bb85ab4571c089859e0274c5e6df02e971f2d79334b20fceb93699857870
5
5
  SHA512:
6
- metadata.gz: 5e983cbc3b2773a4f3fc8297407f59aa56fd5156adaa5af2c2e7657e5e3523f8b16bfa193e5f088e1a5d4b259838f63444b7dea35a564c8133e85969ec055205
7
- data.tar.gz: bfeb03f9854a50f9f5c7d1ef7c658bd871a4f0896448009236c27f1125e2c6517e563c84b1c6a294c5289a7588e5f180e348af04b89e2949bcacc721be7fddcc
6
+ metadata.gz: ecc99bcf076cd30fa4463e229f5ce6fcc02d4952d360ab683b10693de718da6de06bb6155a09446b40f3b4d671a4755888c3752472aa6482fed3b542f260ef9f
7
+ data.tar.gz: e0a1b9c484c4062a098b4881020aca84392a87bf99a6ff4f1a53826cf7841e90d13c2659e699ed066181295f537b11f36e349e0b4b4ccc55991ec25ef1e61f8e
data/LICENSE ADDED
@@ -0,0 +1,29 @@
1
+ = ruby-intar
2
+
3
+ Copyright (c) 2020, Bertram Scharpf <software@bertram-scharpf.de>.
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are
8
+ met:
9
+
10
+ * Redistributions of source code must retain the above copyright
11
+ notice, this list of conditions and the following disclaimer.
12
+
13
+ * Redistributions in binary form must reproduce the above copyright
14
+ notice, this list of conditions and the following disclaimer in
15
+ the documentation and/or other materials provided with the
16
+ distribution.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
19
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
21
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
22
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+
data/README ADDED
@@ -0,0 +1,30 @@
1
+ = ruby-intar -- Interactive Ruby
2
+
3
+ A simple Irb replacement
4
+
5
+
6
+
7
+ == About
8
+
9
+ The Intar project was started in times when Irb was a rather
10
+ unconvenient tool, without colors, difficult to call from
11
+ inside an application and so on.
12
+
13
+ Today, Intar is a tool far less complex than Irb.
14
+
15
+ Yet, Intar is more robust. Try this in Irb and in Intar:
16
+
17
+ prompt> Thread.new { sleep 3 ; Thread.main.raise "stop" }
18
+
19
+
20
+
21
+ == Author
22
+
23
+ Bertram Scharpf <software@bertram-scharpf.de>
24
+
25
+
26
+
27
+ == TODO
28
+
29
+ Write some more documentation.
30
+
data/bin/intar CHANGED
@@ -28,9 +28,7 @@ class Intar::Appl < Application
28
28
 
29
29
  EOT
30
30
 
31
- attr_writer :show, :prompt, :histmax
32
- def histfile= f ; @histfile = nil_if_none f ; end
33
- def configfile= f ; @configfile = nil_if_none f ; end
31
+ attr_writer :show, :prompt, :histmax, :histfile, :configfile
34
32
  attr_bang :quiet, :bw, :catch_exit, :histall
35
33
 
36
34
  define_option "p", :prompt=, "STR", "prompt - see source code for % escapes"
@@ -51,7 +49,7 @@ class Intar::Appl < Application
51
49
  "config file, NONE means none"
52
50
  alias_option "c", "configfile"
53
51
 
54
- define_option "H", :histfile=, "FILE", ".intar_history",
52
+ define_option "H", :histfile=, "FILE",
55
53
  "history file, NONE means none"
56
54
  alias_option "H", "histfile"
57
55
 
@@ -75,7 +73,11 @@ class Intar::Appl < Application
75
73
  define_option "V", :version, "show version"
76
74
  alias_option "V", "version"
77
75
 
78
- @params = {}
76
+ @params = {
77
+ show: 5,
78
+ shownil: false,
79
+ histfile: ".intar_history",
80
+ }
79
81
  class <<self
80
82
  attr_reader :params
81
83
  def set **kwargs
@@ -101,12 +103,12 @@ class Intar::Appl < Application
101
103
  elsif @show then
102
104
  p[ :show] = Integer @show
103
105
  end
104
- p[ :prompt ] = @prompt if @prompt
105
- p[ :color ] = false if @bw
106
- p[ :catch_exit] = true if @catch_exit
107
- p[ :histhid ] = false if @histall
108
- p[ :histfile ] = @histfile if @histfile
109
- p[ :histmax ] = Integer @histmax if @histmax
106
+ p[ :prompt ] = @prompt if @prompt
107
+ p[ :color ] = false if @bw
108
+ p[ :catch_exit] = true if @catch_exit
109
+ p[ :histhid ] = false if @histall
110
+ p[ :histfile ] = nil_if_none @histfile if @histfile
111
+ p[ :histmax ] = Integer @histmax if @histmax
110
112
  p
111
113
  end
112
114
 
@@ -120,8 +122,9 @@ class Intar::Appl < Application
120
122
  end
121
123
 
122
124
  def read_cfg
123
- return unless @configfile
124
- c = File.expand_path @configfile, "~"
125
+ cf = nil_if_none @configfile
126
+ return unless cf
127
+ c = File.expand_path cf, "~"
125
128
  return unless File.exists? c
126
129
  load c
127
130
  rescue Exception
data/lib/intar/prompt.rb CHANGED
@@ -19,8 +19,11 @@ class Intar
19
19
  def ask prompt
20
20
  l = Readline.readline prompt
21
21
  rescue Interrupt
22
- puts "^C -- #{$!.inspect}"
22
+ puts
23
23
  retry
24
+ rescue Exception
25
+ puts
26
+ raise
24
27
  end
25
28
 
26
29
  def last
data/lib/intar/version.rb CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  class Intar
6
6
 
7
- VERSION = "2.0".freeze
7
+ VERSION = "2.3".freeze
8
8
 
9
9
  end
10
10
 
data/lib/intar.rb CHANGED
@@ -78,7 +78,7 @@ class Intar
78
78
  @obj = obj.nil? ? (eval "self", TOPLEVEL_BINDING) : obj
79
79
  @params = DEFAULTS.dup.update params
80
80
  @binding = @obj.intar_binding
81
- @n = 0
81
+ @n = 1
82
82
  @prompt = Prompt.new
83
83
  end
84
84
 
@@ -89,8 +89,10 @@ class Intar
89
89
  def run
90
90
  prompt_load_history
91
91
  oldset = eval OLDSET, @binding
92
- while l = readline do
92
+ loop do
93
93
  begin
94
+ l = readline
95
+ l or break
94
96
  @redir = find_redirect l
95
97
  r = if l =~ /\A\\(\w+|.)\s*(.*?)\s*\Z/ then
96
98
  m = get_metacommand $1
@@ -112,13 +114,14 @@ class Intar
112
114
  switchcolor
113
115
  r = $!
114
116
  rescue Exception
115
- raise if SystemExit === $! and not @params[ :catch_exit]
117
+ break if SystemExit === $! and not @params[ :catch_exit]
116
118
  show_exception
117
119
  r = $!
118
120
  else
119
121
  display r
120
122
  end
121
123
  oldset.call r, @n
124
+ @n += 1
122
125
  end
123
126
  prompt_save_history
124
127
  end
@@ -198,7 +201,6 @@ class Intar
198
201
 
199
202
  def readline
200
203
  r, @previous = @previous, nil
201
- r or @n += 1
202
204
  begin
203
205
  cp = cur_prompt r
204
206
  l = @prompt.ask cp
@@ -240,6 +242,8 @@ class Intar
240
242
  puts i
241
243
  end
242
244
 
245
+ PACKAGE_BACKTRACE = %r/#{File.basename __FILE__, ".rb"}.*:\d+:in/
246
+
243
247
  def show_exception
244
248
  unless $!.to_s.empty? then
245
249
  switchcolor 31, 1
@@ -250,8 +254,7 @@ class Intar
250
254
  puts "(#{$!.class})"
251
255
  switchcolor 33
252
256
  $@.each { |b|
253
- r = b.starts_with? __FILE__
254
- break if r and (b.rest r) =~ /\A:\d+:/
257
+ break if b =~ PACKAGE_BACKTRACE
255
258
  puts b
256
259
  }
257
260
  switchcolor
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.0'
4
+ version: '2.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-19 00:00:00.000000000 Z
11
+ date: 2022-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appl
@@ -47,6 +47,8 @@ executables:
47
47
  extensions: []
48
48
  extra_rdoc_files: []
49
49
  files:
50
+ - LICENSE
51
+ - README
50
52
  - bin/intar
51
53
  - lib/intar.rb
52
54
  - lib/intar/prompt.rb