coloration 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module Coloration
2
- VERSION = "0.2.5".freeze
2
+ VERSION = "0.3.0".freeze
3
3
  end
@@ -1,6 +1,11 @@
1
1
  module Coloration
2
2
  module Writers
3
3
  module VimThemeWriter
4
+ XTERM_COLORS = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]
5
+ XTERM_GREYS = [ 0x08, 0x12, 0x1C, 0x26, 0x30, 0x3A,
6
+ 0x44, 0x4E, 0x58, 0x62, 0x6C, 0x76,
7
+ 0x80, 0x8A, 0x94, 0x9E, 0xA8, 0xB2,
8
+ 0xBC, 0xC6, 0xD0, 0xDA, 0xE4, 0xEE ]
4
9
 
5
10
  def build_result
6
11
  add_line "\" Vim color file"
@@ -26,7 +31,8 @@ module Coloration
26
31
  "Visual" => Style.new(:bg => @ui["selection"]),
27
32
  "CursorLine" => Style.new(:bg => @ui["lineHighlight"]),
28
33
  "CursorColumn" => Style.new(:bg => @ui["lineHighlight"]),
29
- "LineNr" => Style.new(:fg => @ui["foreground"].mix_with(@ui["background"], 50), :bg => @ui["background"]),
34
+ "ColorColumn" => Style.new(:bg => @ui["lineHighlight"]),
35
+ "LineNr" => Style.new(:fg => @ui["foreground"].mix_with(@ui["background"], 50), :bg => @ui["lineHighlight"]),
30
36
  "VertSplit" => Style.new(:fg => border_color, :bg => border_color),
31
37
  "MatchParen" => @items["keyword"],
32
38
  "StatusLine" => Style.new(:fg => @ui["foreground"], :bg => border_color, :bold => true),
@@ -179,14 +185,81 @@ module Coloration
179
185
 
180
186
  def format_style(style)
181
187
  style ||= Style.new
182
- s = ""
183
- s << " guifg=" << (style.foreground.try(:html) || "NONE")
184
- s << " guibg=" << (style.background.try(:html) || "NONE")
185
- gui = [style.inverse && "inverse", style.bold && "bold", style.underline && "underline", style.italic && "italic"].compact
186
- s << " gui=" << (gui.empty? ? "NONE" : gui.join(","))
187
- s
188
+
189
+ if fg = style.foreground
190
+ ctermfg = rgb_to_xterm256(fg)
191
+ guifg = fg.html
192
+ else
193
+ ctermfg = 'none'
194
+ guifg = 'none'
195
+ end
196
+
197
+ if bg = style.background
198
+ ctermbg = rgb_to_xterm256(bg)
199
+ guibg = bg.html
200
+ else
201
+ ctermbg = 'none'
202
+ guibg = 'none'
203
+ end
204
+
205
+ gui_attrs = [
206
+ style.inverse && 'inverse',
207
+ style.bold && 'bold',
208
+ style.underline && 'underline',
209
+ style.italic && 'italic'
210
+ ].compact
211
+
212
+ cterm_attrs = gui_attrs.reject { |a| a == 'italic' }
213
+
214
+ gui = gui_attrs.empty? ? 'none' : gui_attrs.join(',')
215
+ cterm = cterm_attrs.empty? ? 'none' : cterm_attrs.join(',')
216
+
217
+ "ctermfg=#{ctermfg} ctermbg=#{ctermbg} cterm=#{cterm} " +
218
+ "guifg=#{guifg} guibg=#{guibg} gui=#{gui}"
219
+ end
220
+
221
+ def rgb_to_xterm256(c)
222
+ a_r = (c.r * 255.0).to_i
223
+ a_g = (c.g * 255.0).to_i
224
+ a_b = (c.b * 255.0).to_i
225
+
226
+ if a_r == 0 && a_g == 0 && a_b == 0
227
+ return 0
228
+ end
229
+
230
+ if a_r == 255 && a_g == 255 && a_b == 255
231
+ return 15
232
+ end
233
+
234
+ greys_colors = XTERM_GREYS + XTERM_COLORS
235
+ len = XTERM_COLORS.size
236
+
237
+ r = get_nearest_xterm_color(a_r, greys_colors)
238
+ g = get_nearest_xterm_color(a_g, greys_colors)
239
+ b = get_nearest_xterm_color(a_b, greys_colors)
240
+
241
+ if r == g && g == b && (i = XTERM_GREYS.index(r))
242
+ n = len * len * len + i
243
+ else
244
+ r = get_nearest_xterm_color(a_r, XTERM_COLORS)
245
+ g = get_nearest_xterm_color(a_g, XTERM_COLORS)
246
+ b = get_nearest_xterm_color(a_b, XTERM_COLORS)
247
+
248
+ n = XTERM_COLORS.index(r) * len * len +
249
+ XTERM_COLORS.index(g) * len +
250
+ XTERM_COLORS.index(b)
251
+ end
252
+
253
+ 16 + n
188
254
  end
189
255
 
256
+ def get_nearest_xterm_color(v, colors)
257
+ 0.upto(colors.size - 2) do |i|
258
+ return colors[i] if v <= (colors[i] + colors[i+1]) / 2
259
+ end
260
+
261
+ colors.last
262
+ end
190
263
  end
191
264
  end
192
265
  end
metadata CHANGED
@@ -1,126 +1,97 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: coloration
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 2
8
- - 5
9
- version: 0.2.5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Marcin Kulik
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-08-17 00:00:00 +02:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-10-22 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: textpow19
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &69495040 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- - 11
31
- version: "0.11"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0.11'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: color-tools
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *69495040
25
+ - !ruby/object:Gem::Dependency
26
+ name: color-tools
27
+ requirement: &69546540 !ruby/object:Gem::Requirement
38
28
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- segments:
43
- - 1
44
- - 3
45
- - 0
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
46
32
  version: 1.3.0
47
33
  type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: plist
51
34
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *69546540
36
+ - !ruby/object:Gem::Dependency
37
+ name: plist
38
+ requirement: &69709450 !ruby/object:Gem::Requirement
53
39
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- segments:
58
- - 3
59
- - 1
60
- - 0
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
61
43
  version: 3.1.0
62
44
  type: :runtime
63
- version_requirements: *id003
45
+ prerelease: false
46
+ version_requirements: *69709450
64
47
  description: Color scheme converters for vim, textmate, kate/kwrite, jedit
65
48
  email: marcin.kulik@gmail.com
66
- executables:
67
- - tm2jedit
68
- - tm2katepart
49
+ executables:
69
50
  - tm2vim
51
+ - tm2katepart
52
+ - tm2jedit
70
53
  extensions: []
71
-
72
54
  extra_rdoc_files: []
73
-
74
- files:
75
- - bin/tm2jedit
76
- - bin/tm2katepart
55
+ files:
77
56
  - bin/tm2vim
78
- - lib/coloration/color_rgba.rb
79
- - lib/coloration/style.rb
80
- - lib/coloration/version.rb
57
+ - bin/tm2katepart
58
+ - bin/tm2jedit
81
59
  - lib/coloration/extensions.rb
82
- - lib/coloration/abstract_converter.rb
60
+ - lib/coloration/readers/textmate_theme_reader.rb
61
+ - lib/coloration/converters/textmate2katepart.rb
83
62
  - lib/coloration/converters/textmate2vim.rb
84
63
  - lib/coloration/converters/textmate2jedit.rb
85
- - lib/coloration/converters/textmate2katepart.rb
86
64
  - lib/coloration/writers/katepart_theme_writer.rb
87
65
  - lib/coloration/writers/vim_theme_writer.rb
88
66
  - lib/coloration/writers/jedit_theme_writer.rb
89
- - lib/coloration/readers/textmate_theme_reader.rb
67
+ - lib/coloration/abstract_converter.rb
68
+ - lib/coloration/version.rb
69
+ - lib/coloration/color_rgba.rb
70
+ - lib/coloration/style.rb
90
71
  - lib/coloration.rb
91
72
  - README.md
92
- has_rdoc: true
93
73
  homepage: http://github.com/sickill/coloration
94
74
  licenses: []
95
-
96
75
  post_install_message:
97
76
  rdoc_options: []
98
-
99
- require_paths:
77
+ require_paths:
100
78
  - lib
101
- required_ruby_version: !ruby/object:Gem::Requirement
79
+ required_ruby_version: !ruby/object:Gem::Requirement
102
80
  none: false
103
- requirements:
81
+ requirements:
104
82
  - - ~>
105
- - !ruby/object:Gem::Version
106
- segments:
107
- - 1
108
- - 9
109
- version: "1.9"
110
- required_rubygems_version: !ruby/object:Gem::Requirement
83
+ - !ruby/object:Gem::Version
84
+ version: '1.9'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
86
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- segments:
116
- - 0
117
- version: "0"
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
118
91
  requirements: []
119
-
120
92
  rubyforge_project:
121
- rubygems_version: 1.3.7
93
+ rubygems_version: 1.8.10
122
94
  signing_key:
123
95
  specification_version: 3
124
96
  summary: Color scheme converters for vim, textmate, kate/kwrite, jedit
125
97
  test_files: []
126
-