fancy_irb 1.0.1 → 1.3.0

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
- 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: []