potatochop 0.0.1.beta → 0.0.1

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 Potatochop
2
- VERSION = "0.0.1.beta"
2
+ VERSION = "0.0.1"
3
3
  end
data/lib/potatochop.rb CHANGED
@@ -6,23 +6,47 @@ require 'sass'
6
6
  module Potatochop
7
7
  class Web < Sinatra::Base
8
8
  get '/*.html' do
9
- file_path = File.join(settings.working_dir, "#{params[:splat][0]}.html.haml")
9
+ file_path = File.join(settings.working_dir, "#{params[:splat][0]}.html")
10
+ # Static html first
10
11
  if File.exists? file_path
11
- Haml::Engine.new(File.read(file_path)).render
12
+ send_file file_path
13
+ # Haml next
14
+ elsif File.exists? file_path + ".haml"
15
+ Haml::Engine.new(File.read("#{file_path}.haml")).render
12
16
  else
13
17
  404
14
18
  end
15
19
  end
16
20
 
17
21
  get '/*.css' do
18
- file_path = File.join(settings.working_dir, "#{params[:splat][0]}.css.scss")
22
+ file_path = File.join(settings.working_dir, "#{params[:splat][0]}.css")
19
23
  if File.exists? file_path
20
24
  content_type 'text/css', :charset => 'utf-8'
21
- Sass::Engine.new(File.read(file_path), :syntax => :scss).render
25
+ send_file file_path
26
+ elsif File.exists? file_path + '.scss'
27
+ content_type 'text/css', :charset => 'utf-8'
28
+ Sass::Engine.new(File.read("#{file_path}.scss"), :syntax => :scss).render
29
+ else
30
+ 404
31
+ end
32
+ end
33
+
34
+ get %r{/(.*).(png|jpg|jpeg|gif)} do
35
+ file_path = File.join(settings.working_dir, "#{params[:captures][0]}.#{params[:captures][1]}")
36
+ if File.exists? file_path
37
+ send_file file_path
22
38
  else
23
39
  404
24
40
  end
25
41
  end
26
42
 
43
+ get '/*.js' do
44
+ file_path = File.join(settings.working_dir, "#{params[:splat][0]}.js")
45
+ if File.exists? file_path
46
+ send_file file_path
47
+ else
48
+ 404
49
+ end
50
+ end
27
51
  end
28
52
  end
data/potatochop.gemspec CHANGED
@@ -17,9 +17,11 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
  gem.add_runtime_dependency 'sinatra'
20
+ gem.add_runtime_dependency 'thin'
20
21
  gem.add_runtime_dependency 'haml'
21
22
  gem.add_runtime_dependency 'sass'
22
23
  gem.add_development_dependency 'rspec'
23
24
  gem.add_development_dependency 'rake'
24
25
  gem.add_development_dependency 'simplecov'
26
+ gem.add_development_dependency 'rack-test'
25
27
  end
@@ -0,0 +1,23 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>
5
+ Fake batch of mock ups.
6
+ </title>
7
+ <link href='css/bar.css' media='screen' rel='stylesheet' type='text/css' />
8
+ </head>
9
+ <body>
10
+ <h1>
11
+ This page is static HTML.
12
+ </h1>
13
+ <p>
14
+ This a paragraph.
15
+ </p>
16
+ <p>
17
+ And here is an image taken from the internet:
18
+ <br />
19
+ <img src='img/potatochop_cs4_box.png' />
20
+ </p>
21
+ <script src="js/bar.js" type="text/javascript"></script>
22
+ </body>
23
+ </html>
@@ -0,0 +1 @@
1
+ body h1 { color: blue; }
@@ -9,3 +9,7 @@
9
9
  This is an H1!
10
10
  %p
11
11
  This a paragraph.
12
+ %p
13
+ And here is an image taken from <a href="http://uncyclopedia.wikia.com/wiki/File:Adobe_potatochop_cs4_box.png">the internet</a>:
14
+ %br
15
+ %img{ :src => 'img/potatochop_cs4_box.png' }
@@ -0,0 +1,3 @@
1
+ setTimeout(function() {
2
+ alert("JS is on!");
3
+ }, 1000);
@@ -8,26 +8,56 @@ describe 'Potatochop' do
8
8
  describe 'Web' do
9
9
  app.set('working_dir','/Users/mertonium/Code/potatochop/spec/fake_site')
10
10
  include Rack::Test::Methods
11
-
11
+
12
12
  it 'returns an error when a haml page does not exist' do
13
13
  get 'no_exist.html'
14
14
  last_response.should_not be_ok
15
15
  end
16
-
16
+
17
17
  it 'renders a haml page that exists' do
18
18
  get '/foo.html'
19
19
  last_response.body.should match('<h1>\s+This is an H1!\s+</h1>')
20
20
  end
21
21
 
22
+ it 'renders an html page that exists' do
23
+ get '/bar.html'
24
+ last_response.body.should match('This page is static HTML')
25
+ end
26
+
22
27
  it 'returns an error when a sass file does not exist' do
23
28
  get 'no_exist.css'
24
29
  last_response.should_not be_ok
25
30
  end
26
-
27
- it 'renders a haml page that exists' do
31
+
32
+ it 'renders a sass stylesheet that exists' do
28
33
  get '/css/foo.css'
29
34
  last_response.body.should match('body h1 {\s+color: red; }')
30
35
  end
36
+
37
+ it 'renders a static stylesheet that exists' do
38
+ get '/css/bar.css'
39
+ last_response.body.should match('body h1 { color: blue; }')
40
+ end
41
+
42
+ it 'returns an error when a requested image file does not exist' do
43
+ get 'no_exist.png'
44
+ last_response.should_not be_ok
45
+ end
46
+
47
+ it 'returns a requested image file when it exists' do
48
+ get '/img/potatochop_cs4_box.png'
49
+ last_response.should be_ok
50
+ end
51
+
52
+ it 'returns an error when a requested javascript file does not exist' do
53
+ get '/no_exist.js'
54
+ last_response.should_not be_ok
55
+ end
56
+
57
+ it 'returns the requested javascript file if it exists' do
58
+ get '/js/bar.js'
59
+ last_response.should be_ok
60
+ end
31
61
 
32
62
  end
33
63
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: potatochop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.beta
5
- prerelease: 6
4
+ version: 0.0.1
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - John Mertens
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-30 00:00:00.000000000 Z
12
+ date: 2014-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: thin
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: haml
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +123,22 @@ dependencies:
107
123
  - - ! '>='
108
124
  - !ruby/object:Gem::Version
109
125
  version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rack-test
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
110
142
  description: Potatochop - because F$%k Photoshop, that's why.
111
143
  email:
112
144
  - john@versahq.com
@@ -125,8 +157,12 @@ files:
125
157
  - lib/potatochop.rb
126
158
  - lib/potatochop/version.rb
127
159
  - potatochop.gemspec
160
+ - spec/fake_site/bar.html
161
+ - spec/fake_site/css/bar.css
128
162
  - spec/fake_site/css/foo.css.scss
129
163
  - spec/fake_site/foo.html.haml
164
+ - spec/fake_site/img/potatochop_cs4_box.png
165
+ - spec/fake_site/js/bar.js
130
166
  - spec/helper.rb
131
167
  - spec/potatochop_spec.rb
132
168
  homepage: https://github.com/VersaHQ/potatochop
@@ -144,9 +180,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
180
  required_rubygems_version: !ruby/object:Gem::Requirement
145
181
  none: false
146
182
  requirements:
147
- - - ! '>'
183
+ - - ! '>='
148
184
  - !ruby/object:Gem::Version
149
- version: 1.3.1
185
+ version: '0'
150
186
  requirements: []
151
187
  rubyforge_project:
152
188
  rubygems_version: 1.8.24
@@ -155,7 +191,11 @@ specification_version: 3
155
191
  summary: Potatochop is a simple server that compiles and serves up HAML and SASS files.
156
192
  The goal is to reduce friction between designers and devs in a Rails project.
157
193
  test_files:
194
+ - spec/fake_site/bar.html
195
+ - spec/fake_site/css/bar.css
158
196
  - spec/fake_site/css/foo.css.scss
159
197
  - spec/fake_site/foo.html.haml
198
+ - spec/fake_site/img/potatochop_cs4_box.png
199
+ - spec/fake_site/js/bar.js
160
200
  - spec/helper.rb
161
201
  - spec/potatochop_spec.rb