teejayvanslyke-sassafras 0.1.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.
- data/History.txt +4 -0
- data/License.txt +20 -0
- data/Manifest.txt +32 -0
- data/PostInstall.txt +3 -0
- data/README.txt +86 -0
- data/Rakefile +4 -0
- data/bin/sassafras +62 -0
- data/config/hoe.rb +74 -0
- data/config/requirements.rb +15 -0
- data/examples/analogous_red.html +298 -0
- data/examples/split_complementary_blue.html +298 -0
- data/lib/sassafras/swatch.html.erb +60 -0
- data/lib/sassafras/version.rb +9 -0
- data/lib/sassafras.rb +238 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +82 -0
- data/setup.rb +1585 -0
- data/spec/sassafras_spec.rb +192 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +10 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/examples.rake +8 -0
- data/tasks/rspec.rake +21 -0
- data/tasks/website.rake +17 -0
- data/website/index.html +11 -0
- data/website/index.txt +83 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +138 -0
- data/website/template.html.erb +48 -0
- metadata +102 -0
@@ -0,0 +1,192 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe Sassafras do
|
4
|
+
|
5
|
+
describe Sassafras::Theme do
|
6
|
+
|
7
|
+
describe "when creating a basic color scheme" do
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
@sassafras = Sassafras::Theme.basic(:red)
|
11
|
+
end
|
12
|
+
|
13
|
+
def red_values
|
14
|
+
{
|
15
|
+
'lightest' => '#ffe6e6',
|
16
|
+
'lighter' => '#ffb3b3',
|
17
|
+
'light' => '#ff8080',
|
18
|
+
'mid' => '#ff0000',
|
19
|
+
'dark' => '#800000',
|
20
|
+
'darker' => '#4d0000',
|
21
|
+
'darkest' => '#1a0000'
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
it "sets the base color" do
|
26
|
+
@sassafras.base.should == "#ff0000"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "generates the base tints and shades" do
|
30
|
+
red_values.each do |name, hex|
|
31
|
+
@sassafras.colors(:base).should have_key(name)
|
32
|
+
@sassafras.colors(:base)[name].should == hex
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it "generates the correct SASS output" do
|
37
|
+
sass = <<SASS
|
38
|
+
# Color scheme generated by Sassafras
|
39
|
+
# http://github.com/teejayvanslyke/sassafras/
|
40
|
+
# ================= base ====================
|
41
|
+
!base_lightest = #ffe6e6
|
42
|
+
!base_lighter = #ffb3b3
|
43
|
+
!base_light = #ff8080
|
44
|
+
!base_mid = #ff0000
|
45
|
+
!base_dark = #800000
|
46
|
+
!base_darker = #4d0000
|
47
|
+
!base_darkest = #1a0000
|
48
|
+
SASS
|
49
|
+
pending "..."
|
50
|
+
@sassafras.sass.should == sass
|
51
|
+
end
|
52
|
+
|
53
|
+
it "only has one color set" do
|
54
|
+
@sassafras.colors.size.should == 1
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
describe "when generating Sass output" do
|
60
|
+
|
61
|
+
before :each do
|
62
|
+
@sassafras = Sassafras::Theme.basic(:red)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "outputs the base color" do
|
66
|
+
@sassafras.sass.should include("!base_mid = #ff0000")
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "when generating color sets for a new type of theme" do
|
74
|
+
|
75
|
+
class TestTheme < Sassafras::Theme
|
76
|
+
|
77
|
+
color 'minus_five', -5
|
78
|
+
color 'one', +1
|
79
|
+
color 'two', +2
|
80
|
+
color 'three', +3
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
before :each do
|
85
|
+
@theme = TestTheme.new(:red)
|
86
|
+
end
|
87
|
+
|
88
|
+
def self.it_has_color(name, steps)
|
89
|
+
it "has all variations of the #{name} color" do
|
90
|
+
%w(lightest lighter light mid dark darker darkest).each do |variation|
|
91
|
+
@theme.colors(name).should have_key(variation)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
it_has_color('minus_five', -5)
|
97
|
+
it_has_color('one', +1)
|
98
|
+
it_has_color('two', +2)
|
99
|
+
it_has_color('three', +3)
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
describe Sassafras::Tints do
|
106
|
+
|
107
|
+
before :each do
|
108
|
+
@tints = Sassafras::Tints.new(Color::RGB::Red)
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "accessing tints" do
|
112
|
+
|
113
|
+
it "has a base tint" do
|
114
|
+
@tints.mid.should == '#ff0000'
|
115
|
+
end
|
116
|
+
|
117
|
+
it "has a light tint" do
|
118
|
+
@tints.light.should == '#ff8080'
|
119
|
+
end
|
120
|
+
|
121
|
+
it "has a lighter tint" do
|
122
|
+
@tints.lighter.should == '#ffb3b3'
|
123
|
+
end
|
124
|
+
|
125
|
+
it "has a lightest tint" do
|
126
|
+
@tints.lightest.should == '#ffe6e6'
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
|
131
|
+
describe "when generating Sass output" do
|
132
|
+
|
133
|
+
it "outputs five levels of tints" do
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
describe "when generating colors with a prefixed name" do
|
138
|
+
before :each do
|
139
|
+
@tints = Sassafras::Tints.new(Color::RGB::Red, 'foo')
|
140
|
+
end
|
141
|
+
|
142
|
+
it "prefixes all of the colors with the specified prefix" do
|
143
|
+
@tints.colors.should have_key('foo_mid')
|
144
|
+
@tints.colors.should have_key('foo_light')
|
145
|
+
@tints.colors.should have_key('foo_lighter')
|
146
|
+
@tints.colors.should have_key('foo_lightest')
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
describe Sassafras::Shades do
|
153
|
+
|
154
|
+
before :each do
|
155
|
+
@shades = Sassafras::Shades.new(Color::RGB::Red)
|
156
|
+
end
|
157
|
+
|
158
|
+
describe "accessing shades" do
|
159
|
+
|
160
|
+
it "has a base shade" do
|
161
|
+
@shades.mid.should == '#ff0000'
|
162
|
+
end
|
163
|
+
|
164
|
+
it "has a dark shade" do
|
165
|
+
@shades.dark.should == '#800000'
|
166
|
+
end
|
167
|
+
|
168
|
+
it "has a darker shade" do
|
169
|
+
@shades.darker.should == '#4d0000'
|
170
|
+
end
|
171
|
+
|
172
|
+
it "has a darkest shade" do
|
173
|
+
@shades.darkest.should == '#1a0000'
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
describe "when generating colors with a prefixed name" do
|
178
|
+
before :each do
|
179
|
+
@shades = Sassafras::Shades.new(Color::RGB::Red, 'foo')
|
180
|
+
end
|
181
|
+
|
182
|
+
it "prefixes all of the colors with the specified prefix" do
|
183
|
+
@shades.colors.should have_key('foo_mid')
|
184
|
+
@shades.colors.should have_key('foo_dark')
|
185
|
+
@shades.colors.should have_key('foo_darker')
|
186
|
+
@shades.colors.should have_key('foo_darkest')
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
end
|
192
|
+
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
desc 'Release the website and new gem version'
|
2
|
+
task :deploy => [:check_version, :website, :release] do
|
3
|
+
puts "Remember to create SVN tag:"
|
4
|
+
puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
|
5
|
+
"svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
|
6
|
+
puts "Suggested comment:"
|
7
|
+
puts "Tagging release #{CHANGES}"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
|
11
|
+
task :local_deploy => [:website_generate, :install_gem]
|
12
|
+
|
13
|
+
task :check_version do
|
14
|
+
unless ENV['VERSION']
|
15
|
+
puts 'Must pass a VERSION=x.y.z release version'
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
unless ENV['VERSION'] == VERS
|
19
|
+
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
25
|
+
task :install_gem_no_doc => [:clean, :package] do
|
26
|
+
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
27
|
+
end
|
28
|
+
|
29
|
+
namespace :manifest do
|
30
|
+
desc 'Recreate Manifest.txt to include ALL files'
|
31
|
+
task :refresh do
|
32
|
+
`rake check_manifest | patch -p0 > Manifest.txt`
|
33
|
+
end
|
34
|
+
end
|
data/tasks/examples.rake
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
task :build_examples do
|
2
|
+
def build_example(sassafras_options, output_file)
|
3
|
+
sh "#{File.dirname(__FILE__)}/../bin/sassafras #{sassafras_options} > #{File.dirname(__FILE__)}/../examples/#{output_file}"
|
4
|
+
end
|
5
|
+
|
6
|
+
build_example '-t split_complementary -b blue -f html', 'split_complementary_blue.html'
|
7
|
+
build_example '-t analogous -b red -f html', 'analogous_red.html'
|
8
|
+
end
|
data/tasks/rspec.rake
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
begin
|
2
|
+
require 'spec'
|
3
|
+
rescue LoadError
|
4
|
+
require 'rubygems'
|
5
|
+
require 'spec'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'spec/rake/spectask'
|
9
|
+
rescue LoadError
|
10
|
+
puts <<-EOS
|
11
|
+
To use rspec for testing you must install rspec gem:
|
12
|
+
gem install rspec
|
13
|
+
EOS
|
14
|
+
exit(0)
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Run the specs under spec/models"
|
18
|
+
Spec::Rake::SpecTask.new do |t|
|
19
|
+
t.spec_opts = ['--options', "spec/spec.opts"]
|
20
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
21
|
+
end
|
data/tasks/website.rake
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
desc 'Generate website files'
|
2
|
+
task :website_generate => :ruby_env do
|
3
|
+
(Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
|
4
|
+
sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
desc 'Upload website files to rubyforge'
|
9
|
+
task :website_upload do
|
10
|
+
host = "#{rubyforge_username}@rubyforge.org"
|
11
|
+
remote_dir = "/var/www/gforge-projects/#{PATH}/"
|
12
|
+
local_dir = 'website'
|
13
|
+
sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Generate and upload website files'
|
17
|
+
task :website => [:website_generate, :website_upload, :publish_docs]
|
data/website/index.html
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
4
|
+
<title>sassafras</title>
|
5
|
+
|
6
|
+
</head>
|
7
|
+
<body id="body">
|
8
|
+
<p>This page has not yet been created for RubyGem <code>sassafras</code></p>
|
9
|
+
<p>To the developer: To generate it, update website/index.txt and run the rake task <code>website</code> to generate this <code>index.html</code> file.</p>
|
10
|
+
</body>
|
11
|
+
</html>
|
data/website/index.txt
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
h1. sassafras
|
2
|
+
|
3
|
+
h1. → 'sassafras'
|
4
|
+
|
5
|
+
|
6
|
+
h2. What
|
7
|
+
|
8
|
+
|
9
|
+
h2. Installing
|
10
|
+
|
11
|
+
<pre syntax="ruby">sudo gem install sassafras</pre>
|
12
|
+
|
13
|
+
h2. The basics
|
14
|
+
|
15
|
+
|
16
|
+
h2. Demonstration of usage
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
h2. Forum
|
21
|
+
|
22
|
+
"http://groups.google.com/group/sassafras":http://groups.google.com/group/sassafras
|
23
|
+
|
24
|
+
TODO - create Google Group - sassafras
|
25
|
+
|
26
|
+
h2. How to submit patches
|
27
|
+
|
28
|
+
Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
|
29
|
+
|
30
|
+
TODO - pick SVN or Git instructions
|
31
|
+
|
32
|
+
The trunk repository is <code>svn://rubyforge.org/var/svn/sassafras/trunk</code> for anonymous access.
|
33
|
+
|
34
|
+
OOOORRRR
|
35
|
+
|
36
|
+
You can fetch the source from either:
|
37
|
+
|
38
|
+
<% if rubyforge_project_id %>
|
39
|
+
|
40
|
+
* rubyforge: "http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>":http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>
|
41
|
+
|
42
|
+
<pre>git clone git://rubyforge.org/sassafras.git</pre>
|
43
|
+
|
44
|
+
<% else %>
|
45
|
+
|
46
|
+
* rubyforge: MISSING IN ACTION
|
47
|
+
|
48
|
+
TODO - You can not created a RubyForge project, OR have not run <code>rubyforge config</code>
|
49
|
+
yet to refresh your local rubyforge data with this projects' id information.
|
50
|
+
|
51
|
+
When you do this, this message will magically disappear!
|
52
|
+
|
53
|
+
Or you can hack website/index.txt and make it all go away!!
|
54
|
+
|
55
|
+
<% end %>
|
56
|
+
|
57
|
+
* github: "http://github.com/GITHUB_USERNAME/sassafras/tree/master":http://github.com/GITHUB_USERNAME/sassafras/tree/master
|
58
|
+
|
59
|
+
<pre>git clone git://github.com/GITHUB_USERNAME/sassafras.git</pre>
|
60
|
+
|
61
|
+
|
62
|
+
TODO - add "github_username: username" to ~/.rubyforge/user-config.yml and newgem will reuse it for future projects.
|
63
|
+
|
64
|
+
|
65
|
+
* gitorious: "git://gitorious.org/sassafras/mainline.git":git://gitorious.org/sassafras/mainline.git
|
66
|
+
|
67
|
+
<pre>git clone git://gitorious.org/sassafras/mainline.git</pre>
|
68
|
+
|
69
|
+
h3. Build and test instructions
|
70
|
+
|
71
|
+
<pre>cd sassafras
|
72
|
+
rake test
|
73
|
+
rake install_gem</pre>
|
74
|
+
|
75
|
+
|
76
|
+
h2. License
|
77
|
+
|
78
|
+
This code is free to use under the terms of the MIT license.
|
79
|
+
|
80
|
+
h2. Contact
|
81
|
+
|
82
|
+
Comments are welcome. Send an email to "FIXME full name":mailto:FIXME email via the "forum":http://groups.google.com/group/sassafras
|
83
|
+
|