pry-theme 0.1.3 → 0.2.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 (87) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +8 -1
  4. data/CHANGELOG.md +40 -0
  5. data/Gemfile +1 -1
  6. data/README.md +26 -48
  7. data/Rakefile +10 -1
  8. data/VERSION +1 -0
  9. data/lib/pry-theme/basic_editor.rb +116 -0
  10. data/lib/pry-theme/color.rb +431 -0
  11. data/lib/pry-theme/color_table.rb +39 -0
  12. data/lib/pry-theme/colors/color16.rb +35 -0
  13. data/lib/pry-theme/colors/color256.rb +30 -0
  14. data/lib/pry-theme/colors/color8.rb +31 -0
  15. data/lib/pry-theme/commands.rb +237 -275
  16. data/lib/pry-theme/declaration.rb +120 -0
  17. data/lib/pry-theme/definition.rb +111 -0
  18. data/lib/pry-theme/formattable.rb +26 -0
  19. data/lib/pry-theme/hex.rb +76 -0
  20. data/lib/pry-theme/preview.rb +74 -0
  21. data/lib/pry-theme/rgb.rb +238 -13
  22. data/lib/pry-theme/term.rb +66 -0
  23. data/lib/pry-theme/theme.rb +116 -26
  24. data/lib/pry-theme/theme_list.rb +52 -0
  25. data/lib/pry-theme/when_started_hook.rb +25 -27
  26. data/lib/pry-theme.rb +84 -158
  27. data/pry-theme.gemspec +14 -18
  28. data/spec/color_table.rb +53 -0
  29. data/spec/colors/color16_spec.rb +255 -0
  30. data/spec/colors/color256_spec.rb +323 -0
  31. data/spec/colors/color8_spec.rb +254 -0
  32. data/spec/commands_spec.rb +203 -0
  33. data/spec/helper.rb +16 -0
  34. data/spec/hex_spec.rb +52 -0
  35. data/spec/rgb_spec.rb +81 -0
  36. data/spec/term_spec.rb +23 -0
  37. data/spec/theme_spec.rb +486 -0
  38. data/themes/github.prytheme.rb +49 -0
  39. data/themes/monokai.prytheme.rb +48 -0
  40. data/themes/pry-classic-16.prytheme.rb +48 -0
  41. data/themes/pry-classic-256.prytheme.rb +48 -0
  42. data/themes/pry-classic-8.prytheme.rb +48 -0
  43. data/themes/pry-cold.prytheme.rb +49 -0
  44. data/themes/pry-love-16.prytheme.rb +48 -0
  45. data/themes/pry-love-8.prytheme.rb +48 -0
  46. data/themes/pry-modern-16.prytheme.rb +48 -0
  47. data/themes/pry-modern-256.prytheme.rb +48 -0
  48. data/themes/pry-modern-8.prytheme.rb +48 -0
  49. data/themes/pry-monochrome.prytheme.rb +32 -0
  50. data/themes/pry-siberia-16.prytheme.rb +48 -0
  51. data/themes/pry-siberia-8.prytheme.rb +48 -0
  52. data/themes/pry-tepid-16.prytheme.rb +48 -0
  53. data/themes/pry-tepid-8.prytheme.rb +48 -0
  54. data/themes/pry-zealand-16.prytheme.rb +48 -0
  55. data/themes/pry-zealand-8.prytheme.rb +49 -0
  56. data/themes/railscasts.prytheme.rb +50 -0
  57. data/themes/solarized.prytheme.rb +48 -0
  58. data/themes/tomorrow.prytheme.rb +48 -0
  59. data/themes/twilight.prytheme.rb +48 -0
  60. data/themes/vim-default.prytheme.rb +50 -0
  61. data/themes/vim-detailed.prytheme.rb +50 -0
  62. data/themes/zenburn.prytheme.rb +48 -0
  63. metadata +56 -41
  64. data/lib/pry-theme/color_converter.rb +0 -55
  65. data/lib/pry-theme/helper.rb +0 -87
  66. data/lib/pry-theme/palette.rb +0 -85
  67. data/lib/pry-theme/term_notation.rb +0 -17
  68. data/lib/pry-theme/version.rb +0 -3
  69. data/test/fixtures/pry-classic.prytheme +0 -38
  70. data/test/helper.rb +0 -56
  71. data/test/test_color_converter.rb +0 -38
  72. data/test/test_commands.rb +0 -55
  73. data/test/test_helper.rb +0 -45
  74. data/test/test_palette.rb +0 -11
  75. data/themes/github.prytheme +0 -43
  76. data/themes/monokai.prytheme +0 -42
  77. data/themes/pry-classic.prytheme +0 -43
  78. data/themes/pry-cold.prytheme +0 -43
  79. data/themes/pry-modern.prytheme +0 -42
  80. data/themes/railscasts.prytheme +0 -44
  81. data/themes/saturday.prytheme +0 -42
  82. data/themes/solarized.prytheme +0 -43
  83. data/themes/tomorrow.prytheme +0 -43
  84. data/themes/twilight.prytheme +0 -42
  85. data/themes/vim-default.prytheme +0 -42
  86. data/themes/vim-detailed.prytheme +0 -42
  87. data/themes/zenburn.prytheme +0 -43
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjgyNDZhYTQxYjhiNTNmMDQ5Yjg1YjhlNDljYzM4YjcwNTVlNjY1YQ==
5
+ data.tar.gz: !binary |-
6
+ YzdjNDY5OTkzNWIwODQ3Zjk0YmZkZjlmNmM4Y2RmNmI1MjJkNGEwNw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ OGJhMGRiMTE3NjRkOWYxMWRhOGY1OTRmODdiYTRhNDQ2YTFlZTNkZTM2ZDlj
10
+ MTM1YjhlNjU5ODM4MDc1NDIyY2YzMTkzMzA2NDU2MjA5NzgzMmEwMDVkODhl
11
+ ODcwZDA4YjFjZmViNTU2ZWQzN2FiMThjZjYyN2RjNjY2OWYyM2M=
12
+ data.tar.gz: !binary |-
13
+ YTkwOWI1NDY4MjdkOGNkY2FjN2IxMjc1MTRkYzQ5NTkyZmFiODEwZTBhMjc0
14
+ NTc3NDc2MzhjODdhZWNhM2ExOWVmMWQyMzgzNmUyNWYzNTBjOTVmYzM0ZjE1
15
+ ZmZkNDczMTc2YmVhZmEzZTM4ODMzYzIyMTY2ZDg5NzU5MGM3Mzc=
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  *~
2
2
  *.gem
3
3
  Gemfile.lock
4
+ .rbx/*
data/.travis.yml CHANGED
@@ -2,11 +2,18 @@ rvm:
2
2
  - 1.8.7
3
3
  - 1.9.2
4
4
  - 1.9.3
5
+ - ruby-head
5
6
  - ree
6
7
  - rbx-18mode
7
8
  - rbx-19mode
8
- - jruby
9
+ - jruby-18mode
10
+ - jruby-19mode
11
+ - jruby-head
9
12
 
10
13
  branches:
11
14
  only:
12
15
  - master
16
+
17
+ before_install:
18
+ - gem install sinatra
19
+ - gem install random-word
data/CHANGELOG.md CHANGED
@@ -1,6 +1,46 @@
1
1
  Pry Theme changelog
2
2
  ===================
3
3
 
4
+ ### v0.2.0 (March 26, 2013)
5
+
6
+ * **HOT**: Added Windows support
7
+ * **NOT SO HOT**: The plugin was rewritten from scratch
8
+ * The plugin works everywhere where you can launch Pry
9
+ * Improved `vim-detailed` theme
10
+ * Added support for 16 colour themes
11
+ * Introduced the new theme syntax
12
+ * Lots of rewordings, improvements of help messages
13
+ * Added fallback mode. It is useful when you are running Pry on poor terminals
14
+ and trying to use a 256 colour theme. It is quite numpty, though.
15
+ * Converted switches to subcommands
16
+ * Added basic tab completion for installed themes
17
+ * Added support for italic font. Does not work eveywhere. For example, I use
18
+ urxvt and it does support italic fonts.
19
+ * **NOT BAD**: Added a bunch of new themes
20
+
21
+ * pry-monochrome
22
+ * pry-modern-256 (old `pry-modern`)
23
+ * pry-classic-256 (old `pry-classic`; default theme on 256 colour capable
24
+ terminals)
25
+
26
+ Including Windows friendly themes:
27
+
28
+ * pry-classic-16 (default theme on Windows)
29
+ * pry-classic-8
30
+ * pry-zealand-16 (greenish)
31
+ * pry-zealand-8
32
+ * pry-love-16 (redish)
33
+ * pry-love-8
34
+ * pry-sibera-16 (bluish)
35
+ * pry-sibera-8
36
+ * pry-tepid-16 (yellowish)
37
+ * pry-tepid-8
38
+ * pry-modern-16
39
+ * pry-modern-8
40
+ * And probably something else. I could forget something!
41
+
42
+ And do not forget to check out [the new CLI][cli]!
43
+
4
44
  ### v0.1.3 (September 21, 2012)
5
45
 
6
46
  * Improved integration with [pry-rescue][prescue] plugin.
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
- source :rubygems
1
+ source 'http://rubygems.org'
2
2
  gemspec
data/README.md CHANGED
@@ -1,18 +1,20 @@
1
1
  ![Pry Theme][logo]
2
2
 
3
+ ![Pry Theme version badge][ver-badge] [![Build Status][ci-badge]][ci-link]
4
+
3
5
  * Repository: [https://github.com/kyrylo/pry-theme/][pt]
4
6
  * Wiki: [https://github.com/kyrylo/pry-theme/wiki][wiki]
5
7
 
6
8
  Description
7
9
  -----------
8
10
 
9
- Pry Theme is a plugin for [Pry][pry], which helps you to customize your Pry
10
- colors via `prytheme` files.
11
+ Pry Theme is a plugin for [Pry][pry], which helps you to customise your Pry
12
+ colors via `prytheme.rb` files.
11
13
 
12
- ![Railscasts](/kyrylo/pry-theme/raw/master/screenshots/railscasts.png)
13
- ![Solarized](/kyrylo/pry-theme/raw/master/screenshots/solarized.png)
14
- ![Tomorrow](/kyrylo/pry-theme/raw/master/screenshots/tomorrow.png)
15
- ![Zenburn](/kyrylo/pry-theme/raw/master/screenshots/zenburn.png)
14
+ ![Railscasts](./screenshots/railscasts.png)
15
+ ![Solarized](./screenshots/solarized.png)
16
+ ![Tomorrow](./screenshots/tomorrow.png)
17
+ ![Zenburn](./screenshots/zenburn.png)
16
18
 
17
19
  Installation
18
20
  ------------
@@ -27,14 +29,14 @@ Synopsis
27
29
 
28
30
  ### Theme files
29
31
 
30
- Theme file is a valid YAML file, which has `.prytheme` extension (for example,
31
- `beautiful.prytheme`). In order to set up the desired theme, add the following
32
- line into your `.pryrc`:
32
+ Theme file is nothing but a Ruby file, which has `.prytheme.rb` extension (for
33
+ example, `beautiful.prytheme.rb`). In order to set up the desired theme, add the
34
+ following line to your `.pryrc`:
33
35
 
34
36
  Pry.config.theme = "theme-name"
35
37
 
36
- The default theme is `pry-classic` (basically, you won't notice it, because
37
- it copies the default outlook of Pry, just as you didn't install anything).
38
+ The default theme is `pry-classic` (basically, you shouldn't notice it, because
39
+ it resembles the default outlook of Pry, as though you didn't install anything).
38
40
  Let's change it to something more neoteric:
39
41
 
40
42
  Pry.config.theme = "pry-modern"
@@ -47,60 +49,33 @@ Pry Theme has a command-line interface available via Pry. Just launch Pry and
47
49
  start working with it. For example, you can _temporary_ change themes on the
48
50
  fly (only for the current session):
49
51
 
50
- [1] pry(main)> pry-theme pry-classic
52
+ [1] pry(main)> pry-theme try pry-classic
51
53
 
52
- This will switch your current theme to `pry-classic`.
54
+ This subcommand would switch your current theme to `pry-classic` theme.
53
55
 
54
56
  You can find [more information about CLI in Pry Theme Wiki][cli].
55
57
 
56
- ### Creating themes
58
+ ### Managing themes
57
59
 
58
60
  Creating new themes isn't hard. [Check out Pry Theme Wiki article on that][new_theme].
59
61
 
60
- ### Adding new themes
61
-
62
- Theme files must have `.prytheme` extension. Check out [Pry Theme Collection][ptc],
62
+ Theme files must have `.prytheme.rb` extension. Check out [Pry Theme Collection][ptc]
63
63
  if you want to find some themes other than default ones.
64
64
 
65
- * On GNU/Linux and Mac OS
66
-
67
- Put your theme file in `$HOME/.pry/themes` directory.
65
+ If you already have your theme stored somewhere on disk, just put it in the
66
+ `$HOME/.pry/themes` directory.
68
67
 
69
68
  If you don't want to bother with routine operations, you can install a theme
70
- from the Collection with help of `pry-theme -i <name>` command. For example, you
71
- can install tomorrow-night theme: `pry-theme -i tomorrow-night`.
69
+ from the Collection with help of `pry-theme install <name>` subcommand. For
70
+ example, you can want to install xoria256 theme. Just execute
71
+ `pry-theme install xoria256` and you're done.
72
72
 
73
73
  Oh, and don't forget to adjust your `.pryrc`!
74
74
 
75
75
  Limitations
76
76
  -----------
77
77
 
78
- Basically, it will run on any terminal that is capable of displaying 256 colors,
79
- but with a couple of admonishments. They are listed below.
80
-
81
- ### OS support
82
-
83
- * GNU/Linux;
84
- * Mac OS.
85
-
86
- I hope it runs on Windows too, but I couldn't find any sane terminal, that
87
- would support 256 colors. Sorry, Windows guys. Please, file an issue, if you
88
- noticed bugs or something.
89
-
90
- ### Ruby implementations support
91
-
92
- * MRI 1.9.3
93
- * MRI 1.9.2
94
- * MRI 1.8.7
95
- * REE 1.8.7-2012.02
96
- * JRuby 1.6.7
97
- * Rubinius 1.2.4
98
-
99
- Under the hood
100
- --------------
101
-
102
- Basically, Pry Theme is nothing but a CodeRay color scheme with a human-readable
103
- syntax.
78
+ No limitations. Pry Theme will run everywhere where you can launch Pry.
104
79
 
105
80
  Credits
106
81
  -------
@@ -118,6 +93,9 @@ License
118
93
  The project uses Zlib License. See LICENSE file for more information.
119
94
 
120
95
  [pt]: https://github.com/kyrylo/pry-theme/ "Home page"
96
+ [ver-badge]: https://badge.fury.io/rb/pry-theme.png "Pry Theme version badge"
97
+ [ci-badge]: https://travis-ci.org/kyrylo/pry-theme.png?branch=master "Build status"
98
+ [ci-link]: https://travis-ci.org/kyrylo/pry-theme/ "Build history"
121
99
  [logo]: http://img-fotki.yandex.ru/get/5107/98991937.a/0_7c6c8_871a1842_orig "Pry Theme"
122
100
  [pry]: https://github.com/pry/pry/ "Pry's home page"
123
101
  [new_theme]: https://github.com/kyrylo/pry-theme/wiki/Creating-a-New-Theme
data/Rakefile CHANGED
@@ -1,6 +1,15 @@
1
+ def quiet
2
+ ENV['VERBOSE'] ? '' : '-q'
3
+ end
4
+
5
+ def test_files
6
+ paths = FileList['spec/**/*_spec.rb']
7
+ paths.shuffle!.join(' ')
8
+ end
9
+
1
10
  desc "Run tests"
2
11
  task :test do
3
- sh "bacon -Itest --automatic --quiet"
12
+ exec "bacon -Ispec #{ quiet } #{ test_files }"
4
13
  end
5
14
 
6
15
  task :default => :test
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.0
@@ -0,0 +1,116 @@
1
+ require 'etc'
2
+
3
+ module PryTheme
4
+ class BasicEditor
5
+
6
+ class << self
7
+ def edit(theme_name)
8
+ editor = new(theme_name)
9
+ editor.start_editing
10
+ end
11
+ end
12
+
13
+ attr_reader :current_file, :output
14
+
15
+ def initialize(filename)
16
+ @filename = filename
17
+ theme_path = themify(filename)
18
+
19
+ @editor = Pry.config.editor
20
+ @new_theme = false
21
+ @output = Pry.output
22
+ @current_file = File.open(theme_path, 'r+')
23
+ rescue Errno::ENOENT
24
+ @new_theme = true
25
+ @current_file = File.open(theme_path, 'w')
26
+ end
27
+
28
+ def start_editing
29
+ if @new_theme
30
+ @output.puts 'Created a new theme.'
31
+ @current_file.puts template
32
+ @current_file.close
33
+ end
34
+ @output.puts "Opened in #{ @editor }: #{ themify(@filename) }"
35
+
36
+ reload_theme!
37
+ output_dashy_header("Current \"#@filename\"")
38
+
39
+ Pry::Editor.invoke_editor(@current_file.path, 1)
40
+
41
+ reload_theme!
42
+ output_dashy_header("Edited \"#@filename\"")
43
+ end
44
+
45
+ private
46
+
47
+ def reload_theme!
48
+ ThemeList.reload_theme(@filename, @current_file)
49
+ end
50
+
51
+ def output_dashy_header(msg)
52
+ preview = Preview.new(ThemeList.themes.find { |t| t.name == @filename })
53
+ Pry::Pager.page(preview.banner(msg) + preview.long)
54
+ end
55
+
56
+ def themify(filename)
57
+ File.join(USER_THEMES_DIR, filename + PT_EXT)
58
+ end
59
+
60
+ def template
61
+ Pry::Helpers::CommandHelpers.unindent(<<-TEMPLATE)
62
+ t = PryTheme.create :name => '#{ @filename }' do
63
+ author :name => '#{ Etc.getlogin || 'me' }', :email => 'user@hostname'
64
+ description '#{ @filename } theme'
65
+
66
+ # How the flip do I edit this?!
67
+ # Help is there: https://github.com/kyrylo/pry-theme/wiki/Creating-a-New-Theme
68
+ define_theme do
69
+ class_
70
+ class_variable
71
+ comment
72
+ constant
73
+ error
74
+ float
75
+ global_variable
76
+ inline_delimiter
77
+ instance_variable
78
+ integer
79
+ keyword
80
+ method
81
+ predefined_constant
82
+ symbol
83
+
84
+ regexp do
85
+ self_
86
+ char
87
+ content
88
+ delimiter
89
+ modifier
90
+ escape
91
+ end
92
+
93
+ shell do
94
+ self_
95
+ char
96
+ content
97
+ delimiter
98
+ escape
99
+ end
100
+
101
+ string do
102
+ self_
103
+ char
104
+ content
105
+ delimiter
106
+ escape
107
+ end
108
+ end
109
+ end
110
+
111
+ PryTheme::ThemeList.add_theme(t)
112
+ TEMPLATE
113
+ end
114
+
115
+ end
116
+ end