work-bench 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
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 support HAML, SASS and Compass out of the box.
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 come with command line utility `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 the browser `http://localhost:4000`. And you will see the start page.
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
- The list of libraries available:
47
+ List of libraries available:
48
48
 
49
49
  workbench js
50
50
 
51
51
  ## normalize.css
52
52
 
53
- You may 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.
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
@@ -1 +1,6 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new('spec')
5
+
6
+ task :default => :spec
@@ -32,7 +32,7 @@ module Workbench
32
32
  use Sass::Plugin::Rack
33
33
  use Rack::StaticCache, :urls => [ '/css', '/js', '/img', '/favicon.ico' ], :root => './public', :versioning => false
34
34
 
35
- run Workbench::Server.new
35
+ run Workbench::Server.new path
36
36
  }.to_app
37
37
  end
38
38
 
@@ -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
- Workbench::Renderer.new(File.join(dir, template_dir, "_#{basename}")).render
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
+
@@ -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($root, 'haml', '/' == req.path ? 'index.haml' : req.path)
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::Renderer.new(file).render] ]
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
@@ -1,3 +1,3 @@
1
1
  module Workbench
2
- VERSION = "1.0.6"
2
+ VERSION = "1.0.7"
3
3
  end
data/lib/work_bench.rb CHANGED
@@ -4,7 +4,7 @@ require 'work_bench/js_libs'
4
4
  require 'work_bench/application'
5
5
  require 'work_bench/cli'
6
6
  require 'work_bench/server'
7
- require 'work_bench/renderer'
7
+ require 'work_bench/haml_renderer'
8
8
  require 'work_bench/haml_helpers'
9
9
  require 'work_bench/exporter'
10
10
 
@@ -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=\"&amp;\">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
@@ -0,0 +1,6 @@
1
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+
3
+ require 'rubygems'
4
+
5
+ require 'work_bench'
6
+ require 'rspec'
data/work_bench.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_development_dependency "yard"
22
22
  s.add_development_dependency "maruku"
23
+ s.add_development_dependency "rspec"
23
24
 
24
25
  s.add_dependency "rack"
25
26
  s.add_dependency "rack-test"
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.6
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-10 00:00:00.000000000Z
12
+ date: 2011-11-11 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yard
16
- requirement: &70357638679500 !ruby/object:Gem::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: *70357638679500
24
+ version_requirements: *70227779148420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: maruku
27
- requirement: &70357638679040 !ruby/object:Gem::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: *70357638679040
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: &70357638678560 !ruby/object:Gem::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: *70357638678560
57
+ version_requirements: *70227779146960
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: rack-test
49
- requirement: &70357638678140 !ruby/object:Gem::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: *70357638678140
68
+ version_requirements: *70227779146460
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: unicorn
60
- requirement: &70357638677640 !ruby/object:Gem::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: *70357638677640
79
+ version_requirements: *70227779145940
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: haml
71
- requirement: &70357638677140 !ruby/object:Gem::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: *70357638677140
90
+ version_requirements: *70227779145380
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: compass
82
- requirement: &70357638676600 !ruby/object:Gem::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: *70357638676600
101
+ version_requirements: *70227779144700
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: rack-cache
93
- requirement: &70357638676080 !ruby/object:Gem::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: *70357638676080
112
+ version_requirements: *70227779142920
102
113
  - !ruby/object:Gem::Dependency
103
114
  name: rack-contrib
104
- requirement: &70357638675420 !ruby/object:Gem::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: *70357638675420
123
+ version_requirements: *70227779142460
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: thor
115
- requirement: &70357638673580 !ruby/object:Gem::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: *70357638673580
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:
@@ -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