fancy_irb 1.0.1 → 1.3.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: cfc069062252e3060169708f1a8333e967cae281
4
- data.tar.gz: 34cb028cc537539b4a25d031d27bd08385f84241
2
+ SHA256:
3
+ metadata.gz: 739bfe501631f6fd5f4a78e6f92dda52bb41a8ac989d769a70cbdac26f6b547c
4
+ data.tar.gz: eb804f9241bd2c9e7c63e1e71b4e0aa518b0498b8d090d86977870e8502136c5
5
5
  SHA512:
6
- metadata.gz: ca16fb7ef877af720169a06315537be1390d84fb81c7d010e3ff703959db4aa2ec2ec0aedf253c20743363da0c24f20887aaa1ef77f173b114693608c00f07d8
7
- data.tar.gz: 85c6efb1aa820f6a09cb56e6ea978f25db74c4c87abeb5753965ee13ce3fa67704c653e8b315f6a4b9e86a900ea93c3ef3ff1234ee139b23ddb64ef1e32399f6
6
+ metadata.gz: a3f99a944370418ab561de7ca337fde9cf1384cd7b7041a7f6342175c1b732934e09f46ebe5d0bc43984b0f3909d7e0c6f9cabbf83abe5c7228af8758d4f5ce2
7
+ data.tar.gz: d60a4522e55035980b9f50fc6d0bdd36d66fc7177ad23051803a69e9f7cf38a2e4000c12f733722c2b706a699e3297e6e18f56e6efc93c0ab8800f85446c81b3
@@ -1,5 +1,21 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.3.0
4
+ * Use `script` wrapper on linux in case we are not on a tty
5
+
6
+ ## 1.2.1
7
+ * Fix 2.7 keyword warning
8
+
9
+ ## 1.2.0
10
+ * Read indentation level directly so it won't fail on newer Rubies
11
+
12
+ ## 1.1.0
13
+ * Rename `east_asian_width` option to `unicode_display_width` and activate by default
14
+ * Relax paint dependency
15
+
16
+ ## 1.0.2
17
+ * Bump unicode-display_width to 1.0
18
+
3
19
  ## 1.0.1
4
20
  * Fix that unicode-display_width was not used properly
5
21
 
@@ -9,15 +25,12 @@
9
25
  * Recognize multi-line regexes
10
26
  * Improve size detector (-> less wrongly placed rockets)
11
27
 
12
-
13
28
  ## 0.8.2
14
29
  * Support objects that don't support #inspect
15
30
 
16
-
17
31
  ## 0.8.1
18
32
  * Use io/console correctly, fixes bug on mingw
19
33
 
20
-
21
34
  ## 0.8.0
22
35
  * Internals partly refactored
23
36
  * Bump paint and unicode-display_width dependencies
@@ -29,28 +42,22 @@
29
42
  * Not patching Kernel anymore
30
43
  * Only path String if east_asian_width option is used
31
44
 
32
-
33
45
  ## 0.7.3
34
46
  * Don't colorize stdout by default
35
47
  * Deactivate rocket for common system commands
36
48
 
37
-
38
49
  ## 0.7.2
39
50
  * Fix a small bug that happens if there was no last line
40
51
 
41
-
42
52
  ## 0.7.1
43
53
  * Deactivate buggy input coloring :/
44
54
 
45
-
46
55
  ## 0.7.0
47
56
  * Use paint gem for terminal colors
48
57
  * Fix some rocket issues (when using with colored content)
49
58
 
50
-
51
59
  ## 0.6.5
52
60
  * Windows support
53
61
 
54
-
55
62
  ## < 0.6.5
56
63
  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', "~> 0.3.1"
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)
@@ -17,6 +17,13 @@ module FancyIrb
17
17
  :cuu1 => "\e[1A",
18
18
  :cuf1 => "\e[1C",
19
19
  }
20
+ elsif RbConfig::CONFIG['host_os'] =~ /linux/
21
+ TPUT = {
22
+ :sc => `script -q -e -t /dev/null -c 'tput sc'`,
23
+ :rc => `script -q -e -t /dev/null -c 'tput rc'`,
24
+ :cuu1 => `script -q -e -t /dev/null -c 'tput cuu1'`,
25
+ :cuf1 => `script -q -e -t /dev/null -c 'tput cuf1'`,
26
+ }
20
27
  else
21
28
  TPUT = {
22
29
  :sc => `tput sc`,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FancyIrb
2
- VERSION = '1.0.1'.freeze
4
+ VERSION = '1.3.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.1
4
+ version: 1.3.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-02-21 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: 0.3.1
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: 0.3.1
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: []