TwP-webby 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -0
- data/Manifest.txt +45 -2
- data/Rakefile +1 -2
- data/examples/webby/content/css/site.css +1 -1
- data/examples/webby/content/learn/index.txt +1 -1
- data/examples/webby/content/release-notes/index.txt +21 -0
- data/examples/webby/content/release-notes/rel-0-9-0/index.txt +1 -0
- data/examples/webby/content/release-notes/rel-0-9-1/index.txt +93 -0
- data/examples/webby/content/tips_and_tricks/index.txt +14 -13
- data/examples/webby/content/tutorial/index.txt +13 -9
- data/examples/webby/content/user-manual/index.txt +8 -8
- data/examples/webby/layouts/default.txt +1 -1
- data/lib/webby/apps/main.rb +25 -13
- data/lib/webby/auto_builder.rb +2 -0
- data/lib/webby/builder.rb +2 -5
- data/lib/webby/filters.rb +5 -13
- data/lib/webby/renderer.rb +7 -5
- data/lib/webby/resources/db.rb +4 -4
- data/lib/webby/resources/layout.rb +14 -23
- data/lib/webby/resources/meta_file.rb +208 -0
- data/lib/webby/resources/page.rb +21 -58
- data/lib/webby/resources/partial.rb +10 -4
- data/lib/webby/resources/resource.rb +68 -27
- data/lib/webby/resources/static.rb +6 -22
- data/lib/webby/resources.rb +54 -14
- data/lib/webby/stelan/paginator.rb +17 -2
- data/lib/webby.rb +2 -1
- data/spec/data/Sitefile +9 -0
- data/spec/data/content/_partial.txt +10 -0
- data/spec/data/content/css/coderay.css +111 -0
- data/spec/data/content/css/site.css +67 -0
- data/spec/data/content/css/tumblog.css +308 -0
- data/spec/data/content/images/tumblog/permalink.gif +0 -0
- data/spec/data/content/images/tumblog/rss.gif +0 -0
- data/spec/data/content/index.txt +19 -0
- data/spec/data/content/photos.txt +21 -0
- data/spec/data/content/tumblog/200806/the-noble-chicken/index.txt +12 -0
- data/spec/data/content/tumblog/200807/historical-perspectives-on-the-classic-chicken-joke/index.txt +12 -0
- data/spec/data/content/tumblog/200807/mad-city-chickens/index.txt +10 -0
- data/spec/data/content/tumblog/200807/the-wisdom-of-the-dutch/index.txt +11 -0
- data/spec/data/content/tumblog/200807/up-a-tree/index.txt +13 -0
- data/spec/data/content/tumblog/index.txt +37 -0
- data/spec/data/content/tumblog/rss.txt +37 -0
- data/spec/data/hooligans/bad_meta_data_1.txt +34 -0
- data/spec/data/hooligans/bad_meta_data_2.txt +34 -0
- data/spec/data/layouts/default.txt +58 -0
- data/spec/data/layouts/tumblog/default.txt +44 -0
- data/spec/data/layouts/tumblog/post.txt +15 -0
- data/spec/data/lib/breadcrumbs.rb +28 -0
- data/spec/data/lib/tumblog_helper.rb +32 -0
- data/spec/data/tasks/tumblog.rake +30 -0
- data/spec/data/templates/_partial.erb +10 -0
- data/spec/data/templates/atom_feed.erb +40 -0
- data/spec/data/templates/page.erb +18 -0
- data/spec/data/templates/presentation.erb +40 -0
- data/spec/data/templates/tumblog/conversation.erb +12 -0
- data/spec/data/templates/tumblog/link.erb +10 -0
- data/spec/data/templates/tumblog/photo.erb +13 -0
- data/spec/data/templates/tumblog/post.erb +12 -0
- data/spec/data/templates/tumblog/quote.erb +11 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/webby/apps/generator_spec.rb +4 -0
- data/spec/webby/apps/main_spec.rb +16 -3
- data/spec/webby/filters/textile_spec.rb +20 -0
- data/spec/webby/renderer_spec.rb +139 -0
- data/spec/webby/resources/db_spec.rb +250 -0
- data/spec/webby/resources/layout_spec.rb +83 -0
- data/spec/webby/resources/meta_file_spec.rb +157 -0
- data/spec/webby/resources/page_spec.rb +111 -0
- data/spec/webby/resources/partial_spec.rb +58 -0
- data/spec/webby/resources/resource_spec.rb +214 -0
- data/spec/webby/resources/static_spec.rb +49 -0
- data/spec/webby/resources_spec.rb +55 -3
- data/tasks/rubyforge.rake +1 -1
- metadata +64 -6
- data/lib/webby/resources/file.rb +0 -221
- 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
|
-
|
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
|
-
#
|
33
|
-
|
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
|
data/lib/webby/resources.rb
CHANGED
@@ -44,25 +44,36 @@ module Webby::Resources
|
|
44
44
|
end
|
45
45
|
|
46
46
|
# see if we are dealing with a partial
|
47
|
-
filename =
|
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
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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 =
|
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
|
-
|
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.
|
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.
|
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:
|
data/spec/data/Sitefile
ADDED
@@ -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
|