midwife 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +3 -1
- data/README.md +10 -4
- data/lib/midwife/helpers.rb +0 -1
- data/lib/midwife/tasks.rb +51 -5
- data/lib/midwife/version.rb +1 -1
- data/midwife.gemspec +1 -0
- metadata +20 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
midwife (0.0.
|
4
|
+
midwife (0.0.8)
|
5
|
+
chunky_png (= 1.2.6)
|
5
6
|
haml (= 3.1.7)
|
6
7
|
listen (= 0.5.3)
|
7
8
|
rack (= 1.4.1)
|
@@ -14,6 +15,7 @@ PATH
|
|
14
15
|
GEM
|
15
16
|
remote: https://rubygems.org/
|
16
17
|
specs:
|
18
|
+
chunky_png (1.2.6)
|
17
19
|
execjs (1.4.0)
|
18
20
|
multi_json (~> 1.0)
|
19
21
|
haml (3.1.7)
|
data/README.md
CHANGED
@@ -19,14 +19,20 @@ The rest:
|
|
19
19
|
|
20
20
|
## Usage
|
21
21
|
|
22
|
-
rake care # Care for your haml/scss
|
23
|
-
rake listen # Listen to your haml/scss
|
24
|
-
rake serve # Serve your haml/scss
|
22
|
+
rake care # Care for your haml/scss/js
|
23
|
+
rake listen # Listen to your haml/scss/js
|
24
|
+
rake serve # Serve your haml/scss/js
|
25
25
|
rake setup # Setup your environment
|
26
26
|
|
27
27
|
---
|
28
28
|
|
29
|
-
Make an `assets` folder, and drop your haml and
|
29
|
+
Make an `assets` folder, and drop your haml, scss and js files in there. Running `rake care` will process haml, scss and js files once, and drop the artifacts into the `public` fodler. Run `rake listen` will process each time you touch the files. Run `rake serve` to start a web server running on [localhost:9292](http://localhost:9292) that listens to every change you make.
|
30
|
+
|
31
|
+
## Helpers
|
32
|
+
|
33
|
+
```haml
|
34
|
+
= render "partial" # file name must be prefixed with an underscore, ie. _partial.haml.
|
35
|
+
```
|
30
36
|
|
31
37
|
## Deploy to Heroku
|
32
38
|
|
data/lib/midwife/helpers.rb
CHANGED
@@ -8,7 +8,6 @@ module Midwife
|
|
8
8
|
partial_file = "#{@current}/_#{partial}.haml"
|
9
9
|
template = File.read(partial_file)
|
10
10
|
output = Haml::Engine.new(template).render(Helpers.new(@current))
|
11
|
-
puts "haml: convert #{partial_file}."
|
12
11
|
return output
|
13
12
|
rescue Exception => e
|
14
13
|
puts "haml: failed to convert #{partial_file}."
|
data/lib/midwife/tasks.rb
CHANGED
@@ -2,6 +2,8 @@ require 'haml'
|
|
2
2
|
require 'listen'
|
3
3
|
require 'sass'
|
4
4
|
require 'uglifier'
|
5
|
+
require 'chunky_png'
|
6
|
+
require 'ostruct'
|
5
7
|
|
6
8
|
module Midwife
|
7
9
|
class Tasks
|
@@ -13,6 +15,7 @@ module Midwife
|
|
13
15
|
HAML = FileList[ASSETS + '/**/*.haml']
|
14
16
|
SCSS = FileList[ASSETS + '/**/*.scss']
|
15
17
|
JS = FileList[ASSETS + '/**/*.js']
|
18
|
+
PNG = FileList[ASSETS + '/**/*.png']
|
16
19
|
|
17
20
|
EXT_SYNTAX = {
|
18
21
|
'.haml' => { :ext => 'html', :syntax => :haml },
|
@@ -22,17 +25,20 @@ module Midwife
|
|
22
25
|
|
23
26
|
class << self
|
24
27
|
def build
|
25
|
-
desc 'Care for your haml
|
28
|
+
desc 'Care for your haml, scss, and js'
|
26
29
|
task(:care) { care }
|
27
30
|
|
28
|
-
desc 'Listen to your haml
|
31
|
+
desc 'Listen to your haml, scss, and js'
|
29
32
|
task(:listen) { listen }
|
30
33
|
|
31
34
|
desc 'Setup your environment'
|
32
35
|
task(:setup) { setup }
|
33
36
|
|
34
|
-
desc 'Serve your haml
|
37
|
+
desc 'Serve your haml, scss and js'
|
35
38
|
task(:serve) { serve }
|
39
|
+
|
40
|
+
desc 'Stitch your png'
|
41
|
+
task(:stitch) { stitch }
|
36
42
|
end
|
37
43
|
|
38
44
|
def render(source)
|
@@ -42,13 +48,14 @@ module Midwife
|
|
42
48
|
ext_syntax = EXT_SYNTAX[extension]
|
43
49
|
syntax = ext_syntax[:syntax]
|
44
50
|
destination = source.ext(ext_syntax[:ext]).gsub(ASSETS, PUBLIC)
|
51
|
+
source_dir = File.dirname(source)
|
45
52
|
FileUtils.mkdir_p(File.dirname(destination))
|
46
53
|
|
47
|
-
helpers = Helpers.new(
|
54
|
+
helpers = Helpers.new(source_dir)
|
48
55
|
template = File.read(source)
|
49
56
|
output = case syntax
|
50
57
|
when :haml; Haml::Engine.new(template, {:format => :html5, :ugly => true}).render(helpers)
|
51
|
-
when :scss; Sass::Engine.new(template, {:syntax => syntax, :style => :compressed}).render
|
58
|
+
when :scss; Sass::Engine.new(template, {:syntax => syntax, :style => :compressed, :load_paths => [source_dir]}).render
|
52
59
|
when :js; Uglifier.compile(template)
|
53
60
|
end
|
54
61
|
|
@@ -92,6 +99,10 @@ module Midwife
|
|
92
99
|
def setup
|
93
100
|
FileUtils.mkdir_p(ASSETS) unless File.exists?(ASSETS)
|
94
101
|
FileUtils.mkdir_p(PUBLIC) unless File.exists?(PUBLIC)
|
102
|
+
FileUtils.mkdir_p(ASSETS + '/images') unless File.exists?(ASSETS + '/images')
|
103
|
+
FileUtils.mkdir_p(ASSETS + '/stylesheets') unless File.exists?(ASSETS + '/stylesheets')
|
104
|
+
FileUtils.mkdir_p(PUBLIC + '/images') unless File.exists?(PUBLIC + '/images')
|
105
|
+
FileUtils.mkdir_p(PUBLIC + '/stylesheets') unless File.exists?(PUBLIC + '/images')
|
95
106
|
|
96
107
|
current_dir = File.expand_path(File.dirname(__FILE__))
|
97
108
|
|
@@ -103,6 +114,41 @@ module Midwife
|
|
103
114
|
fork { listen }
|
104
115
|
`rackup`
|
105
116
|
end
|
117
|
+
|
118
|
+
def stitch
|
119
|
+
offset_height = 0
|
120
|
+
|
121
|
+
sprites = PNG.collect do |file|
|
122
|
+
image = ChunkyPNG::Image.from_file(file)
|
123
|
+
sprite = OpenStruct.new
|
124
|
+
sprite.name = File.basename(file, '.png')
|
125
|
+
sprite.image = image
|
126
|
+
sprite.min_width = 0
|
127
|
+
sprite.max_width = image.width
|
128
|
+
sprite.min_height = offset_height
|
129
|
+
sprite.max_height = offset_height + image.height
|
130
|
+
offset_height = sprite.max_height
|
131
|
+
sprite
|
132
|
+
end
|
133
|
+
|
134
|
+
max_width = sprites.collect(&:max_width).max
|
135
|
+
max_height = sprites.last.max_height
|
136
|
+
target = ChunkyPNG::Image.new(max_width, max_height, ChunkyPNG::Color::TRANSPARENT)
|
137
|
+
|
138
|
+
css = ''
|
139
|
+
sprites.each do |sprite|
|
140
|
+
css = css + '.' + sprite.name + "-image { background:url(../images/application.png) 0 #{-1 * sprite.min_height}px; }\n"
|
141
|
+
target.compose!(sprite.image, 0, sprite.min_height)
|
142
|
+
puts "png: stitch #{sprite.name} to application.png"
|
143
|
+
end
|
144
|
+
|
145
|
+
File.open(ASSETS + '/stylesheets/_sprites.scss', 'w') do |file|
|
146
|
+
puts "scss: create assets/stylesheets/_sprites.scss"
|
147
|
+
file.write(css)
|
148
|
+
end
|
149
|
+
|
150
|
+
target.save(PUBLIC + '/images/application.png')
|
151
|
+
end
|
106
152
|
end
|
107
153
|
end
|
108
154
|
end
|
data/lib/midwife/version.rb
CHANGED
data/midwife.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_dependency "rack", "1.4.1"
|
20
20
|
s.add_dependency "rack-contrib", "1.1.0"
|
21
21
|
s.add_dependency "uglifier", "1.3.0"
|
22
|
+
s.add_dependency "chunky_png", "1.2.6"
|
22
23
|
|
23
24
|
s.files = `git ls-files`.split("\n")
|
24
25
|
s.require_paths = ["lib"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: midwife
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -139,6 +139,22 @@ dependencies:
|
|
139
139
|
- - '='
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: 1.3.0
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: chunky_png
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - '='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 1.2.6
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - '='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 1.2.6
|
142
158
|
description: ''
|
143
159
|
email:
|
144
160
|
- lihsuan@8thlight.com
|
@@ -172,7 +188,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
172
188
|
version: '0'
|
173
189
|
segments:
|
174
190
|
- 0
|
175
|
-
hash:
|
191
|
+
hash: 2694047856860377402
|
176
192
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
193
|
none: false
|
178
194
|
requirements:
|
@@ -181,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
197
|
version: '0'
|
182
198
|
segments:
|
183
199
|
- 0
|
184
|
-
hash:
|
200
|
+
hash: 2694047856860377402
|
185
201
|
requirements: []
|
186
202
|
rubyforge_project:
|
187
203
|
rubygems_version: 1.8.24
|