pry-theme 0.0.4.pre → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +16 -0
- data/README.md +21 -9
- data/lib/pry-theme/commands.rb +87 -19
- data/lib/pry-theme/theme.rb +1 -1
- data/lib/pry-theme/uninstaller.rb +20 -0
- data/lib/pry-theme/version.rb +1 -1
- data/lib/pry-theme/when_started_hook.rb +1 -1
- data/lib/pry-theme.rb +30 -18
- data/lib/rubygems_plugin.rb +4 -0
- metadata +7 -5
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,22 @@
|
|
1
1
|
Pry Theme changelog
|
2
2
|
===================
|
3
3
|
|
4
|
+
### v0.0.5.pre (June 29, 2012)
|
5
|
+
|
6
|
+
* Added Ruby 1.8.7, JRuby and Ruby Enterprise Edition support.
|
7
|
+
* Fixed 8-color themes bug. We could not even use them in the previous version;
|
8
|
+
* Added `--test` command, which allows to "test" your theme visually.
|
9
|
+
* Added uninstaller, which basically just asks a user if he or she wants to
|
10
|
+
remove a directory with Pry themes (personally, I hate when software leave
|
11
|
+
their crap).
|
12
|
+
* Slightly improved `help` of `pry-theme` command
|
13
|
+
* Made theme attributes optional. Now, if you are not sure about some parameter
|
14
|
+
in a Pry Theme, you can leave it empty.
|
15
|
+
|
16
|
+
Last but not least:
|
17
|
+
|
18
|
+
* Check out new Wiki! (https://github.com/kyrylo/pry-theme/wiki)
|
19
|
+
|
4
20
|
### v0.0.4.pre (June 28, 2012)
|
5
21
|
|
6
22
|
* Added `--all-colors` and `--color` options for `pry-theme` command;
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
![Pry Theme][logo]
|
2
2
|
|
3
|
-
* [https://github.com/kyrylo/pry-theme/][pt]
|
3
|
+
* Repository: [https://github.com/kyrylo/pry-theme/][pt]
|
4
|
+
* Wiki: [https://github.com/kyrylo/pry-theme/wiki][wiki]
|
4
5
|
|
5
6
|
Description
|
6
7
|
-----------
|
@@ -14,7 +15,7 @@ Installation
|
|
14
15
|
All you need is to install the gem. The `pry-theme` plugin will be detected and
|
15
16
|
used automatically.
|
16
17
|
|
17
|
-
gem install pry-theme
|
18
|
+
gem install pry-theme
|
18
19
|
|
19
20
|
Synopsis
|
20
21
|
--------
|
@@ -46,13 +47,16 @@ fly:
|
|
46
47
|
|
47
48
|
This will switch your current theme to `pry-classic`.
|
48
49
|
|
50
|
+
You can find [more information about CLI in Pry Theme Wiki][cli].
|
51
|
+
|
49
52
|
### Creating themes
|
50
53
|
|
51
|
-
|
54
|
+
Creating new themes isn't hard. [Check out Pry Theme Wiki article on that][new_theme].
|
52
55
|
|
53
56
|
### Adding new themes
|
54
57
|
|
55
|
-
Theme files must have `.prytheme` extension.
|
58
|
+
Theme files must have `.prytheme` extension. Check out [Pry Theme Collection][ptc],
|
59
|
+
if you want to find some themes other than default ones.
|
56
60
|
|
57
61
|
* On GNU/Linux
|
58
62
|
|
@@ -68,20 +72,24 @@ Limitations
|
|
68
72
|
-----------
|
69
73
|
|
70
74
|
Basically, it will run on any terminal that is capable of displaying 256 colors,
|
71
|
-
but with a couple of admonishments.
|
75
|
+
but with a couple of admonishments. They are listed below.
|
72
76
|
|
73
77
|
### OS support
|
74
78
|
|
75
79
|
* GNU/Linux;
|
76
80
|
* Mac OS (I hope so, leastwise);
|
77
81
|
|
78
|
-
I
|
79
|
-
|
80
|
-
|
82
|
+
I hope it runs on Windows too, but I couldn't find any sane terminal, that
|
83
|
+
would support 256 colors. Sorry, Windows guys. Please, file an issue, if you
|
84
|
+
noticed bugs or something.
|
81
85
|
|
82
86
|
### Ruby versions
|
83
87
|
|
84
|
-
*
|
88
|
+
* MRI 1.9.3
|
89
|
+
* MRI 1.9.2
|
90
|
+
* MRI 1.8.7
|
91
|
+
* REE 1.8.7-2012.02
|
92
|
+
* JRuby 1.6.7
|
85
93
|
|
86
94
|
Under the hood
|
87
95
|
--------------
|
@@ -97,3 +105,7 @@ The project uses Zlib License. See LICENSE file for more information.
|
|
97
105
|
[pt]: https://github.com/kyrylo/pry-theme/ "Home page"
|
98
106
|
[logo]: http://img-fotki.yandex.ru/get/5107/98991937.a/0_7c6c8_871a1842_orig "Pry Theme"
|
99
107
|
[pry]: https://github.com/pry/pry/ "Pry's home page"
|
108
|
+
[new_theme]: https://github.com/kyrylo/pry-theme/wiki/Creating-a-New-Theme
|
109
|
+
[cli]: https://github.com/kyrylo/pry-theme/wiki/Pry-Theme-CLI
|
110
|
+
[wiki]: https://github.com/kyrylo/pry-theme/wiki
|
111
|
+
[ptc]: https://github.com/kyrylo/pry-theme-collection
|
data/lib/pry-theme/commands.rb
CHANGED
@@ -4,43 +4,111 @@ module PryTheme
|
|
4
4
|
create_command "pry-theme", "Manage your Pry themes." do
|
5
5
|
|
6
6
|
banner <<-BANNER
|
7
|
-
Usage: pry-theme [OPTIONS]
|
7
|
+
Usage: pry-theme [OPTIONS] [--help]
|
8
8
|
|
9
9
|
Change your theme on the fly.
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
|
11
|
+
pry-theme pry-modern
|
12
|
+
|
13
|
+
Display 8-color palette.
|
14
|
+
|
15
|
+
pry-theme --all-colors 8
|
16
|
+
|
17
|
+
Display Pry Theme code for terminal color 34.
|
18
|
+
|
19
|
+
pry-theme -c 34
|
20
|
+
|
21
|
+
Test your current color theme.
|
22
|
+
|
23
|
+
pry-theme -t
|
24
|
+
|
25
|
+
Wiki: https://github.com/kyrylo/pry-theme/wiki/Pry-Theme-CLI
|
13
26
|
BANNER
|
14
27
|
|
15
28
|
def options(opt)
|
16
29
|
opt.on :a, "all-colors", "Show all available 8/256 colors."
|
17
30
|
opt.on :c, "color", "Show information about a specific color (256)."
|
31
|
+
opt.on :t, "test", "Test your current theme", :argument => false
|
18
32
|
end
|
19
33
|
|
20
34
|
def process
|
21
|
-
return if args.empty?
|
22
|
-
|
23
35
|
if opts.a?
|
24
|
-
|
36
|
+
show_palette_colors
|
25
37
|
elsif opts.c?
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
color = pal.colors.detect { |c| c.term == args[0].to_i }
|
32
|
-
|
33
|
-
if color
|
34
|
-
output.puts color.to_term(pal.notation)
|
35
|
-
end
|
36
|
-
else
|
37
|
-
PryTheme.set_theme(args[0].strip) and output.puts "Using #{ args[0] } theme"
|
38
|
+
show_specific_color
|
39
|
+
elsif opts.t?
|
40
|
+
test_theme
|
41
|
+
elsif args[0] =~ /\A\w+-?\w+\z/
|
42
|
+
switch_to_theme
|
38
43
|
end
|
39
44
|
rescue NoPaletteError => no_palette_error
|
40
45
|
warn no_palette_error
|
41
46
|
rescue NoColorError => no_color_error
|
42
47
|
warn no_color_error
|
43
48
|
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def switch_to_theme
|
53
|
+
PryTheme.set_theme(args[0].strip) and
|
54
|
+
output.puts "Using #{ args[0] } theme"
|
55
|
+
end
|
56
|
+
|
57
|
+
def show_palette_colors
|
58
|
+
output.puts Palette.new(args[0]).to_s
|
59
|
+
end
|
60
|
+
|
61
|
+
def show_specific_color
|
62
|
+
unless args[0] =~ /\A(\d{1,3})\z/ && (0...256).include?($1.to_i)
|
63
|
+
raise NoColorError, "Invalid color number: #{ args[0] }"
|
64
|
+
end
|
65
|
+
|
66
|
+
pal = Palette.new(256)
|
67
|
+
color = pal.colors.detect { |c| c.term == args[0].to_i }
|
68
|
+
|
69
|
+
if color
|
70
|
+
output.puts color.to_term(pal.notation)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_theme
|
75
|
+
example = <<-TEST
|
76
|
+
# Time for testing your colors!
|
77
|
+
module PryTheme
|
78
|
+
module JustTesting
|
79
|
+
|
80
|
+
THIS_IS_CONSTANT = :this_is_symbol
|
81
|
+
|
82
|
+
class ThisIsClass
|
83
|
+
|
84
|
+
def this_is_method
|
85
|
+
this_is_float = 10_000.00
|
86
|
+
this_is_integer = 10_000
|
87
|
+
|
88
|
+
"this_is_string"
|
89
|
+
'this is another string'
|
90
|
+
|
91
|
+
@@this_is_class_variable
|
92
|
+
|
93
|
+
`echo 'Hello, hi, from "system" call!'`
|
94
|
+
|
95
|
+
$ # <-- The dollar is an error!
|
96
|
+
|
97
|
+
/[0-9]{1,3}this is regexp\\w+/xi
|
98
|
+
$1 or $2 or $3333
|
99
|
+
|
100
|
+
nil
|
101
|
+
self
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
# Testing complete.
|
108
|
+
TEST
|
109
|
+
|
110
|
+
output.puts colorize_code(example)
|
111
|
+
end
|
44
112
|
end
|
45
113
|
|
46
114
|
end
|
data/lib/pry-theme/theme.rb
CHANGED
@@ -7,7 +7,7 @@ module PryTheme
|
|
7
7
|
theme_file = File.join(THEME_DIR, "#{theme_filename}.prytheme")
|
8
8
|
|
9
9
|
if File.exists?(theme_file)
|
10
|
-
theme =
|
10
|
+
theme = YAML.load_file(theme_file)
|
11
11
|
else
|
12
12
|
raise NoThemeError, "#{theme_filename}.prytheme doesn't exist"
|
13
13
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module PryTheme
|
4
|
+
module Uninstaller
|
5
|
+
|
6
|
+
def self.run(u)
|
7
|
+
puts "Do you wish to delete #{THEME_DIR} directory with all Pry themes?"
|
8
|
+
print "(y/n): "
|
9
|
+
|
10
|
+
case $stdin.gets.chomp
|
11
|
+
when "y"
|
12
|
+
FileUtils.rm_rf(THEME_DIR)
|
13
|
+
puts "Successfully deleted #{THEME_DIR} and all Pry themes."
|
14
|
+
else
|
15
|
+
puts "Nothing deleted. You can manually delete the directory."
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
data/lib/pry-theme/version.rb
CHANGED
@@ -4,7 +4,7 @@ module PryTheme
|
|
4
4
|
class WhenStartedHook
|
5
5
|
|
6
6
|
def call(target, options, _pry_)
|
7
|
-
Dir.mkdir(THEME_DIR) unless
|
7
|
+
Dir.mkdir(THEME_DIR) unless File.exists?(THEME_DIR)
|
8
8
|
|
9
9
|
(Dir.entries(EXAMPLES_ROOT) - %w{ . .. }).each do |f|
|
10
10
|
unless File.exists?(File.join(THEME_DIR, f))
|
data/lib/pry-theme.rb
CHANGED
@@ -3,8 +3,10 @@ require 'pry-theme/commands'
|
|
3
3
|
require 'pry-theme/palette'
|
4
4
|
require 'pry-theme/theme'
|
5
5
|
require 'pry-theme/when_started_hook'
|
6
|
+
require 'pry-theme/uninstaller'
|
7
|
+
|
6
8
|
require 'pry'
|
7
|
-
require '
|
9
|
+
require 'yaml'
|
8
10
|
|
9
11
|
module PryTheme
|
10
12
|
|
@@ -67,7 +69,7 @@ module PryTheme
|
|
67
69
|
|
68
70
|
# Matches "yellow".
|
69
71
|
(
|
70
|
-
(
|
72
|
+
(
|
71
73
|
\w+(0[1-9])?
|
72
74
|
)
|
73
75
|
\s?
|
@@ -76,7 +78,7 @@ module PryTheme
|
|
76
78
|
# Matches "yellow (bu)" or "(bu)".
|
77
79
|
(
|
78
80
|
\(
|
79
|
-
(
|
81
|
+
(
|
80
82
|
d?b?u?i? # Order matters.
|
81
83
|
)
|
82
84
|
\)
|
@@ -87,32 +89,42 @@ module PryTheme
|
|
87
89
|
(
|
88
90
|
\s?
|
89
91
|
on\s
|
90
|
-
(
|
92
|
+
(
|
91
93
|
[a-z]+(0[1-9])?
|
92
94
|
)
|
93
95
|
)?
|
94
96
|
|
95
97
|
\z
|
96
98
|
/x
|
97
|
-
m = color.match(color_pattern)
|
98
99
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
100
|
+
if color
|
101
|
+
m = color.match(color_pattern)
|
102
|
+
|
103
|
+
color_fg = if $2
|
104
|
+
palette.colors.find do |color|
|
105
|
+
color.human == $2.to_sym
|
106
|
+
end.term
|
107
|
+
end
|
108
|
+
|
109
|
+
formatting = if $5
|
110
|
+
formatting = $5.each_char.map do |ch|
|
111
|
+
Formatting::ATTRIBUTES[ch]
|
112
|
+
end
|
113
|
+
end
|
104
114
|
|
105
|
-
|
106
|
-
|
107
|
-
Formatting::ATTRIBUTES[ch]
|
115
|
+
color_bg = if $7
|
116
|
+
Formatting::BACKGROUNDS[$7]
|
108
117
|
end
|
109
|
-
end
|
110
118
|
|
111
|
-
|
112
|
-
|
113
|
-
|
119
|
+
notation = palette.notation ? palette.notation[0..-2] : ""
|
120
|
+
[notation, color_fg, formatting, color_bg].flatten.compact.join(";")
|
121
|
+
end
|
122
|
+
end
|
114
123
|
|
115
|
-
|
124
|
+
def self.install_gem_hooks
|
125
|
+
Gem.post_uninstall do |u|
|
126
|
+
Uninstaller.run(u)
|
127
|
+
end
|
116
128
|
end
|
117
129
|
|
118
130
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry-theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.5
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kyrylo Silin
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pry
|
@@ -43,8 +43,10 @@ files:
|
|
43
43
|
- lib/pry-theme/commands.rb
|
44
44
|
- lib/pry-theme/palette.rb
|
45
45
|
- lib/pry-theme/theme.rb
|
46
|
+
- lib/pry-theme/uninstaller.rb
|
46
47
|
- lib/pry-theme/version.rb
|
47
48
|
- lib/pry-theme/when_started_hook.rb
|
49
|
+
- lib/rubygems_plugin.rb
|
48
50
|
- pry-theme.gemspec
|
49
51
|
homepage: https://github.com/kyrylo/pry-theme
|
50
52
|
licenses:
|
@@ -62,9 +64,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
62
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
65
|
none: false
|
64
66
|
requirements:
|
65
|
-
- - ! '
|
67
|
+
- - ! '>='
|
66
68
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
69
|
+
version: '0'
|
68
70
|
requirements: []
|
69
71
|
rubyforge_project:
|
70
72
|
rubygems_version: 1.8.23
|