fancy_irb 1.0.2 → 1.4.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: 6bd897b79b18d01f373c1559c2c7a12ca14f2164
4
- data.tar.gz: 7bc42840677843d4e61769c7ddec3b14c6d3cfc3
2
+ SHA256:
3
+ metadata.gz: a4f69cefc38fcb5d225c8afe57c4cbed73e2e1411c15806ed2df4f88947fa072
4
+ data.tar.gz: 1f3e2bf8dd492c48eb6e3a4b1ffd45be1f96e6f461bc6286b57c16d8b7de3ee1
5
5
  SHA512:
6
- metadata.gz: 7444265dffbf53f820b5caad81c56514e646fab9c8d4b0a6e0e29c6d2a0aa2b85a07850ef6722b9827bc9a92e88e2b43c605c04d6f1e640d9b5909b034aaffc5
7
- data.tar.gz: 8d6e1c0c873fa84072672be1a7eede62da62742482427673f588f657395d84d8a2c95dca0fc92096e0b272b07f7363f62b001bef2edc4c08a30a9b2534953ecf
6
+ metadata.gz: 60b03c1900ff6002a77e965d35eba6b1575d058c8e72efc3dc0272dca17929fb201fbae2e8a460c2059c85b2b602a9ff0a163b17610808fe51576617a6832abe
7
+ data.tar.gz: 22a9d9ffb6a8b8c0516be6fcd9ff038a0b84bb5319d6e0e6c4cdab059395f116926b09877e02de90759b8dbcfa0565f5717d774c8f95c15e12e1108416634a0f
@@ -1,5 +1,21 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.4.0
4
+ * Full support for non-ttys
5
+
6
+ ## 1.3.0
7
+ * Use `script` wrapper on linux in case we are not on a tty
8
+
9
+ ## 1.2.1
10
+ * Fix 2.7 keyword warning
11
+
12
+ ## 1.2.0
13
+ * Read indentation level directly so it won't fail on newer Rubies
14
+
15
+ ## 1.1.0
16
+ * Rename `east_asian_width` option to `unicode_display_width` and activate by default
17
+ * Relax paint dependency
18
+
3
19
  ## 1.0.2
4
20
  * Bump unicode-display_width to 1.0
5
21
 
@@ -12,15 +28,12 @@
12
28
  * Recognize multi-line regexes
13
29
  * Improve size detector (-> less wrongly placed rockets)
14
30
 
15
-
16
31
  ## 0.8.2
17
32
  * Support objects that don't support #inspect
18
33
 
19
-
20
34
  ## 0.8.1
21
35
  * Use io/console correctly, fixes bug on mingw
22
36
 
23
-
24
37
  ## 0.8.0
25
38
  * Internals partly refactored
26
39
  * Bump paint and unicode-display_width dependencies
@@ -32,28 +45,22 @@
32
45
  * Not patching Kernel anymore
33
46
  * Only path String if east_asian_width option is used
34
47
 
35
-
36
48
  ## 0.7.3
37
49
  * Don't colorize stdout by default
38
50
  * Deactivate rocket for common system commands
39
51
 
40
-
41
52
  ## 0.7.2
42
53
  * Fix a small bug that happens if there was no last line
43
54
 
44
-
45
55
  ## 0.7.1
46
56
  * Deactivate buggy input coloring :/
47
57
 
48
-
49
58
  ## 0.7.0
50
59
  * Use paint gem for terminal colors
51
60
  * Fix some rocket issues (when using with colored content)
52
61
 
53
-
54
62
  ## 0.6.5
55
63
  * Windows support
56
64
 
57
-
58
65
  ## < 0.6.5
59
66
  See https://github.com/janlelis/fancy_irb/commits/0.6.4
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2012, 2015-2016 Jan Lelis
1
+ Copyright (c) 2010-2012, 2015-2020 Jan Lelis
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,9 +1,8 @@
1
- # FancyIrb [![version](https://badge.fury.io/rb/fancy_irb.svg)](http://badge.fury.io/rb/fancy_irb)
1
+ # FancyIrb [![version](https://badge.fury.io/rb/fancy_irb.svg)](https://badge.fury.io/rb/fancy_irb) [![[ci]](https://github.com/janlelis/fancy_irb/workflows/Test/badge.svg)](https://github.com/janlelis/fancy_irb/actions?query=workflow%3ATest)
2
2
 
3
3
  * Colorizes IRB prompts, errors, `$stderr` and `$stdout`
4
4
  * Uses "Hash Rockets" (# =>) to display IRB results
5
5
 
6
-
7
6
  ## Usage
8
7
 
9
8
  require 'fancy_irb'
@@ -12,11 +11,12 @@
12
11
  You can pass an options hash. These are the default values:
13
12
 
14
13
  DEFAULT_OPTIONS = {
15
- :rocket_mode => true, # activate or deactivate #=> rocket
16
- :rocket_prompt => '#=> ', # prompt to use for the rocket
17
- :result_prompt => '=> ', # prompt to use for normal output
18
- :east_asian_width => false, # set to true if you have double-width characters (slower)
19
- :colorize => { # colors hash. Set to nil to deactivate colors
14
+ :rocket_mode => true, # activate or deactivate #=> rocket
15
+ :rocket_prompt => '#=> ', # prompt to use for the rocket
16
+ :result_prompt => '=> ', # prompt to use for normal output
17
+ :unicode_display_width => true, # set to false if you don't want to check for proper
18
+ # string width for better performance
19
+ :colorize => { # colors hash. Set to nil to deactivate colors
20
20
  :rocket_prompt => [:blue],
21
21
  :result_prompt => [:blue],
22
22
  :input_prompt => nil,
@@ -31,25 +31,23 @@ Rocket mode means: Output result as comment if there is enough space left on
31
31
  the terminal line and `stdout` does not output more than the current terminal
32
32
  height.
33
33
 
34
- For more information on which colors can be used, see the [paint
35
- documentation](https://github.com/janlelis/paint).
36
-
34
+ For more information on which colors can be used, see the [paint documentation](https://github.com/janlelis/paint).
37
35
 
38
36
  ## Troubleshooting
39
37
  ### Windows Support
40
38
  You will need [ansicon](https://github.com/adoxa/ansicon) or [ConEmu](https://code.google.com/p/conemu-maximus5/).
41
39
 
42
- ### Wrong display widths?
43
- When using double-width unicode chars, you should set `:east_asian_width` to
44
- `true`. It is not activated by default, because of its performance impact.
40
+ ### Need More Performance?
41
+ The gem checks for the Unicode display width of characters, which requires a
42
+ lookup of every character. You can deactivate this check by setting
43
+ `:unicode_display_width` to `false`.
45
44
 
46
- ### Known bugs
45
+ ### Known Bugs
47
46
  Not all stdin methods are patched properly to work with the rocket: The gems
48
47
  focuses on the often used ones
49
48
 
50
-
51
49
  ## J-_-L
52
50
  Inspired by the irb_rocket gem by genki.
53
51
 
54
- Copyright (c) 2010-2012, 2015 Jan Lelis <http://janlelis.com> released under
52
+ Copyright (c) 2010-2012, 2015-2020 Jan Lelis <https://janlelis.com> released under
55
53
  the MIT license.
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ end
15
15
 
16
16
  desc "Install the gem locally (without docs)"
17
17
  task :install => :gem do
18
- sh %{gem install pkg/#{gemspec.name}-#{gemspec.version}.gem --no-rdoc --no-ri --local}
18
+ sh %{gem install pkg/#{gemspec.name}-#{gemspec.version}.gem --no-doc --local}
19
19
  end
20
20
 
21
21
  desc "Generate the gemspec"
@@ -6,15 +6,15 @@ Gem::Specification.new do |s|
6
6
  s.name = "fancy_irb"
7
7
  s.version = FancyIrb::VERSION
8
8
  s.authors = ["Jan Lelis"]
9
- s.email = "mail@janlelis.de"
10
- s.homepage = "http://github.com/janlelis/fancy_irb"
11
- s.summary = "FancyIrb makes IRB friendly."
12
- s.description = "FancyIrb makes IRB # => friendly."
9
+ s.email = ["hi@ruby.consulting"]
10
+ s.homepage = "https://github.com/janlelis/fancy_irb"
11
+ s.summary = "FancyIrb makes IRB # => friendly."
12
+ s.description = "A fancy IRB has a colorful input prompt and profiles rocket-style #=> return values"
13
13
  s.required_ruby_version = '>= 1.9.3'
14
14
  s.license = 'MIT'
15
15
  s.requirements = ['Windows: ansicon <https://github.com/adoxa/ansicon>']
16
- s.add_dependency 'paint', '>= 0.9', '< 2.0'
17
- s.add_dependency 'unicode-display_width', "~> 1.0"
16
+ s.add_dependency 'paint', '>= 0.9', '< 3.0'
17
+ s.add_dependency 'unicode-display_width', "~> 1.1"
18
18
  s.add_development_dependency 'rspec', "~> 3.2"
19
19
  s.add_development_dependency 'rake', "~> 10.4"
20
20
  s.files = [
@@ -37,4 +37,3 @@ Gem::Specification.new do |s|
37
37
  "spec/fixtures.rb",
38
38
  ]
39
39
  end
40
-
@@ -2,6 +2,7 @@ require_relative 'fancy_irb/version'
2
2
 
3
3
  require 'stringio'
4
4
  require 'paint'
5
+ require 'unicode/display_width'
5
6
 
6
7
  require_relative 'fancy_irb/terminal_info'
7
8
  require_relative 'fancy_irb/size_detector'
@@ -10,11 +11,12 @@ require_relative 'fancy_irb/implementation'
10
11
 
11
12
  module FancyIrb
12
13
  DEFAULT_OPTIONS = {
13
- :rocket_mode => true, # activate or deactivate #=> rocket output
14
- :rocket_prompt => '#=> ', # prompt to use for the rocket
15
- :result_prompt => '=> ', # prompt to use for normal output
16
- :east_asian_width => false, # set to true if you have double-width characters (slower)
17
- :colorize => { # colors hash. Set to nil to deactivate colors
14
+ :rocket_mode => true, # activate or deactivate #=> rocket output
15
+ :rocket_prompt => '#=> ', # prompt to use for the rocket
16
+ :result_prompt => '=> ', # prompt to use for normal output
17
+ :unicode_display_width => true, # set to false if you don't want to check for proper
18
+ # string width for better performance
19
+ :colorize => { # colors hash. Set to nil to deactivate colors
18
20
  :rocket_prompt => [:blue],
19
21
  :result_prompt => [:blue],
20
22
  :input_prompt => nil,
@@ -17,7 +17,6 @@ module FancyIrb
17
17
 
18
18
  # hook into IRB
19
19
  def extend!
20
- require 'unicode/display_width' if @options[:east_asian_width]
21
20
  require_relative 'irb_ext'
22
21
  require_relative 'core_ext'
23
22
  require_relative 'clean_up'
@@ -51,9 +50,10 @@ module FancyIrb
51
50
  }
52
51
  end
53
52
 
54
- def east_asian_width?
55
- @options[:east_asian_width]
53
+ def unicode_display_width?
54
+ @options[:unicode_display_width] || @options[:east_asian_width]
56
55
  end
56
+ alias east_asian_width? unicode_display_width?
57
57
 
58
58
  def reset_line!
59
59
  @tracked_height = 0
@@ -8,7 +8,7 @@ module IRB
8
8
  def prompt(*args, &block)
9
9
  FancyIrb.handle_prompt(
10
10
  prompt_non_fancy(*args, &block),
11
- IRB.conf[:AUTO_INDENT] ? @scanner.indent * 2 : 0,
11
+ IRB.conf[:AUTO_INDENT] ? @scanner.instance_variable_get(:@indent) * 2 : 0,
12
12
  IRB.conf[:AUTO_INDENT] && IRB.conf[:PROMPT][IRB.conf[:PROMPT_MODE]][:PROMPT_C] == args[0]
13
13
  )
14
14
  end
@@ -27,8 +27,8 @@ module IRB
27
27
  class Context
28
28
  alias evaluate_non_fancy evaluate
29
29
 
30
- def evaluate(*args)
31
- evaluate_non_fancy(*args)
30
+ def evaluate(*args, **kwargs)
31
+ evaluate_non_fancy(*args, **kwargs)
32
32
  rescue Exception
33
33
  FancyIrb.register_error_capturer!
34
34
  raise
@@ -5,7 +5,7 @@ module FancyIrb
5
5
  def width_of(data)
6
6
  return 0 unless data
7
7
  data = Paint.unpaint data.to_s
8
- FancyIrb.east_asian_width? ? data.display_width : data.size
8
+ FancyIrb.unicode_display_width? ? Unicode::DisplayWidth.of(data) : data.length
9
9
  end
10
10
 
11
11
  def height_of(data, width)
@@ -4,25 +4,45 @@ module FancyIrb
4
4
  module TerminalInfo
5
5
  def self.lines
6
6
  STDOUT.winsize[0]
7
+ rescue Errno::ENOTTY
8
+ ENV['LINES'] || ENV['ROWS'] || 25
7
9
  end
8
10
 
9
11
  def self.cols
10
12
  STDOUT.winsize[1]
13
+ rescue Errno::ENOTTY
14
+ ENV['COLUMNS'] || 80
11
15
  end
12
16
 
13
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
17
+ begin
18
+ if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
19
+ TPUT = {
20
+ :sc => "\e[s",
21
+ :rc => "\e[u",
22
+ :cuu1 => "\e[1A",
23
+ :cuf1 => "\e[1C",
24
+ }
25
+ elsif RbConfig::CONFIG['host_os'] =~ /linux/
26
+ TPUT = {
27
+ :sc => `script -q -e -t /dev/null -c 'tput sc'`,
28
+ :rc => `script -q -e -t /dev/null -c 'tput rc'`,
29
+ :cuu1 => `script -q -e -t /dev/null -c 'tput cuu1'`,
30
+ :cuf1 => `script -q -e -t /dev/null -c 'tput cuf1'`,
31
+ }
32
+ else
33
+ TPUT = {
34
+ :sc => `tput sc`,
35
+ :rc => `tput rc`,
36
+ :cuu1 => `tput cuu1`,
37
+ :cuf1 => `tput cuf1`,
38
+ }
39
+ end
40
+ rescue Errno::ENOTTY
14
41
  TPUT = {
15
- :sc => "\e[s",
16
- :rc => "\e[u",
17
- :cuu1 => "\e[1A",
18
- :cuf1 => "\e[1C",
19
- }
20
- else
21
- TPUT = {
22
- :sc => `tput sc`,
23
- :rc => `tput rc`,
24
- :cuu1 => `tput cuu1`,
25
- :cuf1 => `tput cuf1`,
42
+ :sc => "\e7",
43
+ :rc => "\e8",
44
+ :cuu1 => "\e[A",
45
+ :cuf1 => "\e[C",
26
46
  }
27
47
  end
28
48
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FancyIrb
2
- VERSION = '1.0.2'.freeze
4
+ VERSION = '1.4.0'
3
5
  end
@@ -5,10 +5,9 @@ describe FancyIrb::SizeDetector do
5
5
  include FancyIrb::SizeDetector
6
6
 
7
7
  before do
8
- FancyIrb.instance_variable_set(:@options, {east_asian_width: false})
8
+ FancyIrb.instance_variable_set(:@options, { unicode_display_width: true })
9
9
  end
10
10
 
11
-
12
11
  describe ".width_of" do
13
12
  it "returns 0 when no data given" do
14
13
  expect( width_of(nil) ).to eq 0
@@ -22,18 +21,17 @@ describe FancyIrb::SizeDetector do
22
21
  expect( width_of("\e[31mstring\e[0m") ).to eq 6
23
22
  end
24
23
 
25
- it "does not respect double-width chars by default" do
26
- expect( width_of('一') ).to eq 1
24
+ it "respects double-width chars by default" do
25
+ expect( width_of('一') ).to eq 2
27
26
  end
28
27
 
29
- context "east_asian_width? true" do
28
+ context "unicode_display_width? false" do
30
29
  before do
31
- require 'unicode/display_width'
32
- FancyIrb.instance_variable_set(:@options, {east_asian_width: true})
30
+ FancyIrb.instance_variable_set(:@options, { unicode_display_width: false })
33
31
  end
34
32
 
35
- it "respects double-width chars" do
36
- expect( width_of('一') ).to eq 2
33
+ it "does not respect double-width chars" do
34
+ expect( width_of('一') ).to eq 1
37
35
  end
38
36
  end
39
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fancy_irb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Lelis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-03 00:00:00.000000000 Z
11
+ date: 2020-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paint
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '0.9'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '2.0'
22
+ version: '3.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,21 +29,21 @@ dependencies:
29
29
  version: '0.9'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '2.0'
32
+ version: '3.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: unicode-display_width
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.0'
39
+ version: '1.1'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.0'
46
+ version: '1.1'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -72,8 +72,10 @@ dependencies:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '10.4'
75
- description: 'FancyIrb makes IRB # => friendly.'
76
- email: mail@janlelis.de
75
+ description: 'A fancy IRB has a colorful input prompt and profiles rocket-style #=>
76
+ return values'
77
+ email:
78
+ - hi@ruby.consulting
77
79
  executables: []
78
80
  extensions: []
79
81
  extra_rdoc_files: []
@@ -95,7 +97,7 @@ files:
95
97
  - lib/fancy_irb/version.rb
96
98
  - spec/fixtures.rb
97
99
  - spec/size_detector_spec.rb
98
- homepage: http://github.com/janlelis/fancy_irb
100
+ homepage: https://github.com/janlelis/fancy_irb
99
101
  licenses:
100
102
  - MIT
101
103
  metadata: {}
@@ -115,9 +117,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
117
  version: '0'
116
118
  requirements:
117
119
  - 'Windows: ansicon <https://github.com/adoxa/ansicon>'
118
- rubyforge_project:
119
- rubygems_version: 2.5.1
120
+ rubygems_version: 3.1.2
120
121
  signing_key:
121
122
  specification_version: 4
122
- summary: FancyIrb makes IRB friendly.
123
+ summary: 'FancyIrb makes IRB # => friendly.'
123
124
  test_files: []