pry-theme 0.0.7 → 0.0.8

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.
data/CHANGELOG.md CHANGED
@@ -1,6 +1,23 @@
1
1
  Pry Theme changelog
2
2
  ===================
3
3
 
4
+ ### v0.0.8 (July 02, 2012)
5
+
6
+ * **IMPORTANT**: Changed directory where to store themes! Themes now live in
7
+ `$HOME/.pry/themes` directory on Mac OS and GNU/Linux, both. Do not forget
8
+ to delete or move your themes form the old path (On Mac OS it is
9
+ `$HOME/Library/Application Support/pry-theme` and on GNU/Linux it is
10
+ `$HOME/.pry/themes`).
11
+ * On some operating systems Pry Theme was failing to detect correct config path.
12
+ Fixed.
13
+ * Fixed wrong behaviour, when uninstalling an unrelated gem. Pry Theme asked to
14
+ uninstall themes every time you wanted to uninstall _any_ gem.
15
+ * Fixed a typo in `pry-classic` theme, which was preventing to set `delimiter`
16
+ parameter to a string.
17
+ * Fixed wrong convertation of theme files.
18
+ * Implemented `--list` (`-l`) option, which displays a list of all installed
19
+ themes.
20
+
4
21
  ### v0.0.7 (June 30, 2012)
5
22
 
6
23
  * **HOTFIX**: v0.0.6 is broken (because of my inattentiveness).
data/README.md CHANGED
@@ -58,13 +58,9 @@ Creating new themes isn't hard. [Check out Pry Theme Wiki article on that][new_t
58
58
  Theme files must have `.prytheme` extension. Check out [Pry Theme Collection][ptc],
59
59
  if you want to find some themes other than default ones.
60
60
 
61
- * On GNU/Linux
61
+ * On GNU/Linux and Mac OS
62
62
 
63
- Put your theme file in `$XDG_CONFIG_HOME/pry-theme` directory.
64
-
65
- * On Mac OS
66
-
67
- Put your theme file in `$HOME/Library/Application Support/pry-theme` directory.
63
+ Put your theme file in `$HOME/.pry/themes` directory.
68
64
 
69
65
  And don't forget to adjust your `.pryrc`!
70
66
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  meta:
3
3
  theme-name : pry-classic
4
- version : 1
4
+ version : 2
5
5
  color-depth : 8
6
6
  description : Based on Kornelius Kalnbach's default CodeRay's color theme.
7
7
  author : Kyrylo Silin <kyrylosilin@gmail.com>
@@ -33,5 +33,5 @@ theme:
33
33
  self : green
34
34
  modifier : green (b)
35
35
  escape : cyan (b)
36
- delimite : green (b)
36
+ delimiter : green (b)
37
37
  symbol : green (b)
@@ -2,6 +2,7 @@ module PryTheme
2
2
  Commands = Pry::CommandSet.new do
3
3
 
4
4
  create_command "pry-theme", "Manage your Pry themes." do
5
+ include PryTheme::Helper
5
6
 
6
7
  banner <<-BANNER
7
8
  Usage: pry-theme [OPTIONS] [--help]
@@ -22,6 +23,10 @@ module PryTheme
22
23
 
23
24
  pry-theme -t
24
25
 
26
+ Show a list with currently installed themes
27
+
28
+ pry-theme --list
29
+
25
30
  Wiki: https://github.com/kyrylo/pry-theme/wiki/Pry-Theme-CLI
26
31
  BANNER
27
32
 
@@ -29,6 +34,7 @@ module PryTheme
29
34
  opt.on :a, "all-colors", "Show all available 8/256 colors."
30
35
  opt.on :c, "color", "Show information about a specific color (256)."
31
36
  opt.on :t, "test", "Test your current theme", :argument => false
37
+ opt.on :l, "list", "Show a list with all available themes", :argument => false
32
38
  end
33
39
 
34
40
  def process
@@ -38,6 +44,8 @@ module PryTheme
38
44
  show_specific_color
39
45
  elsif opts.t?
40
46
  test_theme
47
+ elsif opts.l?
48
+ show_list
41
49
  elsif args[0] =~ /\A\w+-?\w+\z/
42
50
  switch_to_theme
43
51
  end
@@ -108,6 +116,30 @@ end
108
116
 
109
117
  output.puts colorize_code(example)
110
118
  end
119
+
120
+ def show_list
121
+ old_theme = PryTheme.current_theme.dup
122
+
123
+ each_theme_in(THEME_DIR) do |theme, index, all_themes_num|
124
+ theme.sub!(/\.prytheme\z/, "")
125
+ PryTheme.set_theme(theme)
126
+
127
+ chunk = <<-CHUNK
128
+ class PickMe
129
+ def please
130
+ @i, @@beg, you = 10_000, 400.00, "please!"
131
+ end
132
+ end
133
+ CHUNK
134
+
135
+ output.puts "\e[038;0;1m[#{theme}]\e[0m#{ " *" if theme == old_theme }"
136
+ output.puts "---"
137
+ output.puts colorize_code(chunk)
138
+ output.puts unless index+1 == all_themes_num
139
+ end
140
+ ensure
141
+ PryTheme.set_theme(old_theme)
142
+ end
111
143
  end
112
144
 
113
145
  end
@@ -0,0 +1,14 @@
1
+ module PryTheme
2
+ module Helper
3
+
4
+ def each_theme_in(dir, &block)
5
+ themes = Dir.entries(dir) - %w{ . .. }
6
+ n = themes.size
7
+
8
+ themes.each_with_index do |theme, index|
9
+ yield(theme, index, n)
10
+ end
11
+ end
12
+
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module PryTheme
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -2,18 +2,18 @@ require 'fileutils'
2
2
 
3
3
  module PryTheme
4
4
  class WhenStartedHook
5
+ include PryTheme::Helper
5
6
 
6
7
  def call(target, options, _pry_)
7
- Dir.mkdir(THEME_DIR) unless File.exists?(THEME_DIR)
8
+ FileUtils.mkdir_p(THEME_DIR) unless File.exists?(THEME_DIR)
8
9
 
9
- (Dir.entries(EXAMPLES_ROOT) - %w{ . .. }).each do |f|
10
- unless File.exists?(File.join(THEME_DIR, f))
11
- FileUtils.cp(File.join(EXAMPLES_ROOT, f), THEME_DIR)
10
+ each_theme_in(EXAMPLES_ROOT) do |theme, _, _|
11
+ unless File.exists?(File.join(THEME_DIR, theme))
12
+ FileUtils.cp(File.join(EXAMPLES_ROOT, theme), THEME_DIR)
12
13
  end
13
14
  end
14
15
 
15
- theme_name = Pry.config.theme || "pry-classic"
16
- PryTheme.set_theme(theme_name)
16
+ PryTheme.set_theme(Pry.config.theme)
17
17
  end
18
18
 
19
19
  end
data/lib/pry-theme.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'pry-theme/version'
2
+ require 'pry-theme/helper'
2
3
  require 'pry-theme/commands'
3
4
  require 'pry-theme/palette'
4
5
  require 'pry-theme/theme'
@@ -18,23 +19,31 @@ module PryTheme
18
19
 
19
20
  # The root path for the directory with configuration files for OS you're using.
20
21
  CONFIG_DIR = case RbConfig::CONFIG["host_os"]
21
- when /darwin/
22
- File.join(ENV["HOME"], "Library", "Application Support")
23
- when /linux/
24
- ENV["XDG_CONFIG_HOME"]
25
22
  when /mingw|mswin/
26
- ENV["APPDATA"]
23
+ File.join(ENV["APPDATA"], "pry-theme")
24
+ else
25
+ # /darwin|linux/ and friends.
26
+ File.join(ENV["HOME"], ".pry")
27
27
  end
28
28
 
29
29
  # Pry themes' directory.
30
- THEME_DIR = File.join(CONFIG_DIR, "pry-theme")
30
+ THEME_DIR = File.join(CONFIG_DIR, "themes")
31
+
32
+ # The name of the default theme of Pry Theme.
33
+ DEFAULT_THEME_NAME = "pry-classic"
31
34
 
32
35
  def self.set_theme(theme_name)
33
- if theme = PryTheme.convert(theme_name)
36
+ theme = PryTheme.convert(theme_name)
37
+ if theme ||= PryTheme.convert(theme_name = DEFAULT_THEME_NAME)
34
38
  ::CodeRay::Encoders::Terminal::TOKEN_COLORS.merge!(theme)
39
+ @current_theme = theme_name
35
40
  end
36
41
  end
37
42
 
43
+ def self.current_theme
44
+ @current_theme
45
+ end
46
+
38
47
  def self.convert(theme_name)
39
48
  begin
40
49
  theme = Theme.new(theme_name)
@@ -124,11 +133,11 @@ module PryTheme
124
133
 
125
134
  # Uh oh :(
126
135
  notation = if !color_fg
127
- "38;0;"
136
+ "38;0"
128
137
  elsif palette.notation
129
138
  palette.notation[0..-2]
130
139
  else
131
- ""
140
+ nil
132
141
  end
133
142
 
134
143
  [notation, color_fg, formatting, color_bg].flatten.compact.join(";")
@@ -144,7 +153,7 @@ module PryTheme
144
153
 
145
154
  def self.install_gem_hooks
146
155
  Gem.post_uninstall do |u|
147
- Uninstaller.run(u)
156
+ Uninstaller.run(u) if u.spec.name == "pry-theme"
148
157
  end
149
158
  end
150
159
 
@@ -1,4 +1,9 @@
1
- require 'pry'
2
- require 'pry-theme'
1
+ begin
2
+ require 'pry'
3
+ require 'pry-theme'
4
+
5
+ PryTheme.install_gem_hooks
6
+ rescue LoadError
7
+ # Be silent, when we can't load Pry (when it's uninstalled).
8
+ end
3
9
 
4
- PryTheme.install_gem_hooks
data/pry-theme.gemspec CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |s|
5
5
  s.version = PryTheme::VERSION
6
6
  s.date = Time.now.strftime('%Y-%m-%d')
7
7
  s.summary = "Easy way to customize your Pry colors"
8
- s.description = "The plugin enables color theme for your Pry. No more pryrc bustling."
8
+ s.description = "The plugin enables color theme support for your Pry. No more .pryrc bustling."
9
9
  s.author = "Kyrylo Silin"
10
10
  s.email = "kyrylosilin@gmail.com"
11
11
  s.homepage = "https://github.com/kyrylo/pry-theme"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-30 00:00:00.000000000 Z
12
+ date: 2012-07-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pry
@@ -27,7 +27,7 @@ dependencies:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0.9'
30
- description: The plugin enables color theme for your Pry. No more pryrc bustling.
30
+ description: The plugin enables color theme support for your Pry. No more .pryrc bustling.
31
31
  email: kyrylosilin@gmail.com
32
32
  executables: []
33
33
  extensions: []
@@ -41,6 +41,7 @@ files:
41
41
  - examples/pry-modern.prytheme
42
42
  - lib/pry-theme.rb
43
43
  - lib/pry-theme/commands.rb
44
+ - lib/pry-theme/helper.rb
44
45
  - lib/pry-theme/palette.rb
45
46
  - lib/pry-theme/theme.rb
46
47
  - lib/pry-theme/uninstaller.rb