work-bench 1.0.6 → 1.0.7
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/README.md +6 -6
- data/Rakefile +5 -0
- data/lib/work_bench/application.rb +1 -1
- data/lib/work_bench/haml_helpers.rb +1 -1
- data/lib/work_bench/haml_renderer.rb +35 -0
- data/lib/work_bench/server.rb +6 -3
- data/lib/work_bench/version.rb +1 -1
- data/lib/work_bench.rb +1 -1
- data/spec/fixtures/index.haml +1 -0
- data/spec/haml_renderer_spec.rb +20 -0
- data/spec/spec_helper.rb +6 -0
- data/work_bench.gemspec +1 -0
- metadata +41 -24
- data/lib/work_bench/renderer.rb +0 -22
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Workbench
|
2
2
|
|
3
|
-
Workbench is a quick and simple local web server for prototyping web applications and sites. It
|
3
|
+
Workbench is a quick and simple local web server for prototyping web applications and sites. It supports HAML, SASS and Compass out of the box.
|
4
4
|
|
5
5
|
## Install
|
6
6
|
|
@@ -8,11 +8,11 @@ The first step is to install the gem:
|
|
8
8
|
|
9
9
|
gem install work-bench
|
10
10
|
|
11
|
-
Workbench
|
11
|
+
Workbench comes with command line utility `workbench`.
|
12
12
|
|
13
13
|
## Create first project
|
14
14
|
|
15
|
-
Next we need create project.
|
15
|
+
Next we need to create project.
|
16
16
|
|
17
17
|
mkdir project
|
18
18
|
cd project
|
@@ -24,7 +24,7 @@ Inside project directory run:
|
|
24
24
|
|
25
25
|
workbench start
|
26
26
|
|
27
|
-
Now type in
|
27
|
+
Now type in browser `http://localhost:4000`. And you will see the start page.
|
28
28
|
|
29
29
|
## Export prototype
|
30
30
|
|
@@ -44,13 +44,13 @@ You can specify the JS libraries to be used in your project.
|
|
44
44
|
|
45
45
|
workbench init --js jquery json
|
46
46
|
|
47
|
-
|
47
|
+
List of libraries available:
|
48
48
|
|
49
49
|
workbench js
|
50
50
|
|
51
51
|
## normalize.css
|
52
52
|
|
53
|
-
You
|
53
|
+
You can add awesome [normalize.css](https://github.com/jonathantneal/normalize.css) to project. Just use `--normalize` or `--no-normalize` in options. This feature is **enabled** by default.
|
54
54
|
|
55
55
|
workbench init --normalize
|
56
56
|
|
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ module Haml
|
|
7
7
|
template = template + '.haml'
|
8
8
|
template_dir = File.dirname(template)
|
9
9
|
basename = File.basename(template)
|
10
|
-
|
10
|
+
Workbench::HamlRenderer.render File.join(dir, template_dir, "_#{basename}")
|
11
11
|
end
|
12
12
|
|
13
13
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Workbench
|
2
|
+
|
3
|
+
class HamlRenderer
|
4
|
+
|
5
|
+
@options = {
|
6
|
+
:escape_attrs => true,
|
7
|
+
:attr_wrapper => '"',
|
8
|
+
:format => :html4
|
9
|
+
}
|
10
|
+
|
11
|
+
class << self
|
12
|
+
|
13
|
+
# @return [Hash] the list of options
|
14
|
+
attr_accessor :options
|
15
|
+
|
16
|
+
# Parse HAML file with options
|
17
|
+
#
|
18
|
+
# @param [String] filename path to file
|
19
|
+
# @param [Hash] options options
|
20
|
+
# @return [String] parsed content
|
21
|
+
#
|
22
|
+
# @example
|
23
|
+
# result = Workbench::HamlRenderer.render 'index.haml', { :attr_wrapper => "'", :escape_attrs => false }
|
24
|
+
#
|
25
|
+
def render filename, options = {}
|
26
|
+
options = @options.merge(options)
|
27
|
+
Haml::Engine.new(File.read(filename), options).render
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
data/lib/work_bench/server.rb
CHANGED
@@ -2,10 +2,13 @@ module Workbench
|
|
2
2
|
|
3
3
|
class Server
|
4
4
|
|
5
|
+
def initialize path
|
6
|
+
@path = path
|
7
|
+
end
|
8
|
+
|
5
9
|
def call(env)
|
6
10
|
req = Rack::Request.new(env)
|
7
|
-
file = File.join(
|
8
|
-
$file = file
|
11
|
+
file = File.join(@path, 'haml', '/' == req.path ? 'index.haml' : req.path)
|
9
12
|
ext = File.extname(file)
|
10
13
|
if ext.empty?
|
11
14
|
file = file + '.haml'
|
@@ -15,7 +18,7 @@ module Workbench
|
|
15
18
|
Rack::File.new(File.join($root, 'haml')).call(env)
|
16
19
|
else
|
17
20
|
if File.exists? file
|
18
|
-
[ 200, {'Content-Type' => 'text/html'}, [Workbench::
|
21
|
+
[ 200, {'Content-Type' => 'text/html'}, [Workbench::HamlRenderer.render(file)] ]
|
19
22
|
else
|
20
23
|
[ 404, {'Content-Type' => 'text/html'}, ['File not found: '+req.path] ]
|
21
24
|
end
|
data/lib/work_bench/version.rb
CHANGED
data/lib/work_bench.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
%h1{:style => "color: red", :title => "&"} Hello world!
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Workbench::HamlRenderer do
|
5
|
+
|
6
|
+
before do
|
7
|
+
@root = File.dirname(__FILE__) + '/fixtures'
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'должен рендерить HAML файл' do
|
11
|
+
result = Workbench::HamlRenderer.render "#{@root}/index.haml"
|
12
|
+
result.should == "<h1 style=\"color: red\" title=\"&\">Hello world!</h1>\n"
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'должен рендерить HAML файл с указанными опциями' do
|
16
|
+
result = Workbench::HamlRenderer.render "#{@root}/index.haml", { :attr_wrapper => "'", :escape_attrs => false }
|
17
|
+
result.should == "<h1 style='color: red' title='&'>Hello world!</h1>\n"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/spec/spec_helper.rb
ADDED
data/work_bench.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: work-bench
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-11 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: yard
|
16
|
-
requirement: &
|
16
|
+
requirement: &70227779148420 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70227779148420
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: maruku
|
27
|
-
requirement: &
|
27
|
+
requirement: &70227779147860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,21 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70227779147860
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &70227779147420 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70227779147420
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: rack
|
38
|
-
requirement: &
|
49
|
+
requirement: &70227779146960 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ! '>='
|
@@ -43,10 +54,10 @@ dependencies:
|
|
43
54
|
version: '0'
|
44
55
|
type: :runtime
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *70227779146960
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: rack-test
|
49
|
-
requirement: &
|
60
|
+
requirement: &70227779146460 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ! '>='
|
@@ -54,10 +65,10 @@ dependencies:
|
|
54
65
|
version: '0'
|
55
66
|
type: :runtime
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *70227779146460
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: unicorn
|
60
|
-
requirement: &
|
71
|
+
requirement: &70227779145940 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: '0'
|
66
77
|
type: :runtime
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *70227779145940
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: haml
|
71
|
-
requirement: &
|
82
|
+
requirement: &70227779145380 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :runtime
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70227779145380
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: compass
|
82
|
-
requirement: &
|
93
|
+
requirement: &70227779144700 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: '0'
|
88
99
|
type: :runtime
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *70227779144700
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: rack-cache
|
93
|
-
requirement: &
|
104
|
+
requirement: &70227779142920 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :runtime
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70227779142920
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: rack-contrib
|
104
|
-
requirement: &
|
115
|
+
requirement: &70227779142460 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: '0'
|
110
121
|
type: :runtime
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *70227779142460
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: thor
|
115
|
-
requirement: &
|
126
|
+
requirement: &70227779141900 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,7 +131,7 @@ dependencies:
|
|
120
131
|
version: '0'
|
121
132
|
type: :runtime
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *70227779141900
|
124
135
|
description: A quick and simple local web server for prototyping web applications
|
125
136
|
with HAML, SASS and Compass support.
|
126
137
|
email: konstantin.savelyev@gmail.com
|
@@ -141,10 +152,13 @@ files:
|
|
141
152
|
- lib/work_bench/dependencies.rb
|
142
153
|
- lib/work_bench/exporter.rb
|
143
154
|
- lib/work_bench/haml_helpers.rb
|
155
|
+
- lib/work_bench/haml_renderer.rb
|
144
156
|
- lib/work_bench/js_libs.rb
|
145
|
-
- lib/work_bench/renderer.rb
|
146
157
|
- lib/work_bench/server.rb
|
147
158
|
- lib/work_bench/version.rb
|
159
|
+
- spec/fixtures/index.haml
|
160
|
+
- spec/haml_renderer_spec.rb
|
161
|
+
- spec/spec_helper.rb
|
148
162
|
- template/Gemfile
|
149
163
|
- template/_normalize.scss
|
150
164
|
- template/index.haml
|
@@ -176,5 +190,8 @@ signing_key:
|
|
176
190
|
specification_version: 3
|
177
191
|
summary: A quick and simple local web server for prototyping web applications with
|
178
192
|
HAML, SASS and Compass support.
|
179
|
-
test_files:
|
193
|
+
test_files:
|
194
|
+
- spec/fixtures/index.haml
|
195
|
+
- spec/haml_renderer_spec.rb
|
196
|
+
- spec/spec_helper.rb
|
180
197
|
has_rdoc:
|
data/lib/work_bench/renderer.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
module Workbench
|
2
|
-
|
3
|
-
class Renderer
|
4
|
-
|
5
|
-
def initialize file, options = {}
|
6
|
-
@file = file
|
7
|
-
@options = {
|
8
|
-
:escape_attrs => true,
|
9
|
-
:attr_wrapper => '"',
|
10
|
-
:format => :html4
|
11
|
-
}.merge(options)
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
def render
|
16
|
-
engine = Haml::Engine.new(File.read(@file), @options)
|
17
|
-
engine.render
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|