rfix 1.4.1 → 2.0.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.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/exe/rfix +78 -34
  3. data/lib/rfix.rb +17 -28
  4. data/lib/rfix/branch.rb +3 -25
  5. data/lib/rfix/branch/base.rb +27 -0
  6. data/lib/rfix/branch/head.rb +15 -0
  7. data/lib/rfix/branch/main.rb +33 -0
  8. data/lib/rfix/branch/name.rb +21 -0
  9. data/lib/rfix/branch/reference.rb +15 -0
  10. data/lib/rfix/branch/upstream.rb +17 -0
  11. data/lib/rfix/cli/command.rb +19 -0
  12. data/lib/rfix/cli/command/base.rb +61 -0
  13. data/lib/rfix/cli/command/branch.rb +13 -0
  14. data/lib/rfix/cli/command/config.rb +22 -0
  15. data/lib/rfix/cli/command/extension.rb +25 -0
  16. data/lib/rfix/cli/command/help.rb +11 -0
  17. data/lib/rfix/cli/command/info.rb +11 -0
  18. data/lib/rfix/cli/command/lint.rb +17 -0
  19. data/lib/rfix/cli/command/local.rb +11 -0
  20. data/lib/rfix/cli/command/origin.rb +11 -0
  21. data/lib/rfix/cli/command/setup.rb +11 -0
  22. data/lib/rfix/error.rb +5 -1
  23. data/lib/rfix/extension/offense.rb +79 -0
  24. data/lib/rfix/extension/pastel.rb +11 -0
  25. data/lib/rfix/extension/string.rb +12 -0
  26. data/lib/rfix/extension/strings.rb +9 -0
  27. data/lib/rfix/file.rb +6 -41
  28. data/lib/rfix/file/base.rb +73 -0
  29. data/lib/rfix/file/deleted.rb +17 -0
  30. data/lib/rfix/file/ignored.rb +17 -0
  31. data/lib/rfix/file/tracked.rb +42 -0
  32. data/lib/rfix/file/untracked.rb +20 -0
  33. data/lib/rfix/formatter.rb +125 -86
  34. data/lib/rfix/highlighter.rb +118 -0
  35. data/lib/rfix/indicator.rb +19 -0
  36. data/lib/rfix/log.rb +12 -121
  37. data/lib/rfix/rake/gemfile.rb +111 -0
  38. data/lib/rfix/rake/paths.rb +25 -23
  39. data/lib/rfix/rake/support.rb +72 -57
  40. data/lib/rfix/repository.rb +114 -164
  41. data/lib/rfix/types.rb +52 -0
  42. data/lib/rfix/version.rb +1 -1
  43. data/rfix.gemspec +28 -38
  44. data/vendor/dry-cli/CHANGELOG.md +191 -0
  45. data/vendor/dry-cli/CODEOWNERS +1 -0
  46. data/vendor/dry-cli/CODE_OF_CONDUCT.md +13 -0
  47. data/vendor/dry-cli/CONTRIBUTING.md +29 -0
  48. data/vendor/dry-cli/Gemfile +14 -0
  49. data/vendor/dry-cli/Gemfile.devtools +18 -0
  50. data/vendor/dry-cli/LICENSE +20 -0
  51. data/vendor/dry-cli/README.md +29 -0
  52. data/vendor/dry-cli/Rakefile +13 -0
  53. data/vendor/dry-cli/bin/console +15 -0
  54. data/vendor/dry-cli/bin/setup +8 -0
  55. data/vendor/dry-cli/changelog.yml +97 -0
  56. data/vendor/dry-cli/docsite/source/arguments.html.md +57 -0
  57. data/vendor/dry-cli/docsite/source/callbacks.html.md +51 -0
  58. data/vendor/dry-cli/docsite/source/commands-with-subcommands-and-params.md +86 -0
  59. data/vendor/dry-cli/docsite/source/commands.html.md +41 -0
  60. data/vendor/dry-cli/docsite/source/index.html.md +302 -0
  61. data/vendor/dry-cli/docsite/source/options.html.md +51 -0
  62. data/vendor/dry-cli/docsite/source/subcommands.html.md +38 -0
  63. data/vendor/dry-cli/docsite/source/variadic-arguments.html.md +45 -0
  64. data/vendor/dry-cli/dry-cli.gemspec +36 -0
  65. data/vendor/dry-cli/lib/dry/cli.rb +224 -0
  66. data/vendor/dry-cli/lib/dry/cli/banner.rb +135 -0
  67. data/vendor/dry-cli/lib/dry/cli/command.rb +387 -0
  68. data/vendor/dry-cli/lib/dry/cli/command_registry.rb +253 -0
  69. data/vendor/dry-cli/lib/dry/cli/errors.rb +37 -0
  70. data/vendor/dry-cli/lib/dry/cli/inflector.rb +17 -0
  71. data/vendor/dry-cli/lib/dry/cli/inline.rb +75 -0
  72. data/vendor/dry-cli/lib/dry/cli/option.rb +131 -0
  73. data/vendor/dry-cli/lib/dry/cli/parser.rb +138 -0
  74. data/vendor/dry-cli/lib/dry/cli/program_name.rb +21 -0
  75. data/vendor/dry-cli/lib/dry/cli/registry.rb +338 -0
  76. data/vendor/dry-cli/lib/dry/cli/usage.rb +94 -0
  77. data/vendor/dry-cli/lib/dry/cli/version.rb +8 -0
  78. data/vendor/dry-cli/project.yml +13 -0
  79. data/vendor/dry-cli/spec/integration/commands_spec.rb +14 -0
  80. data/vendor/dry-cli/spec/integration/inherited_commands_spec.rb +24 -0
  81. data/vendor/dry-cli/spec/integration/inline_spec.rb +43 -0
  82. data/vendor/dry-cli/spec/integration/processes_errors_spec.rb +29 -0
  83. data/vendor/dry-cli/spec/integration/rendering_spec.rb +31 -0
  84. data/vendor/dry-cli/spec/integration/single_command_spec.rb +81 -0
  85. data/vendor/dry-cli/spec/integration/subcommands_spec.rb +60 -0
  86. data/vendor/dry-cli/spec/integration/third_party_gems_spec.rb +18 -0
  87. data/vendor/dry-cli/spec/spec_helper.rb +15 -0
  88. data/vendor/dry-cli/spec/support/coverage.rb +15 -0
  89. data/vendor/dry-cli/spec/support/files.rb +13 -0
  90. data/vendor/dry-cli/spec/support/fixtures/based +65 -0
  91. data/vendor/dry-cli/spec/support/fixtures/baz +9 -0
  92. data/vendor/dry-cli/spec/support/fixtures/baz_command.rb +19 -0
  93. data/vendor/dry-cli/spec/support/fixtures/foo +588 -0
  94. data/vendor/dry-cli/spec/support/fixtures/infinites +31 -0
  95. data/vendor/dry-cli/spec/support/fixtures/inline +20 -0
  96. data/vendor/dry-cli/spec/support/fixtures/registry.rb +15 -0
  97. data/vendor/dry-cli/spec/support/fixtures/shared_commands.rb +596 -0
  98. data/vendor/dry-cli/spec/support/fixtures/with_block.rb +86 -0
  99. data/vendor/dry-cli/spec/support/fixtures/with_registry.rb +90 -0
  100. data/vendor/dry-cli/spec/support/fixtures/with_zero_arity_block.rb +87 -0
  101. data/vendor/dry-cli/spec/support/helpers.rb +37 -0
  102. data/vendor/dry-cli/spec/support/path.rb +24 -0
  103. data/vendor/dry-cli/spec/support/rspec.rb +26 -0
  104. data/vendor/dry-cli/spec/support/rspec_options.rb +16 -0
  105. data/vendor/dry-cli/spec/support/shared_examples/commands.rb +300 -0
  106. data/vendor/dry-cli/spec/support/shared_examples/inherited_commands.rb +197 -0
  107. data/vendor/dry-cli/spec/support/shared_examples/rendering.rb +181 -0
  108. data/vendor/dry-cli/spec/support/shared_examples/subcommands.rb +226 -0
  109. data/vendor/dry-cli/spec/support/shared_examples/third_party_gems.rb +49 -0
  110. data/vendor/dry-cli/spec/support/warnings.rb +10 -0
  111. data/vendor/dry-cli/spec/unit/dry/cli/cli_spec.rb +123 -0
  112. data/vendor/dry-cli/spec/unit/dry/cli/inflector_spec.rb +26 -0
  113. data/vendor/dry-cli/spec/unit/dry/cli/registry_spec.rb +78 -0
  114. data/vendor/dry-cli/spec/unit/dry/cli/version_spec.rb +7 -0
  115. data/vendor/strings-ansi/CHANGELOG.md +24 -0
  116. data/vendor/strings-ansi/CODE_OF_CONDUCT.md +74 -0
  117. data/vendor/strings-ansi/Gemfile +11 -0
  118. data/{LICENSE.txt → vendor/strings-ansi/LICENSE.txt} +1 -1
  119. data/vendor/strings-ansi/README.md +155 -0
  120. data/vendor/strings-ansi/Rakefile +8 -0
  121. data/vendor/strings-ansi/appveyor.yml +32 -0
  122. data/vendor/strings-ansi/bin/console +14 -0
  123. data/vendor/strings-ansi/bin/setup +8 -0
  124. data/vendor/strings-ansi/lib/strings-ansi.rb +1 -0
  125. data/vendor/strings-ansi/lib/strings/ansi.rb +84 -0
  126. data/vendor/strings-ansi/lib/strings/ansi/extensions.rb +23 -0
  127. data/vendor/strings-ansi/lib/strings/ansi/version.rb +7 -0
  128. data/vendor/strings-ansi/spec/fixtures/ansi_codes.yaml +194 -0
  129. data/vendor/strings-ansi/spec/spec_helper.rb +51 -0
  130. data/vendor/strings-ansi/spec/unit/ansi_spec.rb +15 -0
  131. data/vendor/strings-ansi/spec/unit/extensions_spec.rb +19 -0
  132. data/vendor/strings-ansi/spec/unit/only_ansi_spec.rb +36 -0
  133. data/vendor/strings-ansi/spec/unit/sanitize_spec.rb +53 -0
  134. data/vendor/strings-ansi/strings-ansi.gemspec +34 -0
  135. data/vendor/strings-ansi/tasks/console.rake +11 -0
  136. data/vendor/strings-ansi/tasks/coverage.rake +11 -0
  137. data/vendor/strings-ansi/tasks/spec.rake +29 -0
  138. metadata +274 -188
  139. data/.github/workflows/main.yml +0 -26
  140. data/.gitignore +0 -43
  141. data/.rspec +0 -2
  142. data/.rubocop.yml +0 -87
  143. data/.travis.yml +0 -35
  144. data/Gemfile +0 -2
  145. data/Gemfile.base +0 -14
  146. data/Gemfile.base.lock +0 -172
  147. data/Gemfile.lock +0 -188
  148. data/Guardfile +0 -16
  149. data/Makefile +0 -12
  150. data/README.md +0 -85
  151. data/Rakefile +0 -31
  152. data/bin/bundle +0 -114
  153. data/bin/console +0 -29
  154. data/bin/guard +0 -29
  155. data/bin/rake +0 -29
  156. data/bin/rfix +0 -29
  157. data/bin/rspec +0 -29
  158. data/bin/setup +0 -29
  159. data/ci/Gemfile.rubocop-0.80 +0 -2
  160. data/ci/Gemfile.rubocop-0.80.lock +0 -170
  161. data/ci/Gemfile.rubocop-0.81 +0 -2
  162. data/ci/Gemfile.rubocop-0.81.lock +0 -170
  163. data/ci/Gemfile.rubocop-0.82 +0 -2
  164. data/ci/Gemfile.rubocop-0.82.lock +0 -170
  165. data/ci/Gemfile.rubocop-0.83 +0 -2
  166. data/ci/Gemfile.rubocop-0.83.lock +0 -168
  167. data/ci/Gemfile.rubocop-0.84 +0 -2
  168. data/ci/Gemfile.rubocop-0.84.lock +0 -171
  169. data/ci/Gemfile.rubocop-0.85 +0 -2
  170. data/ci/Gemfile.rubocop-0.85.1 +0 -2
  171. data/ci/Gemfile.rubocop-0.85.1.lock +0 -173
  172. data/ci/Gemfile.rubocop-0.85.lock +0 -173
  173. data/lib/rfix/box.rb +0 -112
  174. data/lib/rfix/branches/base.rb +0 -15
  175. data/lib/rfix/branches/head.rb +0 -13
  176. data/lib/rfix/branches/main.rb +0 -28
  177. data/lib/rfix/branches/name.rb +0 -23
  178. data/lib/rfix/branches/reference.rb +0 -21
  179. data/lib/rfix/branches/upstream.rb +0 -13
  180. data/lib/rfix/cmd.rb +0 -39
  181. data/lib/rfix/commands/branch.rb +0 -15
  182. data/lib/rfix/commands/extensions/options.rb +0 -8
  183. data/lib/rfix/commands/help.rb +0 -7
  184. data/lib/rfix/commands/helper/args.rb +0 -141
  185. data/lib/rfix/commands/helper/help.rb +0 -6
  186. data/lib/rfix/commands/helper/loader.rb +0 -6
  187. data/lib/rfix/commands/helper/option.rb +0 -0
  188. data/lib/rfix/commands/helper/params.rb +0 -0
  189. data/lib/rfix/commands/helper/rubocop.rb +0 -17
  190. data/lib/rfix/commands/info.rb +0 -30
  191. data/lib/rfix/commands/lint.rb +0 -22
  192. data/lib/rfix/commands/local.rb +0 -12
  193. data/lib/rfix/commands/origin.rb +0 -19
  194. data/lib/rfix/commands/setup.rb +0 -29
  195. data/lib/rfix/commands/welcome.rb +0 -24
  196. data/lib/rfix/deleted.rb +0 -13
  197. data/lib/rfix/extensions/extensions.rb +0 -18
  198. data/lib/rfix/extensions/offense.rb +0 -78
  199. data/lib/rfix/extensions/string.rb +0 -8
  200. data/lib/rfix/file_cache.rb +0 -59
  201. data/lib/rfix/git_helper.rb +0 -59
  202. data/lib/rfix/indentation.rb +0 -39
  203. data/lib/rfix/loader/bundler.rb +0 -37
  204. data/lib/rfix/loader/env.rb +0 -33
  205. data/lib/rfix/loader/spec.rb +0 -41
  206. data/lib/rfix/no_file.rb +0 -13
  207. data/lib/rfix/rfix.rb +0 -34
  208. data/lib/rfix/tracked.rb +0 -72
  209. data/lib/rfix/tracked_file.rb +0 -16
  210. data/lib/rfix/untracked.rb +0 -13
  211. data/resources/ps.png +0 -0
  212. data/tasks/bump.rake +0 -11
  213. data/tasks/bundle.rake +0 -17
  214. data/tasks/complex.rake +0 -54
  215. data/tasks/execute.rake +0 -38
  216. data/tasks/libgit2.rake +0 -33
  217. data/tasks/simple.rake +0 -62
  218. data/tasks/travis.rake +0 -74
  219. data/tasks/vendor.rake +0 -34
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ FileList['tasks/**/*.rake'].each(&method(:import))
4
+
5
+ desc 'Run all specs'
6
+ task ci: %w[ spec ]
7
+
8
+ task default: :spec
@@ -0,0 +1,32 @@
1
+ ---
2
+ skip_commits:
3
+ files:
4
+ - "bin/**"
5
+ - "*.md"
6
+ install:
7
+ - SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
8
+ - gem install bundler -v '< 2.0'
9
+ - bundle install
10
+ before_test:
11
+ - ruby -v
12
+ - gem -v
13
+ - bundle -v
14
+ build: off
15
+ test_script:
16
+ - bundle exec rake ci
17
+ environment:
18
+ matrix:
19
+ - ruby_version: "200"
20
+ - ruby_version: "200-x64"
21
+ - ruby_version: "21"
22
+ - ruby_version: "21-x64"
23
+ - ruby_version: "22"
24
+ - ruby_version: "22-x64"
25
+ - ruby_version: "23"
26
+ - ruby_version: "23-x64"
27
+ - ruby_version: "24"
28
+ - ruby_version: "24-x64"
29
+ - ruby_version: "25"
30
+ - ruby_version: "25-x64"
31
+ - ruby_version: "26"
32
+ - ruby_version: "26-x64"
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "strings/ansi"
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__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1 @@
1
+ require_relative "strings/ansi"
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "ansi/version"
4
+
5
+ module Strings
6
+ # Helper functions for handling ANSI escape sequences
7
+ module ANSI
8
+ # The control sequence indicator
9
+ CSI = "\033"
10
+
11
+ # The code for reseting styling
12
+ RESET = "\e[0m"
13
+
14
+ # The regex to match ANSI codes
15
+ ANSI_MATCHER = %r{
16
+ (?>\033(
17
+ \[[\[?>!]?\d*(;\d+)*[ ]?[a-zA-Z~@$^\]_\{\\] # graphics
18
+ |
19
+ \#?\d # cursor modes
20
+ |
21
+ [)(%+\-*/. ](\d|[a-zA-Z@=%]|) # character sets
22
+ |
23
+ O[p-xA-Z] # special keys
24
+ |
25
+ [a-zA-Z=><~\}|] # cursor movement
26
+ |
27
+ \]8;[^;]*;.*?(\033\\|\07) # hyperlink
28
+ ))
29
+ }x.freeze
30
+
31
+ # Return a copy of string with ANSI characters removed
32
+ #
33
+ # @param [String] string
34
+ #
35
+ # @example
36
+ # Strings::ANSI.sanitize("\e[33mfoo\[e0m")
37
+ # # => "foo"
38
+ #
39
+ # @return [String]
40
+ #
41
+ # @api public
42
+ def sanitize(string)
43
+ string.gsub(ANSI_MATCHER, "")
44
+ end
45
+ module_function :sanitize
46
+
47
+ # Check if string contains ANSI codes
48
+ #
49
+ # @param [String] string
50
+ # the string to check
51
+ #
52
+ # @example
53
+ # Strings::ANSI.ansi?("\e[33mfoo\[e0m")
54
+ # # => true
55
+ #
56
+ # @return [Boolean]
57
+ #
58
+ # @api public
59
+ def ansi?(string)
60
+ !!(string =~ ANSI_MATCHER)
61
+ end
62
+ module_function :ansi?
63
+
64
+ # Check if string contains only ANSI codes
65
+ #
66
+ # @param [String] string
67
+ # the string to check
68
+ #
69
+ # @example
70
+ # Strings::ANSI.only_ansi?("\e[33mfoo\[e0m")
71
+ # # => false
72
+ #
73
+ # Strings::ANSI.only_ansi?("\e[33m")
74
+ # # => false
75
+ #
76
+ # @return [Boolean]
77
+ #
78
+ # @api public
79
+ def only_ansi?(string)
80
+ !!(string =~ /\A(#{ANSI_MATCHER})+\z/)
81
+ end
82
+ module_function :only_ansi?
83
+ end # ANSI
84
+ end # Strings
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../ansi"
4
+
5
+ module Strings
6
+ module ANSI
7
+ module Extensions
8
+ refine String do
9
+ def ansi?
10
+ ANSI.ansi?(self)
11
+ end
12
+
13
+ def only_ansi?
14
+ ANSI.only_ansi?(self)
15
+ end
16
+
17
+ def sanitize
18
+ ANSI.sanitize(self)
19
+ end
20
+ end
21
+ end # Extensions
22
+ end # ANSI
23
+ end # Strings
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Strings
4
+ module ANSI
5
+ VERSION = "0.2.0"
6
+ end # ANSI
7
+ end # Strings
@@ -0,0 +1,194 @@
1
+ ---
2
+ [
3
+ "\eA", # Cursor up
4
+ "\eB", # Cursor down
5
+ "\eC", # Cursor right
6
+ "\eD", # Cursor left
7
+ "\eF", # Special graphics character set
8
+ "\eG", # Select ASCII character set
9
+ "\eH", # Cursor to home
10
+ "\eI", # Reverse line feed
11
+ "\eJ", # Erase to end of screen
12
+ "\eK", # Erase to end of line
13
+ "\eZ", # Identify what the terminal is
14
+ "\e=", # Enter alternate keypad mode
15
+ "\e>", # Exit alternate keypad mode
16
+ "\e1", # Graphics processor on
17
+ "\e2", # Graphics processor off
18
+ "\e<", # Enter ANSI mode
19
+ # Movement
20
+ "\e[12A", # Cursor up 12 lines
21
+ "\e[12B", # Cursor down 12 lines
22
+ "\e[12C", # Cursor forward 12 characters (right)
23
+ "\e[12D", # Cursor backward 12 characters (left)
24
+ "\e[11;22H", # Direct cursor addressing, where 11 is line, 22 is column
25
+ "\e[11;22f", # Direct cursor addressing, where 11 is line, 22 is column
26
+ "\e F", # Send as 7-bit controls
27
+ "\e F", # Send as 7-bit controls
28
+ "\e L", # Set ANSI conformance level 1
29
+ "\e M", # Set ANSI conformance level 2
30
+ "\e N", # Set ANSI conformance level 3
31
+ "\eD", # Index
32
+ "\eM", # Reverse index
33
+ "\e6", # Back Index, VT420 and up.
34
+ "\e7", # Save cursor and attributes
35
+ "\e8", # Restore cursor and attributes
36
+ "\e9", # Forward Index, VT420 and up.
37
+ "\e#3", # Change this line to double-height top half
38
+ "\e#4", # Change this line to double-height bottom half
39
+ "\e#5", # Change this line to single-width single-height
40
+ "\e#6", # Change this line to double-width single-height
41
+ "\e[s", # Save current cursor position
42
+ "\e[u", # Restores cursor position
43
+ "\e[1 u", # Set margin-bell to be off
44
+ "\e[4 u", # Set margin-bell to low volume
45
+ "\e[8 u", # Set margin-bell to high volume
46
+ "\e[1;32;101m", # Set display attributes
47
+ "\e[0m", # All attributes off
48
+ "\e[1m", # Bold on
49
+ "\e[2m", # Turn low intensity mode on
50
+ "\e[4m", # Turn underline mode on
51
+ "\e[5m", # Turn blinking mode on
52
+ "\e[7m", # Turn reverse video on
53
+ "\e[8m", # Turn invisible text mode on
54
+ # Clearing
55
+ "\e[K", # Erase from cursor to end of line
56
+ "\e[0K", # Erase from cursor to end of line
57
+ "\e[?0K", # Erase from cursor to end of line, VT220
58
+ "\e[1K", # Erase from beginning of line to cursor
59
+ "\e[2K", # Erase line containing cursor
60
+ "\e[J", # Erase from cursor to end of screen
61
+ "\e[0J", # Erase from cursor to end of screen
62
+ "\e[2J", # Erase entire screen
63
+ "\e[1;2;3q", # Load programmable LEDs
64
+ # # Character sets
65
+ "\en", # Invoke the G2 Character Set as GL
66
+ "\eo", # Invoke the G3 Character Set as GL
67
+ "\e~", # Invoke the G1 Character Set
68
+ "\e}", # Invoke the G2 Character Set
69
+ "\e|", # Invoke the G3 Character Set
70
+ "\e%@", # Select default character set
71
+ "\e%G", # Select UTF-8 character set
72
+ "\e(A", # Set United Kingdom G0 character set
73
+ "\e(B", # Set United States G0 character set
74
+ "\e(C", # Set Finnish G0 character set
75
+ "\e(E", # Set Norwegian/Danish G0 character set
76
+ "\e(H", # Set Swedish G0 character set
77
+ "\e(K", # Set German G0 character set
78
+ "\e(Q", # Set French Canadian G0 character set
79
+ "\e(f", # Set French G0 character set
80
+ "\e(%", # Set Hebrew G0 character set
81
+ "\e(=", # Set Swiss G0 character set
82
+ "\e(0", # Set G0 special chars. & line set
83
+ "\e(1", # Set G0 alternate character ROM
84
+ "\e(2", # Set G0 alt char ROM and spec. graphics
85
+ "\e)A", # Set United Kingdom G1 character set
86
+ "\e)B", # Set United States G1 character set
87
+ "\e)C", # Set Finnish G1 character set
88
+ "\e)E", # Set Norwegian/Danish G1 character set
89
+ "\e)H", # Set Swedish G1 character set
90
+ "\e)K", # Set German G1 character set
91
+ "\e)Q", # Set French Canadian G1 character set
92
+ "\e)f", # Set French G1 character set
93
+ "\e)%", # Set Hebrew G1 character set
94
+ "\e)=", # Set Swiss G1 character set
95
+ "\e)0", # Set G1 special chars. & line set
96
+ "\e)1", # Set G1 alternate character ROM
97
+ "\e)2", # Set G1 alt char ROM and spec. graphics
98
+ "\e*A", # Set United Kingdom G2 character set
99
+ "\e+A", # Set United Kingdom G3 character set
100
+ "\e-A", # Set United Kingdom G1 character set
101
+ "\e.A", # Set United Kingdom G2 character set
102
+ "\e/A", # Set United Kingdom G3 character set
103
+ "\eN", # Set single shift 2
104
+ "\eH", # Set tab at current column
105
+ "\e[g", # Clear tab at current column
106
+ "\e[0g", # Clear a tab at the current column
107
+ "\e[3g", # Clear all tabs
108
+ # Modes
109
+ "\e[20h", # New line
110
+ "\e[?1h", # Cursor key Application
111
+ "\e[?3h", # Column mode 132 col
112
+ "\e[?4h", # Scrolling Smooth
113
+ "\e[?5h", # Screen mode Reverse
114
+ "\e[?6h", # Origin mode Relative
115
+ "\e[?7h", # Wraparound On
116
+ "\e[?8h", # Autorepeat On
117
+ "\e[?9h", # Interface On
118
+ "\e[20l", # Line feed
119
+ "\e[?1l", # Cursor key Cursor
120
+ "\e[?2l", # VT52
121
+ "\e[?3l", # Column mode 80 col
122
+ "\e[?4l", # Scrolling Jump
123
+ "\e[?5l", # Screen mode Normal
124
+ "\e[?6l", # Origin mode Absolute
125
+ "\e[?7l", # Wraparound Off
126
+ "\e[?8l", # Autorepeat Off
127
+ "\e[?9l", # Interface Off
128
+ "\e[?25h", # Make cursor visible
129
+ "\e[?25l", # Make cursor invisible
130
+ # Reports
131
+ "\e[6n", # Cursor position report
132
+ "\e[1;2R", # (response; 1=line; 2=column)
133
+ "\e[5n", # Status report
134
+ "\e[>0n", # Disable keyboard key modifiers
135
+ "\e[>1n", # Disable cursor key modifiers
136
+ "\e[>2n", # Disable function key modifiers
137
+ "\e[c", # (response; terminal Ok)
138
+ "\e[0c", # (response; teminal not Ok)
139
+ "\e[?1;2c", # response; where Ps is option present:]
140
+ "\ec", # Causes power-up reset routine to be executed
141
+ "\e#8", # Fill screen with "E"
142
+ "\e[2;1y", # Confidence power up test
143
+ "\e[2;2y", # Confidence loopback test
144
+ "\e[2;9y", # Repeat power up test
145
+ "\e[2;10y", # Repeat loopback test
146
+ "\e[!p", # Soft terminal reset, VT220 and up.
147
+ "\e[>0p", # Set to never hide the pointer
148
+ "\e[>1p", # Set to hide if the mouse tracking mode is not enabled
149
+ "\e[>2p", # Set to always hide the pointer, except when leaving the window
150
+ "\e[>3p", # Set to always hide the pointer
151
+ # Key editing
152
+ "\e[1~", # Home
153
+ "\e[2~", # Insert
154
+ "\e[3~", # Delete
155
+ "\e[4~", # End
156
+ "\e[5~", # PageUp
157
+ "\e[6~", # PageDown
158
+ # Special keys
159
+ "\eOP", # F1
160
+ "\eOQ", # F2
161
+ "\eOR", # F3
162
+ "\eOS", # F4
163
+ "\eOp", # Keypad 0
164
+ "\eOq", # Keypad 1
165
+ "\eOr", # Keypad 2
166
+ "\eOs", # Keypad 3
167
+ "\eOt", # Keypad 4
168
+ "\eOA", # Up arrow
169
+ "\eOB", # Down arrow
170
+ "\eOC", # Right arrow
171
+ "\eOD", # Left arrow
172
+ # Special keys URXVT
173
+ "\e[21~", # F0
174
+ "\e[11~", # F1
175
+ "\e[12~", # F2
176
+ "\e[13~", # F3
177
+ "\e[23$", # F21
178
+ "\e[11^", # F23
179
+ "\e[23@", # F43
180
+ # Special keys SGI consoles
181
+ "\e[@", # F41
182
+ "\e[\\", # F43
183
+ "\e[]", # F44
184
+ "\e[_", # F46
185
+ "\e[{", # F48
186
+ # Special keys XTerm
187
+ "\e[[A", # F1
188
+ "\e[[B", # F2
189
+ "\e[[C", # F3
190
+ "\e[[D", # F4
191
+ "\e[[E", # F5
192
+ "\e[15;2~", # F17
193
+ "\e[17;2~" # F18
194
+ ]
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ if ENV["COVERAGE"] == "true"
4
+ require "simplecov"
5
+ require "coveralls"
6
+
7
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
8
+ SimpleCov::Formatter::HTMLFormatter,
9
+ Coveralls::SimpleCov::Formatter
10
+ ])
11
+
12
+ SimpleCov.start do
13
+ command_name "spec"
14
+ add_filter "spec"
15
+ end
16
+ end
17
+
18
+ require "bundler/setup"
19
+ require "strings-ansi"
20
+ require "yaml"
21
+
22
+ module TestHelpers
23
+ module Paths
24
+ def gem_root
25
+ ::File.dirname(__dir__)
26
+ end
27
+
28
+ def dir_path(*args)
29
+ path = ::File.join(gem_root, *args)
30
+ FileUtils.mkdir_p(path) unless ::File.exist?(path)
31
+ ::File.realpath(path)
32
+ end
33
+
34
+ def fixtures_path(*args)
35
+ ::File.expand_path(::File.join(dir_path("spec/fixtures"), *args))
36
+ end
37
+ end
38
+ end
39
+
40
+ RSpec.configure do |config|
41
+ config.extend(TestHelpers::Paths)
42
+ # Enable flags like --only-failures and --next-failure
43
+ config.example_status_persistence_file_path = ".rspec_status"
44
+
45
+ # Disable RSpec exposing methods globally on `Module` and `main`
46
+ config.disable_monkey_patching!
47
+
48
+ config.expect_with :rspec do |c|
49
+ c.syntax = :expect
50
+ end
51
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Strings::ANSI, "#ansi?" do
4
+ it "does't report empty string" do
5
+ expect(Strings::ANSI.ansi?("")).to eq(false)
6
+ end
7
+
8
+ it "reports non-ansi string correctly" do
9
+ expect(Strings::ANSI.ansi?("foo")).to eq(false)
10
+ end
11
+
12
+ it "checks if code is ansi" do
13
+ expect(Strings::ANSI.ansi?("\e[33;44mfoo\e[0m")).to eq(true)
14
+ end
15
+ end