cli-ui 1.2.2 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,56 @@
1
+ # coding: utf-8
2
+ require 'cli/ui'
3
+ require 'cli/ui/frame/frame_stack'
4
+ require 'cli/ui/frame/frame_style'
5
+
6
+ module CLI
7
+ module UI
8
+ class Wrap
9
+ def initialize(input)
10
+ @input = input
11
+ end
12
+
13
+ def wrap
14
+ max_width = Terminal.width - Frame.prefix_width
15
+ width = 0
16
+ final = []
17
+ # Create an alternation of format codes of parameter lengths 1-20, since + and {1,n} not allowed in lookbehind
18
+ format_codes = (1..20).map { |n| /\x1b\[[\d;]{#{n}}m/ }.join('|')
19
+ codes = ''
20
+ @input.split(/(?=\s|\x1b\[[\d;]+m|\r)|(?<=\s|#{format_codes})/).each do |token|
21
+ case token
22
+ when '\x1B[0?m'
23
+ codes = ''
24
+ final << token
25
+ when /\x1b\[[\d;]+m/
26
+ codes += token # Track in use format codes so that they are resent after frame coloring
27
+ final << token
28
+ when "\n"
29
+ final << "\n#{codes}"
30
+ width = 0
31
+ when /\s/
32
+ token_width = ANSI.printing_width(token)
33
+ if width + token_width <= max_width
34
+ final << token
35
+ width += token_width
36
+ else
37
+ final << "\n#{codes}"
38
+ width = 0
39
+ end
40
+ else
41
+ token_width = ANSI.printing_width(token)
42
+ if width + token_width <= max_width
43
+ final << token
44
+ width += token_width
45
+ else
46
+ final << "\n#{codes}"
47
+ final << token
48
+ width = token_width
49
+ end
50
+ end
51
+ end
52
+ final.join
53
+ end
54
+ end
55
+ end
56
+ end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cli-ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Burke Libbey
8
8
  - Julian Nadeau
9
9
  - Lisa Ugray
10
- autorequire:
10
+ autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2019-02-27 00:00:00.000000000 Z
13
+ date: 2021-04-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '10.0'
21
+ version: '13.0'
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '10.0'
28
+ version: '13.0'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: minitest
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -49,23 +49,20 @@ executables: []
49
49
  extensions: []
50
50
  extra_rdoc_files: []
51
51
  files:
52
- - ".gitignore"
53
- - ".rubocop.yml"
54
- - ".travis.yml"
55
- - Gemfile
56
52
  - LICENSE.txt
57
53
  - README.md
58
- - Rakefile
59
- - bin/console
60
- - cli-ui.gemspec
61
- - dev.yml
62
54
  - lib/cli/ui.rb
63
55
  - lib/cli/ui/ansi.rb
64
- - lib/cli/ui/box.rb
65
56
  - lib/cli/ui/color.rb
66
57
  - lib/cli/ui/formatter.rb
67
58
  - lib/cli/ui/frame.rb
59
+ - lib/cli/ui/frame/frame_stack.rb
60
+ - lib/cli/ui/frame/frame_style.rb
61
+ - lib/cli/ui/frame/frame_style/box.rb
62
+ - lib/cli/ui/frame/frame_style/bracket.rb
68
63
  - lib/cli/ui/glyph.rb
64
+ - lib/cli/ui/os.rb
65
+ - lib/cli/ui/printer.rb
69
66
  - lib/cli/ui/progress.rb
70
67
  - lib/cli/ui/prompt.rb
71
68
  - lib/cli/ui/prompt/interactive_options.rb
@@ -77,11 +74,15 @@ files:
77
74
  - lib/cli/ui/terminal.rb
78
75
  - lib/cli/ui/truncater.rb
79
76
  - lib/cli/ui/version.rb
77
+ - lib/cli/ui/widgets.rb
78
+ - lib/cli/ui/widgets/base.rb
79
+ - lib/cli/ui/widgets/status.rb
80
+ - lib/cli/ui/wrap.rb
80
81
  homepage: https://github.com/shopify/cli-ui
81
82
  licenses:
82
83
  - MIT
83
84
  metadata: {}
84
- post_install_message:
85
+ post_install_message:
85
86
  rdoc_options: []
86
87
  require_paths:
87
88
  - lib
@@ -97,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
98
  version: '0'
98
99
  requirements: []
99
100
  rubygems_version: 3.0.2
100
- signing_key:
101
+ signing_key:
101
102
  specification_version: 4
102
103
  summary: Terminal UI framework
103
104
  test_files: []
data/.gitignore DELETED
@@ -1,15 +0,0 @@
1
- Gemfile.lock
2
- *.gem
3
- build
4
- .vagrant
5
- .DS_Store
6
- .bundle
7
-
8
- .starscope.db
9
- cscope.out
10
- tags
11
-
12
- .byebug_history
13
-
14
- .rubocop-*
15
- doc
data/.rubocop.yml DELETED
@@ -1,17 +0,0 @@
1
- inherit_from:
2
- - http://shopify.github.io/ruby-style-guide/rubocop.yml
3
-
4
- AllCops:
5
- TargetRubyVersion: 2.1
6
-
7
- # This doesn't take into account retrying from an exception
8
- Lint/HandleExceptions:
9
- Enabled: false
10
-
11
- # allow String.new to create mutable strings
12
- Style/EmptyLiteral:
13
- Enabled: false
14
-
15
- # allow the use of globals which makes sense in a CLI app like this
16
- Style/GlobalVars:
17
- Enabled: false
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.3.3
5
- before_install: gem install bundler -v 1.15.0
data/Gemfile DELETED
@@ -1,16 +0,0 @@
1
- # NOTE: These are development-only dependencies
2
- source "https://rubygems.org"
3
-
4
- gemspec
5
-
6
- group :development, :test do
7
- gem 'rubocop'
8
- gem 'byebug'
9
- gem 'method_source'
10
- end
11
-
12
- group :test do
13
- gem 'mocha', require: false
14
- gem 'minitest', '>= 5.0.0', require: false
15
- gem 'minitest-reporters', require: false
16
- end
data/Rakefile DELETED
@@ -1,20 +0,0 @@
1
- $LOAD_PATH.unshift(File.expand_path('../lib', __FILE__))
2
- require 'cli/ui'
3
- require 'rake/testtask'
4
- require 'rubocop/rake_task'
5
- require 'bundler/gem_tasks'
6
-
7
- TEST_ROOT = File.expand_path('../test', __FILE__)
8
-
9
- Rake::TestTask.new do |t|
10
- t.libs += ["test"]
11
- t.test_files = FileList[File.join(TEST_ROOT, '**', '*_test.rb')]
12
- t.verbose = false
13
- t.warning = false
14
- end
15
-
16
- RuboCop::RakeTask.new(:style) do |t|
17
- t.options = ['--display-cop-names']
18
- end
19
-
20
- task default: [:test]
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "cli/ui"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/cli-ui.gemspec DELETED
@@ -1,27 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path("../lib", __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "cli/ui/version"
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "cli-ui"
8
- spec.version = CLI::UI::VERSION
9
- spec.authors = ["Burke Libbey", "Julian Nadeau", "Lisa Ugray"]
10
- spec.email = ["burke.libbey@shopify.com", "julian.nadeau@shopify.com", "lisa.ugray@shopify.com"]
11
-
12
- spec.summary = 'Terminal UI framework'
13
- spec.description = 'Terminal UI framework'
14
- spec.homepage = "https://github.com/shopify/cli-ui"
15
- spec.license = "MIT"
16
-
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
- f.match(%r{^(test|spec|features)/})
19
- end
20
- spec.bindir = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ["lib"]
23
-
24
- # spec.add_development_dependency "bundler", "~> 2.0"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "minitest", "~> 5.0"
27
- end
data/dev.yml DELETED
@@ -1,14 +0,0 @@
1
- up:
2
- - ruby: 2.3.3
3
- - bundler
4
-
5
- commands:
6
- test:
7
- run: |
8
- if [ "$#" -eq 1 ] && [[ -f $1 ]];
9
- then
10
- rake test TEST=$1
11
- else
12
- rake test $@
13
- fi
14
- style: "bundle exec rubocop -D"
data/lib/cli/ui/box.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'cli/ui'
2
-
3
- module CLI
4
- module UI
5
- module Box
6
- module Heavy
7
- VERT = '┃'
8
- HORZ = '━'
9
- DIV = "┣"
10
- TL = '┏'
11
- BL = '┗'
12
- end
13
- end
14
- end
15
- end