vimcolorscheme 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +28 -0
- data/README.md +293 -0
- data/examples/simple_theme.rb +20 -0
- data/examples/vimscheme1.rb +27 -0
- data/lib/vimcolorscheme.rb +13 -0
- data/lib/vimcolorscheme/base.rb +11 -0
- data/lib/vimcolorscheme/comment_node.rb +15 -0
- data/lib/vimcolorscheme/document.rb +149 -0
- data/lib/vimcolorscheme/hex2term.rb +357 -0
- data/lib/vimcolorscheme/highlight_node.rb +114 -0
- data/lib/vimcolorscheme/raw_node.rb +15 -0
- data/spec/base_spec.rb +92 -0
- data/spec/comment_node_spec.rb +22 -0
- data/spec/hex2term_spec.rb +25 -0
- data/spec/highlight_node_spec.rb +77 -0
- data/spec/raw_node_spec.rb +12 -0
- data/spec/spec_helper.rb +1 -0
- data/vimcolorscheme.gemspec +16 -0
- metadata +64 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
module VimColorScheme
|
2
|
+
class RawNode
|
3
|
+
# The raw node gets initialized with a string. This string will later just
|
4
|
+
# be printed as-is into the vim file.
|
5
|
+
def initialize raw
|
6
|
+
@raw = raw
|
7
|
+
end
|
8
|
+
|
9
|
+
# Just returns the value that was passed into the constructor of this
|
10
|
+
# object.
|
11
|
+
def to_s
|
12
|
+
@raw + "\n"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/base_spec.rb
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
describe VimColorScheme::Base do
|
5
|
+
let :test_scheme do
|
6
|
+
VimColorScheme.new :test_scheme, :dark do
|
7
|
+
comment "This is a comment!"
|
8
|
+
comment do
|
9
|
+
"This is a block comment!"
|
10
|
+
end
|
11
|
+
|
12
|
+
highlight :Normal do
|
13
|
+
ctermfg '231'
|
14
|
+
ctermbg '31'
|
15
|
+
cterm :bold, :underline
|
16
|
+
end
|
17
|
+
|
18
|
+
raw "Some raw input."
|
19
|
+
|
20
|
+
raw do
|
21
|
+
"Some raw block input."
|
22
|
+
end
|
23
|
+
end.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
let :test_scheme_path do
|
27
|
+
VimColorScheme::ROOTDIR + '/spec/data/test_scheme.vim'
|
28
|
+
end
|
29
|
+
|
30
|
+
let :test_scheme_object do
|
31
|
+
VimColorScheme.new :test_scheme, :dark do
|
32
|
+
highlight :Normal do
|
33
|
+
ctermfg '231'
|
34
|
+
ctermbg '31'
|
35
|
+
cterm :bold, :underline
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Ensure that the test scheme file does not exists for each test.
|
41
|
+
after :each do
|
42
|
+
FileUtils.rm test_scheme_path if File.exists?(test_scheme_path)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should print out the color scheme name" do
|
46
|
+
test_scheme.should include("let g:colors_name = 'test_scheme'")
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should set the background" do
|
50
|
+
test_scheme.should include("set background=dark")
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should clear highlighting at the start" do
|
54
|
+
test_scheme.should include("highlight clear")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should check if syntax highlighting is on" do
|
58
|
+
test_scheme.should include("if exists('syntax_on')")
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should set bold and underline style values" do
|
62
|
+
test_scheme.should include("cterm=bold,underline")
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'should write to file with the save method' do
|
66
|
+
test_scheme_object.save!(test_scheme_path)
|
67
|
+
|
68
|
+
File.open(test_scheme_path) do |file|
|
69
|
+
file.read.should == test_scheme_object.to_s
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should render comments' do
|
74
|
+
test_scheme.should include('" This is a comment!' + "\n")
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'should render block comments' do
|
78
|
+
test_scheme.should include('" This is a block comment!' + "\n")
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'should render comments at the top... at the top' do
|
82
|
+
test_scheme.start_with?('" This is a comment!' + "\n").should be_true
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'should render raw' do
|
86
|
+
test_scheme.should include("Some raw input.\n")
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should render raw blocks' do
|
90
|
+
test_scheme.should include("Some raw block input.\n")
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VimColorScheme::CommentNode do
|
4
|
+
let :single_line_comment do
|
5
|
+
comment = VimColorScheme::CommentNode.new "This is a comment!"
|
6
|
+
comment.to_s
|
7
|
+
end
|
8
|
+
|
9
|
+
let :multi_line_comment do
|
10
|
+
comment = VimColorScheme::CommentNode.new "This is.\nA multiline.\nComment."
|
11
|
+
comment.to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should put the comment character on the front of a comment' do
|
15
|
+
single_line_comment.should == '" This is a comment!' + "\n"
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should render multiline comments properly' do
|
19
|
+
multi_line_comment.should == '" This is.' + "\n" + '" A multiline.' +
|
20
|
+
"\n" + '" Comment.' + "\n"
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VimColorScheme::Hex2Term do
|
4
|
+
# Just a method to reduce clutter in this test. Delegates to the Hex2Term
|
5
|
+
# class in the ColorSchemeRb module.
|
6
|
+
def convert value
|
7
|
+
VimColorScheme::Hex2Term.convert value
|
8
|
+
end
|
9
|
+
|
10
|
+
it "correctly convert hex colors to term colors" do
|
11
|
+
convert('123456').should == '23'
|
12
|
+
convert('00af00').should == '34'
|
13
|
+
convert('odadd6').should == '38'
|
14
|
+
|
15
|
+
convert('231').should == '#ffffff'
|
16
|
+
convert(231).should == '#ffffff'
|
17
|
+
convert(23).should == '#005f5f'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "correctly handle hex number with leading hashes" do
|
21
|
+
convert('#123456').should == '23'
|
22
|
+
convert('#00af00').should == '34'
|
23
|
+
convert('#odadd6').should == '38'
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VimColorScheme::HighlightNode do
|
4
|
+
let :guinode do
|
5
|
+
temp = VimColorScheme::HighlightNode.new :Normal
|
6
|
+
temp.guifg '#00af00'
|
7
|
+
temp.guibg '#00afd7'
|
8
|
+
temp.gui :bold
|
9
|
+
temp.to_s
|
10
|
+
end
|
11
|
+
|
12
|
+
let :ctermnode do
|
13
|
+
temp = VimColorScheme::HighlightNode.new :Normal
|
14
|
+
temp.ctermfg '34'
|
15
|
+
temp.ctermbg '35'
|
16
|
+
temp.cterm :italic
|
17
|
+
temp.gui :none
|
18
|
+
temp.to_s
|
19
|
+
end
|
20
|
+
|
21
|
+
let :bothnode do
|
22
|
+
temp = VimColorScheme::HighlightNode.new :Normal
|
23
|
+
temp.ctermfg '34'
|
24
|
+
temp.ctermbg '35'
|
25
|
+
temp.guifg '#00af00'
|
26
|
+
temp.guibg '#00afd7'
|
27
|
+
temp.to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
let :reversenode do
|
31
|
+
temp = VimColorScheme::HighlightNode.new :Normal
|
32
|
+
temp.gui :reverse
|
33
|
+
temp.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should start with the word highlight' do
|
37
|
+
guinode.start_with?('highlight').should be_true
|
38
|
+
bothnode.start_with?('highlight').should be_true
|
39
|
+
ctermnode.start_with?('highlight').should be_true
|
40
|
+
reversenode.start_with?('highlight').should be_true
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should convert between gui and cterm colors correctly" do
|
44
|
+
guinode.should include('ctermfg=34')
|
45
|
+
guinode.should include('ctermbg=38')
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should convert between cterm and gui colors correctly" do
|
49
|
+
ctermnode.should include('guifg=#00af00')
|
50
|
+
ctermnode.should include('guibg=#00af5f')
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should not convert colors if both are present' do
|
54
|
+
bothnode.should include('ctermfg=34')
|
55
|
+
bothnode.should include('ctermbg=35')
|
56
|
+
bothnode.should include('guifg=#00af00')
|
57
|
+
bothnode.should include('guibg=#00afd7')
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should correctly default nodes to none if no value is given' do
|
61
|
+
bothnode.should include('gui=NONE')
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should correctly convert :reverse values to REVERSE' do
|
65
|
+
reversenode.should include('gui=REVERSE')
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should set gui to bold and correctly mirror that in cterm' do
|
69
|
+
guinode.should include('gui=bold')
|
70
|
+
guinode.should include('cterm=bold')
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should set not mirror gui and cterm if coth are set' do
|
74
|
+
ctermnode.should include('cterm=italic')
|
75
|
+
ctermnode.should include('gui=NONE')
|
76
|
+
end
|
77
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../lib/vimcolorscheme.rb'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = %q{vimcolorscheme}
|
3
|
+
s.version = "0.1"
|
4
|
+
s.date = %q{2012-05-01}
|
5
|
+
s.authors = ["Sam Rose"]
|
6
|
+
s.email = %q{samwho@lbak.co.uk}
|
7
|
+
s.summary = %q{A Ruby DSL for creating Vim color schemes}
|
8
|
+
s.homepage = %q{http://github.com/samwho/vimcolorscheme}
|
9
|
+
s.description = %q{Allows for creating of Vim color schemes using a nifty Ruby DSL}
|
10
|
+
s.required_ruby_version = '>= 1.8.7'
|
11
|
+
s.license = 'MIT'
|
12
|
+
|
13
|
+
# Add all files to the files parameter.
|
14
|
+
s.files = []
|
15
|
+
Dir["**/*.*"].each { |path| s.files.push path }
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vimcolorscheme
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Sam Rose
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-05-01 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Allows for creating of Vim color schemes using a nifty Ruby DSL
|
15
|
+
email: samwho@lbak.co.uk
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- vimcolorscheme-0.1.gem
|
21
|
+
- lib/vimcolorscheme.rb
|
22
|
+
- lib/vimcolorscheme/highlight_node.rb
|
23
|
+
- lib/vimcolorscheme/base.rb
|
24
|
+
- lib/vimcolorscheme/document.rb
|
25
|
+
- lib/vimcolorscheme/comment_node.rb
|
26
|
+
- lib/vimcolorscheme/hex2term.rb
|
27
|
+
- lib/vimcolorscheme/raw_node.rb
|
28
|
+
- README.md
|
29
|
+
- Gemfile.lock
|
30
|
+
- spec/comment_node_spec.rb
|
31
|
+
- spec/raw_node_spec.rb
|
32
|
+
- spec/spec_helper.rb
|
33
|
+
- spec/highlight_node_spec.rb
|
34
|
+
- spec/hex2term_spec.rb
|
35
|
+
- spec/base_spec.rb
|
36
|
+
- vimcolorscheme.gemspec
|
37
|
+
- examples/vimscheme1.rb
|
38
|
+
- examples/simple_theme.rb
|
39
|
+
homepage: http://github.com/samwho/vimcolorscheme
|
40
|
+
licenses:
|
41
|
+
- MIT
|
42
|
+
post_install_message:
|
43
|
+
rdoc_options: []
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ! '>='
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: 1.8.7
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
requirements: []
|
59
|
+
rubyforge_project:
|
60
|
+
rubygems_version: 1.8.23
|
61
|
+
signing_key:
|
62
|
+
specification_version: 3
|
63
|
+
summary: A Ruby DSL for creating Vim color schemes
|
64
|
+
test_files: []
|