coloration 0.2.5 → 0.3.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.
@@ -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
-