showoff 0.6.0 → 0.7.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/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ require 'rake/testtask'
2
+
1
3
  begin
2
4
  require 'mg'
3
5
  rescue LoadError
@@ -5,3 +7,21 @@ rescue LoadError
5
7
  end
6
8
 
7
9
  MG.new("showoff.gemspec")
10
+
11
+ #
12
+ # Tests
13
+ #
14
+
15
+ task :default => :test
16
+
17
+ desc "Run tests"
18
+ task :turn do
19
+ suffix = "-n #{ENV['TEST']}" if ENV['TEST']
20
+ sh "turn test/*_test.rb #{suffix}"
21
+ end
22
+
23
+ Rake::TestTask.new do |t|
24
+ t.libs << 'lib'
25
+ t.pattern = 'test/**/*_test.rb'
26
+ t.verbose = false
27
+ end
data/bin/showoff CHANGED
@@ -24,6 +24,11 @@ command [:create,:init] do |c|
24
24
  c.action do |global_options,options,args|
25
25
  raise "dir_name is required" if args.empty?
26
26
  ShowOffUtils.create(args[0],!options[:n],options[:d])
27
+ if !options[:n]
28
+ puts "done. run 'showoff serve' in #{options[:d]}/ dir to see slideshow"
29
+ else
30
+ puts "done. add slides, modify #{ShowOffUtils.presentation_config_file} and then run 'showoff serve' in #{dirname}/ dir to see slideshow"
31
+ end
27
32
  end
28
33
  end
29
34
 
@@ -31,7 +36,13 @@ desc 'Puts your showoff presentation into a gh-pages branch'
31
36
  long_desc 'Generates a static version of your presentation into your gh-pages branch for publishing to GitHub Pages'
32
37
  command :github do |c|
33
38
  c.action do |global_options,options,args|
39
+ puts "Generating static content"
34
40
  ShowOffUtils.github
41
+ puts "I've updated your 'gh-pages' branch with the static version of your presentation."
42
+ puts "Push it to GitHub to publish it. Probably something like:"
43
+ puts
44
+ puts " git push origin gh-pages"
45
+ puts
35
46
  end
36
47
  end
37
48
 
@@ -52,7 +63,25 @@ command :heroku do |c|
52
63
 
53
64
  c.action do |global_options,options,args|
54
65
  raise "heroku_name is required" if args.empty?
55
- ShowOffUtils.heroku(args[0],options[:f],options[:p],options[:g])
66
+ if ShowOffUtils.heroku(args[0],options[:f],options[:p],options[:g])
67
+ puts "herokuized. run something like this to launch your heroku presentation:
68
+
69
+ heroku create #{args[0]}"
70
+
71
+ if options[:g]
72
+ puts " git add .gems config.ru"
73
+ else
74
+ puts " bundle install"
75
+ puts " git add Gemfile Gemfile.lock config.ru"
76
+ end
77
+ puts " git commit -m 'herokuized'
78
+ git push heroku master
79
+ "
80
+
81
+ if options[:p]
82
+ puts "CAREFUL: you are commiting your access password - anyone with read access to the repo can access the preso\n\n"
83
+ end
84
+ end
56
85
  end
57
86
  end
58
87
 
@@ -77,6 +106,20 @@ command :serve do |c|
77
106
  c.flag [:f, :pres_file]
78
107
 
79
108
  c.action do |global_options,options,args|
109
+
110
+ url = "http://#{options[:h]}:#{options[:p].to_i}"
111
+ puts "
112
+ -------------------------
113
+
114
+ Your ShowOff presentation is now starting up.
115
+
116
+ To view it plainly, visit [ #{url} ]
117
+
118
+ To run it from presenter view, go to: [ #{url}/presenter ]
119
+
120
+ -------------------------
121
+
122
+ "
80
123
  ShowOff.run! :host => options[:h], :port => options[:p].to_i, :pres_file => options[:f], :pres_dir => args[0], :verbose => options[:verbose]
81
124
  end
82
125
  end
data/lib/showoff.rb CHANGED
@@ -7,7 +7,6 @@ require 'logger'
7
7
 
8
8
  here = File.expand_path(File.dirname(__FILE__))
9
9
  require "#{here}/showoff_utils"
10
- require "#{here}/princely"
11
10
  require "#{here}/commandline_parser"
12
11
 
13
12
  begin
@@ -32,13 +31,17 @@ end
32
31
 
33
32
  class ShowOff < Sinatra::Application
34
33
 
35
- Version = VERSION = '0.6.0'
34
+ Version = VERSION = '0.7.0'
36
35
 
37
36
  attr_reader :cached_image_size
38
37
 
39
38
  set :views, File.dirname(__FILE__) + '/../views'
40
39
  set :public, File.dirname(__FILE__) + '/../public'
41
40
 
41
+ set :verbose, false
42
+ set :pres_dir, '.'
43
+ set :pres_file, 'showoff.json'
44
+
42
45
  def initialize(app=nil)
43
46
  super(app)
44
47
  @logger = Logger.new(STDOUT)
@@ -49,25 +52,24 @@ class ShowOff < Sinatra::Application
49
52
  @logger.debug(dir)
50
53
 
51
54
  showoff_dir = File.expand_path(File.join(File.dirname(__FILE__), '..'))
52
- if Dir.pwd == showoff_dir
53
- options.pres_dir = "#{showoff_dir}/example"
54
- @root_path = "."
55
- else
56
- options.pres_dir ||= Dir.pwd
57
- @root_path = ".."
58
- end
55
+ options.pres_dir ||= Dir.pwd
56
+ @root_path = "."
57
+
59
58
  options.pres_dir = File.expand_path(options.pres_dir)
60
59
  if (options.pres_file)
61
- puts "Using #{options.pres_file}"
62
60
  ShowOffUtils.presentation_config_file = options.pres_file
63
61
  end
64
- puts "Serving presentation from #{options.pres_dir}"
65
62
  @cached_image_size = {}
66
63
  @logger.debug options.pres_dir
67
64
  @pres_name = options.pres_dir.split('/').pop
68
65
  require_ruby_files
69
66
  end
70
67
 
68
+ def self.pres_dir_current
69
+ opt = {:pres_dir => Dir.pwd}
70
+ ShowOff.set opt
71
+ end
72
+
71
73
  def require_ruby_files
72
74
  Dir.glob("#{options.pres_dir}/*.rb").map { |path| require path }
73
75
  end
@@ -123,7 +125,7 @@ class ShowOff < Sinatra::Application
123
125
 
124
126
  # todo: unit test
125
127
  lines = content.split("\n")
126
- puts "#{name}: #{lines.length} lines"
128
+ @logger.debug "#{name}: #{lines.length} lines"
127
129
  slides = []
128
130
  slides << (slide = Slide.new)
129
131
  until lines.empty?
@@ -327,6 +329,10 @@ class ShowOff < Sinatra::Application
327
329
  erb :index
328
330
  end
329
331
 
332
+ def presenter
333
+ erb :presenter
334
+ end
335
+
330
336
  def clean_link(href)
331
337
  if href && href[0, 1] == '/'
332
338
  href = href[1, href.size]
@@ -404,7 +410,7 @@ class ShowOff < Sinatra::Application
404
410
  if data.is_a?(File)
405
411
  FileUtils.cp(data.path, "#{name}.pdf")
406
412
  else
407
- out = "#{path}/#{name}/static"
413
+ out = File.expand_path("#{path}/static")
408
414
  # First make a directory
409
415
  FileUtils.makedirs(out)
410
416
  # Then write the html
data/lib/showoff_utils.rb CHANGED
@@ -25,12 +25,6 @@ class ShowOffUtils
25
25
  File.open(ShowOffUtils.presentation_config_file, 'w+') do |f|
26
26
  f.puts "{ \"name\": \"My Preso\", \"sections\": [ {\"section\":\"#{dir}\"} ]}"
27
27
  end
28
-
29
- if create_samples
30
- puts "done. run 'showoff serve' in #{dirname}/ dir to see slideshow"
31
- else
32
- puts "done. add slides, modify #{ShowOffUtils.presentation_config_file} and then run 'showoff serve' in #{dirname}/ dir to see slideshow"
33
- end
34
28
  end
35
29
  end
36
30
 
@@ -43,13 +37,8 @@ class ShowOffUtils
43
37
  # name - String containing heroku name
44
38
  # force - boolean if .gems/Gemfile and config.ru should be overwritten if they don't exist
45
39
  # password - String containing password to protect your heroku site; nil means no password protection
46
- # use_dot_gems - boolea that, if true, indicates we should use the old, deprecated .gems file instead of Bundler
47
- def self.heroku(name,force,password,use_dot_gems)
48
- if !File.exists?(ShowOffUtils.presentation_config_file)
49
- puts "fail. not a showoff directory"
50
- return false
51
- end
52
-
40
+ # use_dot_gems - boolean that, if true, indicates we should use the old, deprecated .gems file instead of Bundler
41
+ def self.heroku(name, force = false, password = nil, use_dot_gems = false)
53
42
  modified_something = false
54
43
 
55
44
  if use_dot_gems
@@ -80,26 +69,11 @@ class ShowOffUtils
80
69
  end
81
70
  end
82
71
 
83
- if modified_something
84
- puts "herokuized. run something like this to launch your heroku presentation:
85
-
86
- heroku create #{name}"
87
-
88
- if use_dot_gems
89
- puts " git add #{HEROKU_GEMS_FILE} #{HEROKU_CONFIG_FILE}"
90
- else
91
- puts " bundle install
92
- git add Gemfile.lock #{HEROKU_GEMS_FILE} #{HEROKU_CONFIG_FILE}"
93
- end
94
- puts " git commit -m 'herokuized'
95
- git push heroku master
96
- "
97
- end
72
+ modified_something
98
73
  end
99
74
 
100
75
  # generate a static version of the site into the gh-pages branch
101
76
  def self.github
102
- puts "Generating static content"
103
77
  ShowOff.do_static(nil)
104
78
  `git add static`
105
79
  sha = `git write-tree`.chomp
@@ -109,11 +83,6 @@ class ShowOffUtils
109
83
  extra = ghp_sha != 'gh-pages' ? "-p #{ghp_sha}" : ''
110
84
  commit_sha = `echo 'static presentation' | git commit-tree #{tree_sha} #{extra}`.chomp
111
85
  `git update-ref refs/heads/gh-pages #{commit_sha}`
112
- puts "I've updated your 'gh-pages' branch with the static version of your presentation."
113
- puts "Push it to GitHub to publish it. Probably something like:"
114
- puts
115
- puts " git push origin gh-pages"
116
- puts
117
86
  end
118
87
 
119
88
  # Makes a slide as a string.
@@ -325,7 +294,7 @@ class ShowOffUtils
325
294
  EXTENSIONS[ext] || ext
326
295
  end
327
296
 
328
- REQUIRED_GEMS = %w(bluecloth nokogiri showoff gli)
297
+ REQUIRED_GEMS = %w(bluecloth nokogiri showoff gli heroku)
329
298
 
330
299
  # Creates the file that lists the gems for heroku
331
300
  #
@@ -0,0 +1,653 @@
1
+ /*
2
+ 960 Grid System ~ Core CSS.
3
+ Learn more ~ http://960.gs/
4
+
5
+ Licensed under GPL and MIT.
6
+ */
7
+
8
+ /*
9
+ Forces backgrounds to span full width,
10
+ even if there is horizontal scrolling.
11
+ Increase this if your layout is wider.
12
+
13
+ Note: IE6 works fine without this fix.
14
+ */
15
+
16
+ body {
17
+ min-width: 960px;
18
+ }
19
+
20
+ /* `Container
21
+ ----------------------------------------------------------------------------------------------------*/
22
+
23
+ .container_12,
24
+ .container_16 {
25
+ margin-left: auto;
26
+ margin-right: auto;
27
+ width: 960px;
28
+ }
29
+
30
+ /* `Grid >> Global
31
+ ----------------------------------------------------------------------------------------------------*/
32
+
33
+ .grid_1,
34
+ .grid_2,
35
+ .grid_3,
36
+ .grid_4,
37
+ .grid_5,
38
+ .grid_6,
39
+ .grid_7,
40
+ .grid_8,
41
+ .grid_9,
42
+ .grid_10,
43
+ .grid_11,
44
+ .grid_12,
45
+ .grid_13,
46
+ .grid_14,
47
+ .grid_15,
48
+ .grid_16 {
49
+ display: inline;
50
+ float: left;
51
+ margin-left: 10px;
52
+ margin-right: 10px;
53
+ }
54
+
55
+ .push_1, .pull_1,
56
+ .push_2, .pull_2,
57
+ .push_3, .pull_3,
58
+ .push_4, .pull_4,
59
+ .push_5, .pull_5,
60
+ .push_6, .pull_6,
61
+ .push_7, .pull_7,
62
+ .push_8, .pull_8,
63
+ .push_9, .pull_9,
64
+ .push_10, .pull_10,
65
+ .push_11, .pull_11,
66
+ .push_12, .pull_12,
67
+ .push_13, .pull_13,
68
+ .push_14, .pull_14,
69
+ .push_15, .pull_15 {
70
+ position: relative;
71
+ }
72
+
73
+ .container_12 .grid_3,
74
+ .container_16 .grid_4 {
75
+ width: 220px;
76
+ }
77
+
78
+ .container_12 .grid_6,
79
+ .container_16 .grid_8 {
80
+ width: 460px;
81
+ }
82
+
83
+ .container_12 .grid_9,
84
+ .container_16 .grid_12 {
85
+ width: 700px;
86
+ }
87
+
88
+ .container_12 .grid_12,
89
+ .container_16 .grid_16 {
90
+ width: 940px;
91
+ }
92
+
93
+ /* `Grid >> Children (Alpha ~ First, Omega ~ Last)
94
+ ----------------------------------------------------------------------------------------------------*/
95
+
96
+ .alpha {
97
+ margin-left: 0;
98
+ }
99
+
100
+ .omega {
101
+ margin-right: 0;
102
+ }
103
+
104
+ /* `Grid >> 12 Columns
105
+ ----------------------------------------------------------------------------------------------------*/
106
+
107
+ .container_12 .grid_1 {
108
+ width: 60px;
109
+ }
110
+
111
+ .container_12 .grid_2 {
112
+ width: 140px;
113
+ }
114
+
115
+ .container_12 .grid_4 {
116
+ width: 300px;
117
+ }
118
+
119
+ .container_12 .grid_5 {
120
+ width: 380px;
121
+ }
122
+
123
+ .container_12 .grid_7 {
124
+ width: 540px;
125
+ }
126
+
127
+ .container_12 .grid_8 {
128
+ width: 620px;
129
+ }
130
+
131
+ .container_12 .grid_10 {
132
+ width: 780px;
133
+ }
134
+
135
+ .container_12 .grid_11 {
136
+ width: 860px;
137
+ }
138
+
139
+ /* `Grid >> 16 Columns
140
+ ----------------------------------------------------------------------------------------------------*/
141
+
142
+ .container_16 .grid_1 {
143
+ width: 40px;
144
+ }
145
+
146
+ .container_16 .grid_2 {
147
+ width: 100px;
148
+ }
149
+
150
+ .container_16 .grid_3 {
151
+ width: 160px;
152
+ }
153
+
154
+ .container_16 .grid_5 {
155
+ width: 280px;
156
+ }
157
+
158
+ .container_16 .grid_6 {
159
+ width: 340px;
160
+ }
161
+
162
+ .container_16 .grid_7 {
163
+ width: 400px;
164
+ }
165
+
166
+ .container_16 .grid_9 {
167
+ width: 520px;
168
+ }
169
+
170
+ .container_16 .grid_10 {
171
+ width: 580px;
172
+ }
173
+
174
+ .container_16 .grid_11 {
175
+ width: 640px;
176
+ }
177
+
178
+ .container_16 .grid_13 {
179
+ width: 760px;
180
+ }
181
+
182
+ .container_16 .grid_14 {
183
+ width: 820px;
184
+ }
185
+
186
+ .container_16 .grid_15 {
187
+ width: 880px;
188
+ }
189
+
190
+ /* `Prefix Extra Space >> Global
191
+ ----------------------------------------------------------------------------------------------------*/
192
+
193
+ .container_12 .prefix_3,
194
+ .container_16 .prefix_4 {
195
+ padding-left: 240px;
196
+ }
197
+
198
+ .container_12 .prefix_6,
199
+ .container_16 .prefix_8 {
200
+ padding-left: 480px;
201
+ }
202
+
203
+ .container_12 .prefix_9,
204
+ .container_16 .prefix_12 {
205
+ padding-left: 720px;
206
+ }
207
+
208
+ /* `Prefix Extra Space >> 12 Columns
209
+ ----------------------------------------------------------------------------------------------------*/
210
+
211
+ .container_12 .prefix_1 {
212
+ padding-left: 80px;
213
+ }
214
+
215
+ .container_12 .prefix_2 {
216
+ padding-left: 160px;
217
+ }
218
+
219
+ .container_12 .prefix_4 {
220
+ padding-left: 320px;
221
+ }
222
+
223
+ .container_12 .prefix_5 {
224
+ padding-left: 400px;
225
+ }
226
+
227
+ .container_12 .prefix_7 {
228
+ padding-left: 560px;
229
+ }
230
+
231
+ .container_12 .prefix_8 {
232
+ padding-left: 640px;
233
+ }
234
+
235
+ .container_12 .prefix_10 {
236
+ padding-left: 800px;
237
+ }
238
+
239
+ .container_12 .prefix_11 {
240
+ padding-left: 880px;
241
+ }
242
+
243
+ /* `Prefix Extra Space >> 16 Columns
244
+ ----------------------------------------------------------------------------------------------------*/
245
+
246
+ .container_16 .prefix_1 {
247
+ padding-left: 60px;
248
+ }
249
+
250
+ .container_16 .prefix_2 {
251
+ padding-left: 120px;
252
+ }
253
+
254
+ .container_16 .prefix_3 {
255
+ padding-left: 180px;
256
+ }
257
+
258
+ .container_16 .prefix_5 {
259
+ padding-left: 300px;
260
+ }
261
+
262
+ .container_16 .prefix_6 {
263
+ padding-left: 360px;
264
+ }
265
+
266
+ .container_16 .prefix_7 {
267
+ padding-left: 420px;
268
+ }
269
+
270
+ .container_16 .prefix_9 {
271
+ padding-left: 540px;
272
+ }
273
+
274
+ .container_16 .prefix_10 {
275
+ padding-left: 600px;
276
+ }
277
+
278
+ .container_16 .prefix_11 {
279
+ padding-left: 660px;
280
+ }
281
+
282
+ .container_16 .prefix_13 {
283
+ padding-left: 780px;
284
+ }
285
+
286
+ .container_16 .prefix_14 {
287
+ padding-left: 840px;
288
+ }
289
+
290
+ .container_16 .prefix_15 {
291
+ padding-left: 900px;
292
+ }
293
+
294
+ /* `Suffix Extra Space >> Global
295
+ ----------------------------------------------------------------------------------------------------*/
296
+
297
+ .container_12 .suffix_3,
298
+ .container_16 .suffix_4 {
299
+ padding-right: 240px;
300
+ }
301
+
302
+ .container_12 .suffix_6,
303
+ .container_16 .suffix_8 {
304
+ padding-right: 480px;
305
+ }
306
+
307
+ .container_12 .suffix_9,
308
+ .container_16 .suffix_12 {
309
+ padding-right: 720px;
310
+ }
311
+
312
+ /* `Suffix Extra Space >> 12 Columns
313
+ ----------------------------------------------------------------------------------------------------*/
314
+
315
+ .container_12 .suffix_1 {
316
+ padding-right: 80px;
317
+ }
318
+
319
+ .container_12 .suffix_2 {
320
+ padding-right: 160px;
321
+ }
322
+
323
+ .container_12 .suffix_4 {
324
+ padding-right: 320px;
325
+ }
326
+
327
+ .container_12 .suffix_5 {
328
+ padding-right: 400px;
329
+ }
330
+
331
+ .container_12 .suffix_7 {
332
+ padding-right: 560px;
333
+ }
334
+
335
+ .container_12 .suffix_8 {
336
+ padding-right: 640px;
337
+ }
338
+
339
+ .container_12 .suffix_10 {
340
+ padding-right: 800px;
341
+ }
342
+
343
+ .container_12 .suffix_11 {
344
+ padding-right: 880px;
345
+ }
346
+
347
+ /* `Suffix Extra Space >> 16 Columns
348
+ ----------------------------------------------------------------------------------------------------*/
349
+
350
+ .container_16 .suffix_1 {
351
+ padding-right: 60px;
352
+ }
353
+
354
+ .container_16 .suffix_2 {
355
+ padding-right: 120px;
356
+ }
357
+
358
+ .container_16 .suffix_3 {
359
+ padding-right: 180px;
360
+ }
361
+
362
+ .container_16 .suffix_5 {
363
+ padding-right: 300px;
364
+ }
365
+
366
+ .container_16 .suffix_6 {
367
+ padding-right: 360px;
368
+ }
369
+
370
+ .container_16 .suffix_7 {
371
+ padding-right: 420px;
372
+ }
373
+
374
+ .container_16 .suffix_9 {
375
+ padding-right: 540px;
376
+ }
377
+
378
+ .container_16 .suffix_10 {
379
+ padding-right: 600px;
380
+ }
381
+
382
+ .container_16 .suffix_11 {
383
+ padding-right: 660px;
384
+ }
385
+
386
+ .container_16 .suffix_13 {
387
+ padding-right: 780px;
388
+ }
389
+
390
+ .container_16 .suffix_14 {
391
+ padding-right: 840px;
392
+ }
393
+
394
+ .container_16 .suffix_15 {
395
+ padding-right: 900px;
396
+ }
397
+
398
+ /* `Push Space >> Global
399
+ ----------------------------------------------------------------------------------------------------*/
400
+
401
+ .container_12 .push_3,
402
+ .container_16 .push_4 {
403
+ left: 240px;
404
+ }
405
+
406
+ .container_12 .push_6,
407
+ .container_16 .push_8 {
408
+ left: 480px;
409
+ }
410
+
411
+ .container_12 .push_9,
412
+ .container_16 .push_12 {
413
+ left: 720px;
414
+ }
415
+
416
+ /* `Push Space >> 12 Columns
417
+ ----------------------------------------------------------------------------------------------------*/
418
+
419
+ .container_12 .push_1 {
420
+ left: 80px;
421
+ }
422
+
423
+ .container_12 .push_2 {
424
+ left: 160px;
425
+ }
426
+
427
+ .container_12 .push_4 {
428
+ left: 320px;
429
+ }
430
+
431
+ .container_12 .push_5 {
432
+ left: 400px;
433
+ }
434
+
435
+ .container_12 .push_7 {
436
+ left: 560px;
437
+ }
438
+
439
+ .container_12 .push_8 {
440
+ left: 640px;
441
+ }
442
+
443
+ .container_12 .push_10 {
444
+ left: 800px;
445
+ }
446
+
447
+ .container_12 .push_11 {
448
+ left: 880px;
449
+ }
450
+
451
+ /* `Push Space >> 16 Columns
452
+ ----------------------------------------------------------------------------------------------------*/
453
+
454
+ .container_16 .push_1 {
455
+ left: 60px;
456
+ }
457
+
458
+ .container_16 .push_2 {
459
+ left: 120px;
460
+ }
461
+
462
+ .container_16 .push_3 {
463
+ left: 180px;
464
+ }
465
+
466
+ .container_16 .push_5 {
467
+ left: 300px;
468
+ }
469
+
470
+ .container_16 .push_6 {
471
+ left: 360px;
472
+ }
473
+
474
+ .container_16 .push_7 {
475
+ left: 420px;
476
+ }
477
+
478
+ .container_16 .push_9 {
479
+ left: 540px;
480
+ }
481
+
482
+ .container_16 .push_10 {
483
+ left: 600px;
484
+ }
485
+
486
+ .container_16 .push_11 {
487
+ left: 660px;
488
+ }
489
+
490
+ .container_16 .push_13 {
491
+ left: 780px;
492
+ }
493
+
494
+ .container_16 .push_14 {
495
+ left: 840px;
496
+ }
497
+
498
+ .container_16 .push_15 {
499
+ left: 900px;
500
+ }
501
+
502
+ /* `Pull Space >> Global
503
+ ----------------------------------------------------------------------------------------------------*/
504
+
505
+ .container_12 .pull_3,
506
+ .container_16 .pull_4 {
507
+ left: -240px;
508
+ }
509
+
510
+ .container_12 .pull_6,
511
+ .container_16 .pull_8 {
512
+ left: -480px;
513
+ }
514
+
515
+ .container_12 .pull_9,
516
+ .container_16 .pull_12 {
517
+ left: -720px;
518
+ }
519
+
520
+ /* `Pull Space >> 12 Columns
521
+ ----------------------------------------------------------------------------------------------------*/
522
+
523
+ .container_12 .pull_1 {
524
+ left: -80px;
525
+ }
526
+
527
+ .container_12 .pull_2 {
528
+ left: -160px;
529
+ }
530
+
531
+ .container_12 .pull_4 {
532
+ left: -320px;
533
+ }
534
+
535
+ .container_12 .pull_5 {
536
+ left: -400px;
537
+ }
538
+
539
+ .container_12 .pull_7 {
540
+ left: -560px;
541
+ }
542
+
543
+ .container_12 .pull_8 {
544
+ left: -640px;
545
+ }
546
+
547
+ .container_12 .pull_10 {
548
+ left: -800px;
549
+ }
550
+
551
+ .container_12 .pull_11 {
552
+ left: -880px;
553
+ }
554
+
555
+ /* `Pull Space >> 16 Columns
556
+ ----------------------------------------------------------------------------------------------------*/
557
+
558
+ .container_16 .pull_1 {
559
+ left: -60px;
560
+ }
561
+
562
+ .container_16 .pull_2 {
563
+ left: -120px;
564
+ }
565
+
566
+ .container_16 .pull_3 {
567
+ left: -180px;
568
+ }
569
+
570
+ .container_16 .pull_5 {
571
+ left: -300px;
572
+ }
573
+
574
+ .container_16 .pull_6 {
575
+ left: -360px;
576
+ }
577
+
578
+ .container_16 .pull_7 {
579
+ left: -420px;
580
+ }
581
+
582
+ .container_16 .pull_9 {
583
+ left: -540px;
584
+ }
585
+
586
+ .container_16 .pull_10 {
587
+ left: -600px;
588
+ }
589
+
590
+ .container_16 .pull_11 {
591
+ left: -660px;
592
+ }
593
+
594
+ .container_16 .pull_13 {
595
+ left: -780px;
596
+ }
597
+
598
+ .container_16 .pull_14 {
599
+ left: -840px;
600
+ }
601
+
602
+ .container_16 .pull_15 {
603
+ left: -900px;
604
+ }
605
+
606
+ /* `Clear Floated Elements
607
+ ----------------------------------------------------------------------------------------------------*/
608
+
609
+ /* http://sonspring.com/journal/clearing-floats */
610
+
611
+ .clear {
612
+ clear: both;
613
+ display: block;
614
+ overflow: hidden;
615
+ visibility: hidden;
616
+ width: 0;
617
+ height: 0;
618
+ }
619
+
620
+ /* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified */
621
+
622
+ .clearfix:before,
623
+ .clearfix:after,
624
+ .container_12:before,
625
+ .container_12:after,
626
+ .container_16:before,
627
+ .container_16:after {
628
+ content: '.';
629
+ display: block;
630
+ overflow: hidden;
631
+ visibility: hidden;
632
+ font-size: 0;
633
+ line-height: 0;
634
+ width: 0;
635
+ height: 0;
636
+ }
637
+
638
+ .clearfix:after,
639
+ .container_12:after,
640
+ .container_16:after {
641
+ clear: both;
642
+ }
643
+
644
+ /*
645
+ The following zoom:1 rule is specifically for IE6 + IE7.
646
+ Move to separate stylesheet if invalid CSS is a problem.
647
+ */
648
+
649
+ .clearfix,
650
+ .container_12,
651
+ .container_16 {
652
+ zoom: 1;
653
+ }