showoff 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }