gumdrop 0.2.13 → 0.2.14

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.
Files changed (92) hide show
  1. data/ChangeLog.md +4 -0
  2. data/lib/gumdrop.rb +40 -11
  3. data/lib/gumdrop/cli.rb +12 -5
  4. data/lib/gumdrop/content.rb +3 -3
  5. data/lib/gumdrop/dsl.rb +19 -0
  6. data/lib/gumdrop/generator.rb +0 -17
  7. data/lib/gumdrop/template/{Gemfile → default/Gemfile} +0 -0
  8. data/lib/gumdrop/template/{Rakefile → default/Rakefile} +0 -0
  9. data/lib/gumdrop/template/{config.ru → default/config.ru} +0 -0
  10. data/lib/gumdrop/template/{data → default/data}/config.yml +0 -0
  11. data/lib/gumdrop/template/{lib → default/lib}/site.rb +0 -0
  12. data/lib/gumdrop/template/{lib → default/lib}/view_helpers.rb +0 -0
  13. data/lib/gumdrop/template/{default.htaccess → default/source/default.htaccess} +0 -0
  14. data/lib/gumdrop/template/{source → default/source}/favicon.ico +0 -0
  15. data/lib/gumdrop/template/{source → default/source}/feed.xml.builder.txt +0 -0
  16. data/lib/gumdrop/template/{source → default/source}/index.html.erb +0 -0
  17. data/lib/gumdrop/template/{source → default/source}/theme/screen.css.sass +0 -0
  18. data/lib/gumdrop/template/{source → default/source}/theme/scripts/app.js.coffee +0 -0
  19. data/lib/gumdrop/template/{source → default/source}/theme/styles/_tools.scss +0 -0
  20. data/lib/gumdrop/template/{source → default/source}/theme/templates/site.template.slim +0 -0
  21. data/lib/gumdrop/template/twitter/Gemfile +28 -0
  22. data/lib/gumdrop/template/twitter/Rakefile +35 -0
  23. data/lib/gumdrop/template/twitter/config.ru +17 -0
  24. data/lib/gumdrop/template/twitter/data/config.yml +4 -0
  25. data/lib/gumdrop/template/twitter/lib/site.rb +43 -0
  26. data/lib/gumdrop/template/twitter/lib/view_helpers.rb +17 -0
  27. data/lib/gumdrop/template/twitter/source/_sidebar.html.slim +1 -0
  28. data/lib/gumdrop/template/twitter/source/container-app.html.slim +89 -0
  29. data/lib/gumdrop/template/twitter/source/default.htaccess +16 -0
  30. data/lib/gumdrop/template/twitter/source/favicon.ico +0 -0
  31. data/lib/gumdrop/template/twitter/source/feed.xml.builder.txt +23 -0
  32. data/lib/gumdrop/template/twitter/source/fluid.html.slim +134 -0
  33. data/lib/gumdrop/template/twitter/source/hero.html.slim +49 -0
  34. data/lib/gumdrop/template/twitter/source/index.html.erb +10 -0
  35. data/lib/gumdrop/template/twitter/source/theme/screen.css.sass +3 -0
  36. data/lib/gumdrop/template/twitter/source/theme/scripts/app.js.coffee +4 -0
  37. data/lib/gumdrop/template/twitter/source/theme/scripts/jquery.js +4 -0
  38. data/lib/gumdrop/template/twitter/source/theme/styles/_tools.scss +434 -0
  39. data/lib/gumdrop/template/twitter/source/theme/templates/site.template.slim +19 -0
  40. data/lib/gumdrop/template/twitter/source/theme/twitter/LICENSE +13 -0
  41. data/lib/gumdrop/template/twitter/source/theme/twitter/Makefile +30 -0
  42. data/lib/gumdrop/template/twitter/source/theme/twitter/README.md +115 -0
  43. data/lib/gumdrop/template/twitter/source/theme/twitter/bootstrap-min.css +330 -0
  44. data/lib/gumdrop/template/twitter/source/theme/twitter/bootstrap.css +2362 -0
  45. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/css/docs.css +317 -0
  46. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/ico/bootstrap-apple-114x114.png +0 -0
  47. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/ico/bootstrap-apple-57x57.png +0 -0
  48. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/ico/bootstrap-apple-72x72.png +0 -0
  49. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/ico/favicon.ico +0 -0
  50. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/bird.png +0 -0
  51. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/browsers.png +0 -0
  52. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/example-diagram-01.png +0 -0
  53. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/example-diagram-02.png +0 -0
  54. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/example-diagram-03.png +0 -0
  55. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/grid-18px.png +0 -0
  56. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/img/twitter-logo-no-bird.png +0 -0
  57. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/js/application.js +52 -0
  58. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/js/google-code-prettify/prettify.css +41 -0
  59. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/assets/js/google-code-prettify/prettify.js +28 -0
  60. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/index.html +1932 -0
  61. data/lib/gumdrop/template/twitter/source/theme/twitter/docs/javascript.html +676 -0
  62. data/lib/gumdrop/template/twitter/source/theme/twitter/examples/container-app.html +119 -0
  63. data/lib/gumdrop/template/twitter/source/theme/twitter/examples/fluid.html +126 -0
  64. data/lib/gumdrop/template/twitter/source/theme/twitter/examples/hero.html +79 -0
  65. data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-alerts.js +104 -0
  66. data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-dropdown.js +50 -0
  67. data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-modal.js +238 -0
  68. data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-popover.js +77 -0
  69. data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-scrollspy.js +105 -0
  70. data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-tabs.js +62 -0
  71. data/lib/gumdrop/template/twitter/source/theme/twitter/js/bootstrap-twipsy.js +307 -0
  72. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/index.html +38 -0
  73. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-alerts.js +41 -0
  74. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-dropdown.js +52 -0
  75. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-modal.js +151 -0
  76. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-popover.js +76 -0
  77. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-scrollspy.js +31 -0
  78. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-tabs.js +49 -0
  79. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/unit/bootstrap-twipsy.js +81 -0
  80. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/vendor/qunit.css +232 -0
  81. data/lib/gumdrop/template/twitter/source/theme/twitter/js/tests/vendor/qunit.js +1510 -0
  82. data/lib/gumdrop/template/twitter/source/theme/twitter/lib/bootstrap.less +26 -0
  83. data/lib/gumdrop/template/twitter/source/theme/twitter/lib/forms.less +465 -0
  84. data/lib/gumdrop/template/twitter/source/theme/twitter/lib/mixins.less +217 -0
  85. data/lib/gumdrop/template/twitter/source/theme/twitter/lib/patterns.less +1005 -0
  86. data/lib/gumdrop/template/twitter/source/theme/twitter/lib/reset.less +141 -0
  87. data/lib/gumdrop/template/twitter/source/theme/twitter/lib/scaffolding.less +135 -0
  88. data/lib/gumdrop/template/twitter/source/theme/twitter/lib/tables.less +171 -0
  89. data/lib/gumdrop/template/twitter/source/theme/twitter/lib/type.less +187 -0
  90. data/lib/gumdrop/template/twitter/source/theme/twitter/lib/variables.less +60 -0
  91. data/lib/gumdrop/version.rb +1 -1
  92. metadata +98 -27
data/ChangeLog.md CHANGED
@@ -1,3 +1,7 @@
1
+ # v0.2.14
2
+ - Added new template type: twitter
3
+ - Added cli option -t / --template to specify default|twitter template when creating a new project
4
+
1
5
  # v0.2.13
2
6
  - Adding content_filters for altering rendered output -- BUILD ONLY!
3
7
  - Tweaks to template site
data/lib/gumdrop.rb CHANGED
@@ -7,7 +7,14 @@ DEFAULT_OPTIONS= {
7
7
  :relative_paths => true,
8
8
  :auto_run => false,
9
9
  :force_reload => false,
10
- :root => "."
10
+ :root => ".",
11
+ :log_level => :info
12
+ }
13
+
14
+ LOG_LEVELS = {
15
+ :info => 0,
16
+ :warning => 1,
17
+ :error => 2
11
18
  }
12
19
 
13
20
  module Gumdrop
@@ -15,9 +22,9 @@ module Gumdrop
15
22
  autoload :Context, "gumdrop/context"
16
23
  autoload :Content, "gumdrop/content"
17
24
  autoload :DeferredLoader, "gumdrop/deferred_loader"
25
+ autoload :DSL, "gumdrop/dsl"
18
26
  autoload :Generator, "gumdrop/generator"
19
27
  autoload :GeneratedrContent, "gumdrop/generator"
20
- autoload :GenerationDSL, "gumdrop/generator"
21
28
  autoload :HashObject, "gumdrop/hash_object"
22
29
  autoload :Pager, "gumdrop/pager"
23
30
  autoload :Server, "gumdrop/server"
@@ -27,7 +34,7 @@ module Gumdrop
27
34
 
28
35
  class << self
29
36
 
30
- attr_accessor :root_path, :source_path, :site, :layouts, :generators, :partials, :config, :data, :content_filters
37
+ attr_accessor :root_path, :source_path, :site, :layouts, :generators, :partials, :config, :data, :content_filters, :blacklist
31
38
 
32
39
  def run(opts={})
33
40
  # Opts
@@ -39,7 +46,6 @@ module Gumdrop
39
46
  if File.exists? "#{root}/lib/view_helpers.rb"
40
47
  # In server mode, we want to reload it every time... right?
41
48
  load "#{root}/lib/view_helpers.rb"
42
- #require 'view_helpers'
43
49
  end
44
50
 
45
51
  @site = Hash.new {|h,k| h[k]= nil }
@@ -51,13 +57,12 @@ module Gumdrop
51
57
  @data = Gumdrop::DeferredLoader.new()
52
58
 
53
59
  @content_filters= []
60
+ @blacklist = []
54
61
 
55
62
  if File.exists? "#{root}/lib/site.rb"
56
63
  # In server mode, we want to reload it every time... right?
57
64
  source= IO.readlines("#{root}/lib/site.rb").join('')
58
- GenerationDSL.class_eval source
59
- #load "#{root}/lib/site.rb"
60
- # require 'site'
65
+ DSL.class_eval source
61
66
  end
62
67
 
63
68
  # Scan
@@ -89,20 +94,44 @@ module Gumdrop
89
94
  generator.execute()
90
95
  end
91
96
 
97
+ @blacklist.each do |skip_path|
98
+ @site.keys.each do |source_path|
99
+ if source_path.starts_with? skip_path
100
+ Gumdrop.report " -ignoring: #{source_path}", :info
101
+ @site.delete source_path
102
+ end
103
+ end
104
+ end
92
105
 
93
106
  # Render
94
107
  unless opts[:dry_run]
95
108
  site.keys.sort.each do |path|
96
- node= site[path]
97
- output_path= "output/#{node.to_s}"
98
- FileUtils.mkdir_p File.dirname(output_path)
99
- node.renderTo output_path, @content_filters
109
+ #unless @blacklist.detect {|p| path.starts_with?(p) }
110
+ node= site[path]
111
+ output_path= "output/#{node.to_s}"
112
+ FileUtils.mkdir_p File.dirname(output_path)
113
+ node.renderTo output_path, @content_filters
114
+ # else
115
+ # Gumdrop.report " -ignoring: #{path}", :info
116
+ # end
100
117
  end
101
118
  puts "Done."
102
119
  end
103
120
 
104
121
  end
105
122
 
123
+ # levels: info, warning, error
124
+ def report(msg, level=:info)
125
+ ll= Gumdrop.config.log_level
126
+ case level
127
+ when :info
128
+ puts msg if ll == :info
129
+ when :warning
130
+ puts msg if ll == :info or ll == :warning
131
+ else
132
+ puts msg
133
+ end
134
+ end
106
135
  end
107
136
 
108
137
  Gumdrop.config= Gumdrop::HashObject.new(DEFAULT_OPTIONS)
data/lib/gumdrop/cli.rb CHANGED
@@ -6,6 +6,7 @@ opts = Trollop::options do
6
6
  opt :debug, "Enable debugging output"
7
7
  opt :quiet, "No output"
8
8
  opt :create, "Create a gumdrop project", :type=>String
9
+ opt :template, "Specify template to use for new project (default || twitter)", :type=>String, :default=>'default'
9
10
  opt :build, "Build HTML output"
10
11
  opt :server, "Runs development server"
11
12
  opt :port, "Specifies port to run server on", :type=>:int
@@ -22,17 +23,23 @@ end
22
23
  if opts[:create_given]
23
24
  require 'fileutils'
24
25
  here= File.dirname(__FILE__)
25
- there= File.expand_path(opts[:create])
26
-
26
+ there= File.expand_path( opts[:create] )
27
+ template_name = opts[:template]
28
+
27
29
  if File.file? there
28
30
  puts "You cannot specify a file as the target!"
29
31
  elsif !File.directory? there
30
32
  FileUtils.mkdir_p there
31
33
  end
32
34
 
33
- FileUtils.cp_r Dir[File.join(here, "template", "*")], there
34
-
35
- puts "Done."
35
+ if File.directory? File.join(here, 'template', template_name)
36
+ # FileUtils.cp_r Dir[File.join(here, "template", template_name, "*")], there
37
+ puts "Creating gumdrop project based on #{template_name} template at #{there}"
38
+ FileUtils.cp_r File.join(here, "template", template_name, "."), there
39
+ puts "Done."
40
+ else
41
+ puts "Invalid template '#{template_name}'!"
42
+ end
36
43
 
37
44
  elsif opts[:build_given]
38
45
  Gumdrop.run(opts)
@@ -45,10 +45,10 @@ module Gumdrop
45
45
 
46
46
  def renderTo(output_path, filters=[], opts={})
47
47
  return copyTo(output_path, opts) unless useLayout?
48
+ Gumdrop.report " Rendering: #{@uri}", :warning
48
49
  output= render()
49
50
  filters.each {|f| output= f.call(output, self) }
50
51
  File.open output_path, 'w' do |f|
51
- puts " Rendering: #{@uri}"
52
52
  f.write output
53
53
  end
54
54
  end
@@ -60,10 +60,10 @@ module Gumdrop
60
60
  true
61
61
  end
62
62
  if do_copy
63
- puts " Copying: #{@uri}"
63
+ Gumdrop.report " Copying: #{@uri}", :warning
64
64
  FileUtils.cp_r @path, output, opts
65
65
  else
66
- puts " (same): #{@uri}"
66
+ Gumdrop.report " (same): #{@uri}", :info
67
67
  end
68
68
  end
69
69
 
@@ -0,0 +1,19 @@
1
+ module Gumdrop
2
+ module DSL
3
+
4
+ def self.generate(&block)
5
+ # Auto-generated, numerical, key for a site-level generator
6
+ Gumdrop.generators[Gumdrop.generators.keys.length] = Generator.new(block)
7
+ end
8
+
9
+ def self.content_filter(&block)
10
+ Gumdrop.content_filters << block
11
+ end
12
+
13
+ def self.skip(path)
14
+ Gumdrop.report " blacklist: #{path}", :info
15
+ Gumdrop.blacklist << path
16
+ end
17
+
18
+ end
19
+ end
@@ -66,21 +66,4 @@ module Gumdrop
66
66
  # Nothing special, per se...
67
67
  end
68
68
 
69
- module GenerationDSL
70
-
71
- # attr_accessor :generators
72
- # @generators=[]
73
-
74
- def self.generate(&block)
75
-
76
- # Auto-generated, numerical, key for a site-level generator
77
- Gumdrop.generators[Gumdrop.generators.keys.length] = Generator.new(block)
78
- end
79
-
80
- def self.content_filter(&block)
81
- Gumdrop.content_filters << block
82
- end
83
-
84
- end
85
-
86
69
  end
File without changes
File without changes
File without changes
@@ -0,0 +1,28 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "i18n"
4
+ gem "sinatra"
5
+ gem "active_support"
6
+ gem "rake"
7
+ gem "gumdrop", :path=>File.expand_path("~/Projects/OpenSource/gumdrop")
8
+
9
+ # Add your dependencies here:
10
+
11
+ gem "slim"
12
+ gem "sass"
13
+ gem "less"
14
+ gem "coffee-script"
15
+
16
+
17
+ # For markdown support, a couple of options:
18
+ # gem "rdiscount"
19
+ gem 'maruku'
20
+
21
+ # For template support:
22
+ # gem "less"
23
+ # gem "haml"
24
+
25
+ # For xml generation support:
26
+ # gem 'builder'
27
+
28
+ # gem 'jsmin'
@@ -0,0 +1,35 @@
1
+ require 'rubygems'
2
+ require "bundler/setup"
3
+ require 'gumdrop'
4
+
5
+ # For the SYNC task
6
+ USER='user'
7
+ SERVER='server.com'
8
+ FOLDER="~/#{SERVER}"
9
+
10
+ desc "Build source files into output"
11
+ task :build do
12
+ system("bundle exec gumdrop -b")
13
+ end
14
+
15
+ desc "Run development server"
16
+ task :serve do
17
+ system("bundle exec gumdrop -s")
18
+ end
19
+
20
+ desc "Syncs with public server using rsync (if configured)"
21
+ task :sync do
22
+ cmd= "rsync -avz --delete output/ #{USER}@#{SERVER}:#{FOLDER}"
23
+ puts "Running:\n#{cmd}\n"
24
+ system(cmd)
25
+ puts "Done."
26
+ end
27
+
28
+ desc "Outputs the Gumdrop version"
29
+ task :version do
30
+ puts Gumdrop::VERSION
31
+ end
32
+
33
+ task :default do
34
+ puts `rake -T`
35
+ end
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+
11
+ require 'gumdrop'
12
+
13
+ Gumdrop.config.auto_run= false
14
+ Gumdrop.config.force_reload= false
15
+ Gumdrop.run :dry_run=>true
16
+
17
+ run Gumdrop::Server
@@ -0,0 +1,4 @@
1
+ title: My Site
2
+ tagline: My home on thar intarwebs!
3
+ author: Matt McCray
4
+ url: http://www.mysite.com
@@ -0,0 +1,43 @@
1
+ # Any specialized code for your site goes here...
2
+
3
+ puts "Build: #{Gumdrop.data.config.title} (gumdrop v#{Gumdrop::VERSION})"
4
+
5
+ if defined? Encoding
6
+ Encoding.default_internal = Encoding.default_external = "UTF-8"
7
+ else
8
+ $KCODE = "UTF-8"
9
+ end
10
+
11
+ require 'slim'
12
+ Slim::Engine.set_default_options :pretty => true
13
+
14
+ skip "theme/twitter/lib"
15
+ skip "theme/twitter/docs"
16
+ skip "theme/twitter/examples"
17
+ skip "theme/twitter/Makefile"
18
+ skip "theme/twitter/README"
19
+
20
+ # Example of using a content filter to compress CoffeeScript/JS output
21
+ # require 'jsmin'
22
+ # content_filter do |content, info|
23
+ # if info.ext == '.js'
24
+ # puts " Compress: #{info.filename}"
25
+ # JSMin.minify content
26
+ # else
27
+ # content
28
+ # end
29
+ # end
30
+
31
+
32
+ # Example site-level generator
33
+ # generate do
34
+ #
35
+ # page "about.html", :template=>'about', :passthru=>'Available in the template' # requires a about.template.XX file
36
+ #
37
+ # # Maybe for a tumblr-like pager
38
+ # pager= Gumdrop.data.pager_for :posts, :base_path=>'posts/page', :page_size=>5
39
+ # pager.each do |page|
40
+ # page "#{page.uri}.html", :template=>'post_page', :posts=>page.items, :pager=>pager, :current_page=>pager.current_page
41
+ # end
42
+ #
43
+ # end
@@ -0,0 +1,17 @@
1
+ module Gumdrop::ViewHelpers
2
+
3
+ # Calculate the years for a copyright
4
+ def copyright_years(start_year, divider="&#8211;")
5
+ end_year = Date.today.year
6
+ if start_year == end_year
7
+ "#{start_year}"
8
+ else
9
+ "#{start_year}#{divider}#{end_year}"
10
+ end
11
+ end
12
+
13
+ #
14
+ # Your custom helpers go here!
15
+ #
16
+
17
+ end
@@ -0,0 +1 @@
1
+ p I'm the SIDEBAR!
@@ -0,0 +1,89 @@
1
+ css:
2
+ /* Override some defaults */
3
+ html, body {
4
+ background-color: #eee;
5
+ }
6
+ body {
7
+ padding-top: 40px; /* 40px to make the container go all the way to the bottom of the topbar */
8
+ }
9
+ .container > footer p {
10
+ text-align: center; /* center align it with the container */
11
+ }
12
+ .container {
13
+ width: 820px; /* downsize our container to make the content feel a bit tighter and more cohesive. NOTE: this removes two full columns from the grid, meaning you only go to 14 columns and not 16. */
14
+ }
15
+
16
+ /* The white background content wrapper */
17
+ .content {
18
+ background-color: #fff;
19
+ padding: 20px;
20
+ margin: 0 -20px; /* negative indent the amount of the padding to maintain the grid system */
21
+ -webkit-border-radius: 0 0 6px 6px;
22
+ -moz-border-radius: 0 0 6px 6px;
23
+ border-radius: 0 0 6px 6px;
24
+ -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);
25
+ -moz-box-shadow: 0 1px 2px rgba(0,0,0,.15);
26
+ box-shadow: 0 1px 2px rgba(0,0,0,.15);
27
+ }
28
+
29
+ /* Page header tweaks */
30
+ .page-header {
31
+ background-color: #f5f5f5;
32
+ padding: 20px 20px 10px;
33
+ margin: -20px -20px 20px;
34
+ }
35
+
36
+ /* Styles you shouldn't keep as they are for displaying this base example only */
37
+ .content .span10,
38
+ .content .span4 {
39
+ min-height: 500px;
40
+ }
41
+ /* Give a quick and non-cross-browser friendly divider */
42
+ .content .span4 {
43
+ margin-left: 0;
44
+ padding-left: 19px;
45
+ border-left: 1px solid #eee;
46
+ }
47
+
48
+ .topbar .btn {
49
+ border: 0;
50
+ }
51
+
52
+
53
+ .topbar
54
+ .fill
55
+ .container
56
+ a.brand[href="#"]
57
+ | Project name
58
+ ul.nav
59
+ li.active
60
+ a[href="#"]
61
+ | Home
62
+ li
63
+ a[href="#about"]
64
+ | About
65
+ li
66
+ a[href="#contact"]
67
+ | Contact
68
+ form.pull-right[action=""]
69
+ input.input-small[type="text" placeholder="Username"]
70
+ input.input-small[type="password" placeholder="Password"]
71
+ button.btn[type="submit"]
72
+ | Sign in
73
+ .container
74
+ .content
75
+ .page-header
76
+ h1
77
+ | Page name
78
+ small
79
+ | Supporting text or tagline
80
+ .row
81
+ .span10
82
+ h2
83
+ | Main content
84
+ .span4
85
+ h3
86
+ | Secondary content
87
+ footer
88
+ p
89
+ | © Company 2011