TwP-webby 0.9.0 → 0.9.1

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 (77) hide show
  1. data/History.txt +11 -0
  2. data/Manifest.txt +45 -2
  3. data/Rakefile +1 -2
  4. data/examples/webby/content/css/site.css +1 -1
  5. data/examples/webby/content/learn/index.txt +1 -1
  6. data/examples/webby/content/release-notes/index.txt +21 -0
  7. data/examples/webby/content/release-notes/rel-0-9-0/index.txt +1 -0
  8. data/examples/webby/content/release-notes/rel-0-9-1/index.txt +93 -0
  9. data/examples/webby/content/tips_and_tricks/index.txt +14 -13
  10. data/examples/webby/content/tutorial/index.txt +13 -9
  11. data/examples/webby/content/user-manual/index.txt +8 -8
  12. data/examples/webby/layouts/default.txt +1 -1
  13. data/lib/webby/apps/main.rb +25 -13
  14. data/lib/webby/auto_builder.rb +2 -0
  15. data/lib/webby/builder.rb +2 -5
  16. data/lib/webby/filters.rb +5 -13
  17. data/lib/webby/renderer.rb +7 -5
  18. data/lib/webby/resources/db.rb +4 -4
  19. data/lib/webby/resources/layout.rb +14 -23
  20. data/lib/webby/resources/meta_file.rb +208 -0
  21. data/lib/webby/resources/page.rb +21 -58
  22. data/lib/webby/resources/partial.rb +10 -4
  23. data/lib/webby/resources/resource.rb +68 -27
  24. data/lib/webby/resources/static.rb +6 -22
  25. data/lib/webby/resources.rb +54 -14
  26. data/lib/webby/stelan/paginator.rb +17 -2
  27. data/lib/webby.rb +2 -1
  28. data/spec/data/Sitefile +9 -0
  29. data/spec/data/content/_partial.txt +10 -0
  30. data/spec/data/content/css/coderay.css +111 -0
  31. data/spec/data/content/css/site.css +67 -0
  32. data/spec/data/content/css/tumblog.css +308 -0
  33. data/spec/data/content/images/tumblog/permalink.gif +0 -0
  34. data/spec/data/content/images/tumblog/rss.gif +0 -0
  35. data/spec/data/content/index.txt +19 -0
  36. data/spec/data/content/photos.txt +21 -0
  37. data/spec/data/content/tumblog/200806/the-noble-chicken/index.txt +12 -0
  38. data/spec/data/content/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke/index.txt +12 -0
  39. data/spec/data/content/tumblog/200807/mad-city-chickens/index.txt +10 -0
  40. data/spec/data/content/tumblog/200807/the-wisdom-of-the-dutch/index.txt +11 -0
  41. data/spec/data/content/tumblog/200807/up-a-tree/index.txt +13 -0
  42. data/spec/data/content/tumblog/index.txt +37 -0
  43. data/spec/data/content/tumblog/rss.txt +37 -0
  44. data/spec/data/hooligans/bad_meta_data_1.txt +34 -0
  45. data/spec/data/hooligans/bad_meta_data_2.txt +34 -0
  46. data/spec/data/layouts/default.txt +58 -0
  47. data/spec/data/layouts/tumblog/default.txt +44 -0
  48. data/spec/data/layouts/tumblog/post.txt +15 -0
  49. data/spec/data/lib/breadcrumbs.rb +28 -0
  50. data/spec/data/lib/tumblog_helper.rb +32 -0
  51. data/spec/data/tasks/tumblog.rake +30 -0
  52. data/spec/data/templates/_partial.erb +10 -0
  53. data/spec/data/templates/atom_feed.erb +40 -0
  54. data/spec/data/templates/page.erb +18 -0
  55. data/spec/data/templates/presentation.erb +40 -0
  56. data/spec/data/templates/tumblog/conversation.erb +12 -0
  57. data/spec/data/templates/tumblog/link.erb +10 -0
  58. data/spec/data/templates/tumblog/photo.erb +13 -0
  59. data/spec/data/templates/tumblog/post.erb +12 -0
  60. data/spec/data/templates/tumblog/quote.erb +11 -0
  61. data/spec/spec_helper.rb +37 -0
  62. data/spec/webby/apps/generator_spec.rb +4 -0
  63. data/spec/webby/apps/main_spec.rb +16 -3
  64. data/spec/webby/filters/textile_spec.rb +20 -0
  65. data/spec/webby/renderer_spec.rb +139 -0
  66. data/spec/webby/resources/db_spec.rb +250 -0
  67. data/spec/webby/resources/layout_spec.rb +83 -0
  68. data/spec/webby/resources/meta_file_spec.rb +157 -0
  69. data/spec/webby/resources/page_spec.rb +111 -0
  70. data/spec/webby/resources/partial_spec.rb +58 -0
  71. data/spec/webby/resources/resource_spec.rb +214 -0
  72. data/spec/webby/resources/static_spec.rb +49 -0
  73. data/spec/webby/resources_spec.rb +55 -3
  74. data/tasks/rubyforge.rake +1 -1
  75. metadata +64 -6
  76. data/lib/webby/resources/file.rb +0 -221
  77. data/spec/webby/resources/file_spec.rb +0 -104
@@ -9,18 +9,13 @@ module Webby::Resources
9
9
  #
10
10
  class Static < Resource
11
11
 
12
- # call-seq:
13
- # render => string
14
- #
15
12
  # Returns the contents of the file.
16
13
  #
17
14
  def render
18
- ::File.read(path)
15
+ Webby.deprecated "render", "it is being replaced by the Renderer#render() method"
16
+ self._read
19
17
  end
20
18
 
21
- # call-seq:
22
- # dirty? => true or false
23
- #
24
19
  # Returns +true+ if this static file is newer than its corresponding output
25
20
  # product. The static file needs to be copied to the output directory.
26
21
  #
@@ -29,22 +24,11 @@ class Static < Resource
29
24
  @mtime > ::File.mtime(destination)
30
25
  end
31
26
 
32
- # call-seq:
33
- # destination => string
34
- #
35
- # Returns the path in the output directory where the static file should
36
- # be copied. This path is used to determine if the static file is dirty
37
- # and in need of copying to the output file.
38
- #
39
- def destination
40
- return @dest if defined? @dest and @dest
41
-
42
- @dest = ::File.join(::Webby.site.output_dir, dir, filename)
43
- @dest << '.' << @ext if @ext and !@ext.empty?
44
- @dest
27
+ # :stopdoc:
28
+ def _read
29
+ ::File.read(path)
45
30
  end
46
-
47
- alias :extension :ext
31
+ # :startdoc:
48
32
 
49
33
  end # class Layout
50
34
  end # module Webby::Resources
@@ -44,25 +44,36 @@ module Webby::Resources
44
44
  end
45
45
 
46
46
  # see if we are dealing with a partial
47
- filename = ::Webby::Resources::File.basename(fn)
47
+ filename = self.basename(fn)
48
48
  if %r/\A_/o =~ filename
49
49
  r = ::Webby::Resources::Partial.new(fn)
50
50
  self.partials << r
51
51
  return r
52
52
  end
53
53
 
54
- # see if we are dealing with a static resource
55
- meta = ::Webby::Resources::File.meta_data(fn)
56
- if meta.nil?
57
- r = ::Webby::Resources::Static.new(fn)
58
- self.pages << r
59
- return r
54
+ begin
55
+ fd = ::File.open(fn, 'r')
56
+ mf = MetaFile.new fd
57
+
58
+ # see if we are dealing with a static resource
59
+ unless mf.meta_data?
60
+ r = ::Webby::Resources::Static.new(fn)
61
+ self.pages << r
62
+ return r
63
+ end
64
+
65
+ # this is a renderable page
66
+ mf.each do |meta_data|
67
+ r = ::Webby::Resources::Page.new(fn, meta_data)
68
+ self.pages << r
69
+ r
70
+ end
71
+ rescue MetaFile::Error => err
72
+ logger.error "error loading file #{fn.inspect}"
73
+ logger.error err
74
+ ensure
75
+ fd.close if fd
60
76
  end
61
-
62
- # this is a renderable page
63
- r = ::Webby::Resources::Page.new(fn)
64
- self.pages << r
65
- return r
66
77
  end
67
78
 
68
79
  # Returns a normalized path for the given filename.
@@ -77,7 +88,7 @@ module Webby::Resources
77
88
  def find_layout( filename )
78
89
  return if filename.nil?
79
90
 
80
- fn = ::Webby::Resources::File.basename(filename)
91
+ fn = self.basename(filename)
81
92
  dir = ::File.dirname(filename)
82
93
  dir = '.' == dir ? '' : dir
83
94
 
@@ -87,8 +98,37 @@ module Webby::Resources
87
98
  raise Webby::Error, "could not find layout #{filename.inspect}"
88
99
  end
89
100
 
90
- end # class << self
101
+ # Returns the directory component of the _filename_ with the content
102
+ # directory removed from the beginning if it is present.
103
+ #
104
+ def dirname( filename )
105
+ rgxp = %r/\A(?:#{::Webby.site.content_dir}|#{::Webby.site.layout_dir})\//o
106
+ dirname = ::File.dirname(filename)
107
+ dirname << '/' if dirname.index(?/) == nil
108
+ dirname.sub(rgxp, '')
109
+ end
110
+
111
+ # Returns the last component of the _filename_ with any extension
112
+ # information removed.
113
+ #
114
+ def basename( filename )
115
+ ::File.basename(filename, '.*')
116
+ end
117
+
118
+ # Returns the extension (the portion of file name in path after the
119
+ # period). This method excludes the period from the extension name.
120
+ #
121
+ def extname( filename )
122
+ ::File.extname(filename).tr('.', '')
123
+ end
91
124
 
125
+ # :stopdoc:
126
+ def logger
127
+ @logger ||= ::Logging::Logger[self]
128
+ end
129
+ # :startdoc:
130
+
131
+ end # class << self
92
132
  end # module Webby::Resources
93
133
 
94
134
  Webby.require_all_libs_relative_to(__FILE__)
@@ -18,7 +18,7 @@ class Paginator
18
18
  class MissingCountError < ArgumentError; end
19
19
  class MissingSelectError < ArgumentError; end
20
20
 
21
- attr_reader :per_page, :count, :resource
21
+ attr_reader :per_page, :count, :resource, :filename, :directory
22
22
 
23
23
  # Instantiate a new Paginator object
24
24
  #
@@ -31,6 +31,9 @@ class Paginator
31
31
  # convenience, if the arity is 2)
32
32
  def initialize(count, per_page, resource, &select)
33
33
  @count, @per_page, @resource = count, per_page, resource
34
+ @meta_data = @resource._meta_data.dup
35
+ @filename = @resource.filename
36
+ @directory = @resource.directory
34
37
  unless select
35
38
  raise MissingSelectError, "Must provide block to select data for each page"
36
39
  end
@@ -68,6 +71,11 @@ class Paginator
68
71
  @select.call(*args)
69
72
  })
70
73
  end
74
+
75
+ # Finalizer method that should be called when the paginator is finished
76
+ def done
77
+ resource._reset(@meta_data)
78
+ end
71
79
 
72
80
  # Page object
73
81
  #
@@ -84,7 +92,14 @@ class Paginator
84
92
  @offset = (number - 1) * pager.per_page
85
93
  @select = select
86
94
 
87
- @pager.resource.number = (number == 1 ? nil : number)
95
+ @pager.resource._reset
96
+ if number > 1
97
+ if ::Webby.site.create_mode == 'directory'
98
+ @pager.resource['directory'] = File.join(@pager.directory, number.to_s)
99
+ else
100
+ @pager.resource['filename'] = @pager.filename + number.to_s
101
+ end
102
+ end
88
103
  @url = @pager.resource.url
89
104
  end
90
105
 
data/lib/webby.rb CHANGED
@@ -18,9 +18,10 @@ Logging::Appender.stdout.layout = Logging::Layouts::Pattern.new(
18
18
  module Webby
19
19
 
20
20
  # :stopdoc:
21
- VERSION = '0.9.0' # :nodoc:
21
+ VERSION = '0.9.1' # :nodoc:
22
22
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
23
23
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
24
+ YAML_SEP = '---'
24
25
  # :startdoc:
25
26
 
26
27
  class Error < StandardError; end # :nodoc:
@@ -0,0 +1,9 @@
1
+
2
+ task :default => :build
3
+
4
+ desc 'deploy the site to the webserver'
5
+ task :deploy => [:build, 'deploy:rsync']
6
+
7
+ SITE.create_mode = 'directory'
8
+
9
+ # EOF
@@ -0,0 +1,10 @@
1
+ ---
2
+ filter: erb
3
+ ---
4
+ A partial has access to the page from which it was called. The title below will be the title of the page in which this partial is rendered.
5
+
6
+ <%%= h(@page.title) %>
7
+
8
+ A partial does not have access to it's own meta-data. The partial meta-data is used primarily for finding partials or for use in other pages. The filter(s) specified in the meta-data will be applied to the partial text when it is rendered.
9
+
10
+ A partial does not require meta-data at all. They can contain just text.
@@ -0,0 +1,111 @@
1
+ .CodeRay {
2
+ padding: 0.5em;
3
+ margin-bottom: 1.3em;
4
+ background-color: #eee;
5
+ border: 1px solid #aaa;
6
+ font: 1.1em Monaco, 'Courier New', 'Terminal', monospace;
7
+ color: #100;
8
+ }
9
+ .CodeRay pre {
10
+ padding: 0px;
11
+ margin: 0px;
12
+ overflow: auto;
13
+ background-color: transparent;
14
+ border: none;
15
+ }
16
+
17
+ div.CodeRay { }
18
+
19
+ span.CodeRay { white-space: pre; border: 0px; padding: 2px }
20
+
21
+ table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px }
22
+ table.CodeRay td { padding: 2px 4px; vertical-align: top }
23
+
24
+ .CodeRay .line_numbers, .CodeRay .no {
25
+ background-color: #def;
26
+ color: gray;
27
+ text-align: right;
28
+ }
29
+ .CodeRay .line_numbers tt { font-weight: bold }
30
+ .CodeRay .no { padding: 0px 4px }
31
+
32
+ ol.CodeRay { font-size: 10pt }
33
+ ol.CodeRay li { white-space: pre }
34
+
35
+ .CodeRay .debug { color:white ! important; background:blue ! important; }
36
+
37
+ .CodeRay .af { color:#00C }
38
+ .CodeRay .an { color:#007 }
39
+ .CodeRay .av { color:#700 }
40
+ .CodeRay .aw { color:#C00 }
41
+ .CodeRay .bi { color:#509; font-weight:bold }
42
+ .CodeRay .c { color:#666; }
43
+
44
+ .CodeRay .ch { color:#04D }
45
+ .CodeRay .ch .k { color:#04D }
46
+ .CodeRay .ch .dl { color:#039 }
47
+
48
+ .CodeRay .cl { color:#B06; font-weight:bold }
49
+ .CodeRay .co { color:#036; font-weight:bold }
50
+ .CodeRay .cr { color:#0A0 }
51
+ .CodeRay .cv { color:#369 }
52
+ .CodeRay .df { color:#099; font-weight:bold }
53
+ .CodeRay .di { color:#088; font-weight:bold }
54
+ .CodeRay .dl { color:black }
55
+ .CodeRay .do { color:#970 }
56
+ .CodeRay .ds { color:#D42; font-weight:bold }
57
+ .CodeRay .e { color:#666; font-weight:bold }
58
+ .CodeRay .en { color:#800; font-weight:bold }
59
+ .CodeRay .er { color:#F00; background-color:#FAA }
60
+ .CodeRay .ex { color:#F00; font-weight:bold }
61
+ .CodeRay .fl { color:#60E; font-weight:bold }
62
+ .CodeRay .fu { color:#06B; font-weight:bold }
63
+ .CodeRay .gv { color:#d70; font-weight:bold }
64
+ .CodeRay .hx { color:#058; font-weight:bold }
65
+ .CodeRay .i { color:#00D; font-weight:bold }
66
+ .CodeRay .ic { color:#B44; font-weight:bold }
67
+
68
+ .CodeRay .il { background: #eee }
69
+ .CodeRay .il .il { background: #ddd }
70
+ .CodeRay .il .il .il { background: #ccc }
71
+ .CodeRay .il .idl { font-weight: bold; color: #888 }
72
+
73
+ .CodeRay .in { color:#B2B; font-weight:bold }
74
+ .CodeRay .iv { color:#33B }
75
+ .CodeRay .la { color:#970; font-weight:bold }
76
+ .CodeRay .lv { color:#963 }
77
+ .CodeRay .oc { color:#40E; font-weight:bold }
78
+ .CodeRay .of { color:#000; font-weight:bold }
79
+ .CodeRay .op { }
80
+ .CodeRay .pc { color:#038; font-weight:bold }
81
+ .CodeRay .pd { color:#369; font-weight:bold }
82
+ .CodeRay .pp { color:#579 }
83
+ .CodeRay .pt { color:#339; font-weight:bold }
84
+ .CodeRay .r { color:#080; font-weight:bold }
85
+
86
+ .CodeRay .rx { background-color:#fff0ff }
87
+ .CodeRay .rx .k { color:#808 }
88
+ .CodeRay .rx .dl { color:#404 }
89
+ .CodeRay .rx .mod { color:#C2C }
90
+ .CodeRay .rx .fu { color:#404; font-weight: bold }
91
+
92
+ .CodeRay .s { background-color:#fff0f0 }
93
+ .CodeRay .s .s { background-color:#ffe0e0 }
94
+ .CodeRay .s .s .s { background-color:#ffd0d0 }
95
+ .CodeRay .s .k { color:#D20 }
96
+ .CodeRay .s .dl { color:#710 }
97
+
98
+ .CodeRay .sh { background-color:#f0fff0 }
99
+ .CodeRay .sh .k { color:#2B2 }
100
+ .CodeRay .sh .dl { color:#161 }
101
+
102
+ .CodeRay .sy { color:#A60 }
103
+ .CodeRay .sy .k { color:#A60 }
104
+ .CodeRay .sy .dl { color:#630 }
105
+
106
+ .CodeRay .ta { color:#070 }
107
+ .CodeRay .tf { color:#070; font-weight:bold }
108
+ .CodeRay .ts { color:#D70; font-weight:bold }
109
+ .CodeRay .ty { color:#339; font-weight:bold }
110
+ .CodeRay .v { color:#036 }
111
+ .CodeRay .xt { color:#444 }
@@ -0,0 +1,67 @@
1
+ ---
2
+ extension: css
3
+ filter: erb
4
+ layout: nil # no layout
5
+
6
+ color:
7
+ border: "#ddd"
8
+ header: "#111"
9
+ link: "#125AA7"
10
+ link-hover: "#000"
11
+ blockquote: "#666"
12
+ box-bg: "#eee"
13
+ highlight: "#B2CCFF"
14
+ quiet: "#666"
15
+ alt: "#666"
16
+ ---
17
+
18
+ body {
19
+ font-family: Verdana, "Bitstream Vera Sans", sans-serif;
20
+ }
21
+
22
+ /* Headings
23
+ * --------------------------------------------------------------------- */
24
+ h1,h2,h3,h4,h5,h6 { color: <%= @page.color['header'] %>; }
25
+
26
+ /* Text Elements
27
+ * --------------------------------------------------------------------- */
28
+ a { color: <%= @page.color['link'] %>; }
29
+ a:hover { color: <%= @page.color['link-hover'] %>; }
30
+ blockquote { color: <%= @page.color['blockquote'] %>; }
31
+
32
+ pre {
33
+ background: <%= @page.color['box-bg'] %>;
34
+ border: 1px solid <%= @page.color['border'] %>;
35
+ }
36
+
37
+ hr {
38
+ background: <%= @page.color['highlight'] %>;
39
+ color: <%= @page.color['highlight'] %>;
40
+ }
41
+
42
+ /* Tables
43
+ * --------------------------------------------------------------------- */
44
+ table {
45
+ border-top: 1px solid <%= @page.color['border'] %>;
46
+ border-left: 1px solid <%= @page.color['border'] %>;
47
+ }
48
+ th,td {
49
+ border-bottom: 1px solid <%= @page.color['border'] %>;
50
+ border-right: 1px solid <%= @page.color['border'] %>;
51
+ }
52
+
53
+ /* Default Classes
54
+ * --------------------------------------------------------------------- */
55
+ p.quiet { color: <%= @page.color['quiet'] %>; }
56
+ .alt { color: <%= @page.color['alt'] %>; }
57
+
58
+ p.title {
59
+ color: #111;
60
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
61
+ font-size: 2em;
62
+ margin-bottom: 0.75em;
63
+ }
64
+
65
+ #header p.title { font-size: 3em; line-height: 1; margin-bottom: 0.5em; }
66
+
67
+ /* EOF */
@@ -0,0 +1,308 @@
1
+ ---
2
+ extension: css
3
+ filter: sass
4
+ layout: nil # no layout
5
+ sass_options:
6
+ :style: :expanded
7
+ ---
8
+ !background = #FFF
9
+ !text = #000
10
+ !border = #CCC
11
+ !header = #6498CC
12
+ !link = #6498CC
13
+ !link_hover = #000
14
+ !blockquote = #666
15
+ !code = #000
16
+ !box_bg = #EEE
17
+ !highlight = #6498CC
18
+ !quiet = #666
19
+ !alt = #666
20
+
21
+ !title = #444
22
+ !description = #777
23
+ !date = #CCC
24
+ !date_brick = #BBD5F1
25
+
26
+ body
27
+ :margin 0px
28
+ :background-color = !background
29
+ :font-family Verdana, Geneva, Arial, sans-serif
30
+
31
+ a
32
+ :color = !link
33
+ :text-decoration none
34
+ &:hover
35
+ :text-decoration underline
36
+
37
+ h1
38
+ :width 600px
39
+ :padding 0px 100px 20px 100px
40
+ :margin 50px auto 40px auto
41
+ :border-bottom = solid 1px !border
42
+ :text-align center
43
+ :font Bold 55px 'Trebuchet MS', Geneva, Arial, sans-serif
44
+ :letter-spacing -2px
45
+ :line-height 50px
46
+ :position relative
47
+
48
+ a
49
+ :color = !title
50
+ :text-decoration none
51
+ &:hover
52
+ :text-decoration none
53
+
54
+ img
55
+ :border-width 0px
56
+ :position absolute
57
+ :right 0px
58
+ :bottom 10px
59
+ :width 43px
60
+ :height 23px
61
+
62
+
63
+ div#content
64
+ :width 420px
65
+ :margin auto
66
+ :position relative
67
+
68
+ div#description
69
+ :position absolute
70
+ :right -170px
71
+ :width 160px
72
+ :text-align right
73
+ :font Normal 17px Verdana, Geneva, Arial, sans-serif
74
+ :line-height 20px
75
+ :color = !description
76
+
77
+ a
78
+ :color = !description
79
+ :text-decoration underline
80
+
81
+ div.post
82
+ :position relative
83
+ :margin-bottom 40px
84
+ :padding-right 20px
85
+
86
+ div.date
87
+ :position absolute
88
+ :left -260px
89
+ :text-align right
90
+ :width 230px
91
+ :white-space nowrap
92
+ :font Normal 34px Verdana, Geneva, Arial, sans-serif
93
+ :letter-spacing -2px
94
+ :color = !date
95
+ :text-transform uppercase
96
+ :line-height 35px
97
+
98
+ div.date_brick
99
+ :float right
100
+ :height 30px
101
+ :width 45px
102
+ :background-color = !highlight
103
+ :color = !date_brick
104
+ :font Bold 12px Verdana, Geneva, Arial, sans-serif
105
+ :text-align center
106
+ :line-height 12px
107
+ :margin-left 10px
108
+ :padding-top 5px
109
+ :letter-spacing 0px
110
+ :overflow hidden
111
+
112
+ img.permalink
113
+ :width 14px
114
+ :height 13px
115
+ :border-width 0px
116
+ :background-color #000
117
+ :display none
118
+ :position absolute
119
+ :right 0px
120
+ :top 0px
121
+ :z-index 10
122
+
123
+ &:hover
124
+ img.permalink
125
+ :display inline
126
+
127
+ h2
128
+ :font Bold 18px 'Trebuchet MS', Geneva, Arial, sans-serif
129
+ :color #6498CC
130
+ :letter-spacing -1px
131
+ :margin 0px 0px 5px 0px
132
+
133
+ a
134
+ :color #6498CC
135
+ :text-decoration none
136
+
137
+ div.caption
138
+ :font-size 14px
139
+ :font-weight bold
140
+ :color #444
141
+ :margin-top 10px
142
+ :padding 0px 20px 0px 20px
143
+
144
+ a
145
+ :color #444
146
+
147
+ // Regular Post
148
+
149
+ div.regular
150
+ :font-size 12px
151
+ :color #444
152
+ :line-height 17px
153
+
154
+ h2
155
+ :font-size 36px
156
+ :line-height 34px
157
+
158
+ blockquote
159
+ :font-style italic
160
+ :border-left solid 2px #444
161
+ :padding-left 10px
162
+
163
+ // Quote Post
164
+
165
+ div.quote
166
+ h2
167
+ :font-size 36px
168
+ :line-height 34px
169
+ a
170
+ :color #6498CC
171
+
172
+ p
173
+ :font Bold 28px Helvetica, sans-serif
174
+ :letter-spacing -1px
175
+ :color #666
176
+
177
+ a
178
+ :color #666
179
+
180
+ big
181
+ :font Bold 60px Georgia, serif
182
+ :line-height 8px
183
+ :vertical-align -20px
184
+
185
+ span.source
186
+ :font Bold 16px Verdana, Geneva, Arial, sans-serif
187
+ :color #444
188
+ :letter-spacing -1px
189
+
190
+ a
191
+ :color #444
192
+
193
+ div.source
194
+ :font-size 16px
195
+ :font-weight Bold
196
+ :color #555
197
+ :margin-top 5px
198
+
199
+ a
200
+ :color #555
201
+
202
+ // Link Post
203
+
204
+ div.link
205
+ h2
206
+ :font-size 36px
207
+ :line-height 34px
208
+
209
+ a.link
210
+ :font Bold 20px Verdana, Geneva, Arial, sans-serif
211
+ :letter-spacing -1px
212
+ :color #C00
213
+
214
+ span.description
215
+ :font-size 13px
216
+ :font-weight normal
217
+ :letter-spacing -1px
218
+ :color #444
219
+
220
+ // Conversation Post
221
+
222
+ div.conversation
223
+ ul
224
+ :list-style-type none
225
+ :margin 0px
226
+ :padding 0px 0px 0px 1px
227
+
228
+ li
229
+ :font-size 12px
230
+ :padding 4px 10px 4px 8px
231
+ :color #444
232
+ :margin-bottom 1px
233
+
234
+ span.label
235
+ :font-weight bold
236
+
237
+ span.user_1
238
+ :color #C00
239
+
240
+ span.user_2
241
+ :color #00C
242
+
243
+ span.user_3
244
+ :color #0A0
245
+
246
+ li.odd
247
+ :background-color #F4F4F4
248
+
249
+ li.even
250
+ :background-color #E8E8E8
251
+
252
+ h2
253
+ :font-size 36px
254
+ :line-height 34px
255
+ :position relative
256
+ :top -4px
257
+ :margin-top 0px
258
+ :padding-top 0px
259
+
260
+ // Photo Post
261
+
262
+ div.photo
263
+ h2
264
+ :font-size 36px
265
+ :line-height 34px
266
+
267
+ p.caption
268
+ :font-size 11px
269
+ :color #444
270
+ :margin-top 5px
271
+ a
272
+ :color #444
273
+
274
+ // Video Post
275
+
276
+ div.video
277
+ :width 400px
278
+ :margin auto
279
+
280
+ h2
281
+ :font-size 36px
282
+ :line-height 40px
283
+ :letter-spacing -1px
284
+ :font-weight Bold
285
+ :font-family 'Trebuchet MS', Geneva, Arial, sans-serif
286
+ :margin 0px 0px 5px 0px
287
+
288
+ // Footer
289
+
290
+ div#footer
291
+ :margin 40px 0px 30px 0px
292
+ :text-align center
293
+ :font-size 15px
294
+ :font-weight bold
295
+ :color #444
296
+
297
+ a
298
+ :text-decoration none
299
+ :color #444
300
+
301
+ &:hover
302
+ :text-decoration underline
303
+
304
+ div#credit
305
+ :font Normal 13px Verdana, Geneva, Arial, sans-serif
306
+ :margin-top 15px
307
+
308
+ // EOF