nesta 0.9.13 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/{spec/spec.opts → .rspec} +0 -0
- data/.travis.yml +3 -2
- data/CHANGES +130 -1
- data/Gemfile +1 -8
- data/Gemfile.lock +68 -51
- data/LICENSE +1 -1
- data/README.md +38 -6
- data/Rakefile +2 -5
- data/bin/nesta +59 -3
- data/config.ru +3 -0
- data/lib/nesta.rb +1 -1
- data/lib/nesta/app.rb +20 -17
- data/lib/nesta/commands.rb +6 -3
- data/lib/nesta/config.rb +52 -15
- data/lib/nesta/helpers.rb +30 -3
- data/lib/nesta/models.rb +48 -30
- data/lib/nesta/navigation.rb +32 -12
- data/lib/nesta/overrides.rb +5 -5
- data/lib/nesta/version.rb +1 -1
- data/nesta.gemspec +9 -10
- data/smoke-test.sh +102 -0
- data/spec/atom_spec.rb +52 -49
- data/spec/commands_spec.rb +22 -16
- data/spec/config_spec.rb +66 -6
- data/spec/fixtures/nesta-plugin-test/lib/nesta-plugin-test/init.rb +1 -3
- data/spec/model_factory.rb +16 -16
- data/spec/models_spec.rb +197 -144
- data/spec/overrides_spec.rb +21 -21
- data/spec/page_spec.rb +182 -136
- data/spec/sitemap_spec.rb +48 -43
- data/spec/spec_helper.rb +32 -17
- data/templates/Gemfile +5 -2
- data/templates/config/config.yml +13 -13
- data/templates/config/deploy.rb +2 -2
- data/templates/index.haml +2 -0
- data/templates/themes/app.rb +1 -1
- data/templates/themes/views/layout.haml +7 -0
- data/templates/themes/views/master.sass +3 -0
- data/templates/themes/views/page.haml +1 -0
- data/views/atom.haml +3 -3
- data/views/comments.haml +1 -1
- data/views/error.haml +1 -1
- data/views/feed.haml +1 -1
- data/views/layout.haml +6 -3
- data/views/master.sass +143 -133
- data/views/mixins.sass +53 -28
- data/views/normalize.scss +396 -0
- data/views/page_meta.haml +2 -2
- data/views/sitemap.haml +2 -2
- data/views/summaries.haml +2 -2
- metadata +155 -202
- data/lib/nesta/cache.rb +0 -138
data/spec/sitemap_spec.rb
CHANGED
@@ -4,97 +4,102 @@ require File.expand_path('model_factory', File.dirname(__FILE__))
|
|
4
4
|
describe "sitemap XML" do
|
5
5
|
include RequestSpecHelper
|
6
6
|
include ModelFactory
|
7
|
-
|
7
|
+
|
8
8
|
before(:each) do
|
9
9
|
stub_configuration
|
10
10
|
@category = create_category do |path|
|
11
|
-
mock_file_stat(:stub
|
11
|
+
mock_file_stat(:stub, path, "3 Jan 2009, 15:07")
|
12
12
|
end
|
13
13
|
@article = create_article do |path|
|
14
|
-
mock_file_stat(:stub
|
14
|
+
mock_file_stat(:stub, path, "3 Jan 2009, 15:10")
|
15
|
+
end
|
16
|
+
skipped_page_definition = {
|
17
|
+
path: 'unlisted-page',
|
18
|
+
metadata: { 'flags' => 'skip-sitemap' }
|
19
|
+
}
|
20
|
+
@skipped = create_page(skipped_page_definition) do |path|
|
21
|
+
mock_file_stat(:stub, path, "3 Jan 2009, 15:07")
|
15
22
|
end
|
16
23
|
get "/sitemap.xml"
|
17
24
|
end
|
18
|
-
|
25
|
+
|
19
26
|
after(:each) do
|
20
27
|
Nesta::FileModel.purge_cache
|
21
28
|
remove_temp_directory
|
22
29
|
end
|
23
|
-
|
30
|
+
|
24
31
|
it "should render successfully" do
|
25
32
|
last_response.should be_ok
|
26
33
|
end
|
27
|
-
|
34
|
+
|
28
35
|
it "should have a urlset tag" do
|
29
36
|
namespace = "http://www.sitemaps.org/schemas/sitemap/0.9"
|
30
|
-
|
37
|
+
assert_xpath "//urlset[@xmlns='#{namespace}']"
|
31
38
|
end
|
32
|
-
|
39
|
+
|
33
40
|
it "should reference the home page" do
|
34
|
-
|
41
|
+
assert_xpath "//urlset/url/loc", content: "http://example.org/"
|
35
42
|
end
|
36
|
-
|
43
|
+
|
37
44
|
it "should configure home page to be checked frequently" do
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
url.should have_tag("priority", "1.0")
|
42
|
-
end
|
45
|
+
assert_xpath "//urlset/url/loc", content: "http://example.org/"
|
46
|
+
assert_xpath "//urlset/url/changefreq", content: "daily"
|
47
|
+
assert_xpath "//urlset/url/priority", content: "1.0"
|
43
48
|
end
|
44
|
-
|
49
|
+
|
45
50
|
it "should set the homepage lastmod from latest article" do
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
51
|
+
assert_xpath "//urlset/url/loc", content: "http://example.org/"
|
52
|
+
assert_xpath "//urlset/url/lastmod", content: "2009-01-03T15:10:00"
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_url(path)
|
56
|
+
"http://example.org/#{path}"
|
50
57
|
end
|
51
|
-
|
58
|
+
|
52
59
|
it "should reference category pages" do
|
53
|
-
|
54
|
-
"/urlset/url/loc", "http://example.org/#{@category.path}")
|
60
|
+
assert_xpath "//urlset/url/loc", content: test_url(@category.path)
|
55
61
|
end
|
56
|
-
|
62
|
+
|
57
63
|
it "should reference article pages" do
|
58
|
-
|
59
|
-
|
64
|
+
assert_xpath "//urlset/url/loc", content: test_url(@article.path)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should not include pages that have the skip-sitemap flag set" do
|
68
|
+
assert_not_xpath "//urlset/url/loc", content: test_url(@skipped.path)
|
60
69
|
end
|
61
70
|
end
|
62
71
|
|
63
72
|
describe "sitemap XML lastmod" do
|
64
73
|
include ModelFactory
|
65
74
|
include RequestSpecHelper
|
66
|
-
|
75
|
+
|
67
76
|
before(:each) do
|
68
77
|
stub_configuration
|
69
78
|
end
|
70
|
-
|
79
|
+
|
71
80
|
after(:each) do
|
72
81
|
remove_temp_directory
|
73
82
|
Nesta::FileModel.purge_cache
|
74
83
|
end
|
75
|
-
|
84
|
+
|
76
85
|
it "should be set for file based page" do
|
77
86
|
create_article do |path|
|
78
|
-
mock_file_stat(:stub
|
87
|
+
mock_file_stat(:stub, path, "3 January 2009, 15:37:01")
|
79
88
|
end
|
80
89
|
get "/sitemap.xml"
|
81
|
-
|
82
|
-
|
83
|
-
url.should have_tag("lastmod", /^2009-01-03T15:37:01/)
|
84
|
-
end
|
90
|
+
assert_selector("url loc:contains('my-article')")
|
91
|
+
assert_selector("url lastmod:contains('2009-01-03T15:37:01')")
|
85
92
|
end
|
86
|
-
|
93
|
+
|
87
94
|
it "should be set to latest page for home page" do
|
88
|
-
create_article(:
|
89
|
-
mock_file_stat(:stub
|
95
|
+
create_article(path: "article-1") do |path|
|
96
|
+
mock_file_stat(:stub, path, "4 January 2009")
|
90
97
|
end
|
91
|
-
create_article(:
|
92
|
-
mock_file_stat(:stub
|
98
|
+
create_article(path: "article-2") do |path|
|
99
|
+
mock_file_stat(:stub, path, "3 January 2009")
|
93
100
|
end
|
94
101
|
get "/sitemap.xml"
|
95
|
-
|
96
|
-
|
97
|
-
url.should have_tag("lastmod", /^2009-01-04/)
|
98
|
-
end
|
102
|
+
assert_selector("url loc:contains('http://example.org/')")
|
103
|
+
assert_selector("url lastmod:contains('2009-01-04')")
|
99
104
|
end
|
100
105
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
|
-
require '
|
2
|
-
require 'spec'
|
3
|
-
require 'spec/interop/test'
|
1
|
+
require 'rspec'
|
4
2
|
require 'rack/test'
|
5
|
-
require 'rspec_hpricot_matchers'
|
6
3
|
require 'sinatra'
|
7
|
-
|
8
|
-
|
4
|
+
require 'test/unit'
|
5
|
+
require 'webrat'
|
6
|
+
require 'webrat/core/matchers'
|
9
7
|
|
10
8
|
module Nesta
|
11
9
|
class App < Sinatra::Base
|
@@ -20,25 +18,25 @@ require File.expand_path('../lib/nesta/app', File.dirname(__FILE__))
|
|
20
18
|
module ConfigSpecHelper
|
21
19
|
def stub_yaml_config
|
22
20
|
@config = {}
|
23
|
-
Nesta::Config.stub
|
24
|
-
Nesta::Config.stub
|
21
|
+
Nesta::Config.stub(:yaml_exists?).and_return(true)
|
22
|
+
Nesta::Config.stub(:yaml_conf).and_return(@config)
|
25
23
|
end
|
26
24
|
|
27
25
|
def stub_config_key(key, value, options = {})
|
28
26
|
stub_yaml_config unless @config
|
29
|
-
if options[:
|
27
|
+
if options[:for_environment]
|
30
28
|
@config['test'] ||= {}
|
31
29
|
@config['test'][key] = value
|
32
30
|
else
|
33
31
|
@config[key] = value
|
34
32
|
end
|
35
33
|
end
|
36
|
-
|
34
|
+
|
37
35
|
def stub_configuration(options = {})
|
38
36
|
stub_config_key('title', 'My blog', options)
|
39
37
|
stub_config_key('subtitle', 'about stuff', options)
|
40
38
|
stub_config_key(
|
41
|
-
'content', temp_path('content'), options.merge(:
|
39
|
+
'content', temp_path('content'), options.merge(rack_env: true))
|
42
40
|
end
|
43
41
|
end
|
44
42
|
|
@@ -50,27 +48,44 @@ module TempFileHelper
|
|
50
48
|
end
|
51
49
|
|
52
50
|
def remove_temp_directory
|
53
|
-
FileUtils.rm_r(TempFileHelper::TEMP_DIR, :
|
51
|
+
FileUtils.rm_r(TempFileHelper::TEMP_DIR, force: true)
|
54
52
|
end
|
55
|
-
|
53
|
+
|
56
54
|
def temp_path(base)
|
57
55
|
File.join(TempFileHelper::TEMP_DIR, base)
|
58
56
|
end
|
59
57
|
end
|
60
58
|
|
61
|
-
|
62
|
-
config.include(RspecHpricotMatchers)
|
63
|
-
|
59
|
+
RSpec.configure do |config|
|
64
60
|
config.include(ConfigSpecHelper)
|
65
61
|
config.include(TempFileHelper)
|
62
|
+
config.include(Rack::Test::Methods)
|
66
63
|
end
|
67
64
|
|
68
65
|
module RequestSpecHelper
|
66
|
+
include Webrat::Matchers
|
67
|
+
|
69
68
|
def app
|
70
69
|
Nesta::App
|
71
70
|
end
|
72
|
-
|
71
|
+
|
73
72
|
def body
|
74
73
|
last_response.body
|
75
74
|
end
|
75
|
+
|
76
|
+
def assert_xpath(*args)
|
77
|
+
body.should have_xpath(*args)
|
78
|
+
end
|
79
|
+
|
80
|
+
def assert_not_xpath(*args)
|
81
|
+
body.should_not have_xpath(*args)
|
82
|
+
end
|
83
|
+
|
84
|
+
def assert_selector(*args)
|
85
|
+
body.should have_selector(*args)
|
86
|
+
end
|
87
|
+
|
88
|
+
def assert_not_selector(*args)
|
89
|
+
body.should_not have_selector(*args)
|
90
|
+
end
|
76
91
|
end
|
data/templates/Gemfile
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
3
|
gem 'nesta', '<%= Nesta::VERSION %>'
|
4
|
-
<% if @options['heroku'] %>gem 'heroku'<% end %>
|
5
4
|
<% if @options['vlad'] %>gem 'vlad', '2.1.0'
|
6
5
|
gem 'vlad-git', '2.2.0'<% end %>
|
7
6
|
|
8
|
-
|
7
|
+
group :development do
|
8
|
+
gem 'mr-sparkle'
|
9
|
+
end
|
10
|
+
|
11
|
+
# gem 'debugger'
|
data/templates/config/config.yml
CHANGED
@@ -28,14 +28,6 @@ subtitle: "(change this text in config/config.yml)"
|
|
28
28
|
#
|
29
29
|
# disqus_short_name: mysite
|
30
30
|
|
31
|
-
# cache
|
32
|
-
# Set it to true if you'd like Nesta to cache your pages in ./public.
|
33
|
-
# Useful if you're deploying Nesta with a proxy server such as Nginx,
|
34
|
-
# but not in the least bit helpful if your pages are dynamic, or you're
|
35
|
-
# deploying Nesta to Heroku.
|
36
|
-
#
|
37
|
-
cache: false
|
38
|
-
|
39
31
|
# content
|
40
32
|
# The root directory where nesta will look for your article files.
|
41
33
|
# Should contain "pages" and "attachments" subdirectories that contain
|
@@ -54,14 +46,22 @@ content: content
|
|
54
46
|
#
|
55
47
|
# google_analytics_code: "UA-???????-?"
|
56
48
|
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
49
|
+
# read_more
|
50
|
+
# When the summary of an article is displayed on the home page, or
|
51
|
+
# on a category page, there is a link underneath the summary that
|
52
|
+
# points to the rest of the post. Use this value to customize the
|
53
|
+
# default link text. You can still override this value on a per-page
|
54
|
+
# basis with the 'Read more' metadata key.
|
55
|
+
#
|
56
|
+
# read_more: "Continue reading"
|
57
|
+
|
58
|
+
# Overriding "content" in production is recommended if you're deploying
|
59
|
+
# Nesta to your own server (but see the deployment documentation on the
|
60
|
+
# Nesta site). Setting google_analytics_code in production is recommended
|
61
|
+
# regardless of how you're deploying (if you have a GA # account!).
|
61
62
|
#
|
62
63
|
# Don't forget to uncomment the "production:" line too...
|
63
64
|
|
64
65
|
# production:
|
65
|
-
# cache: true
|
66
66
|
# content: /var/apps/nesta/shared/content
|
67
67
|
# google_analytics_code: "UA-???????-?"
|
data/templates/config/deploy.rb
CHANGED
@@ -38,10 +38,10 @@ namespace :vlad do
|
|
38
38
|
# using a different app server in the call to Vlad.load in Rakefile.
|
39
39
|
#
|
40
40
|
desc "Deploy the code and restart the server"
|
41
|
-
task :
|
41
|
+
task deploy: [:update, :start_app]
|
42
42
|
|
43
43
|
# If you use bundler to manage the installation of gems on your server
|
44
44
|
# you can use this definition of the deploy task instead:
|
45
45
|
#
|
46
|
-
# task :
|
46
|
+
# task deploy: [:update, :bundle, :start_app]
|
47
47
|
end
|
data/templates/index.haml
CHANGED
data/templates/themes/app.rb
CHANGED
@@ -8,7 +8,7 @@ module Nesta
|
|
8
8
|
#
|
9
9
|
# Put your assets in themes/<%= @name %>/public/<%= @name %>.
|
10
10
|
#
|
11
|
-
# use Rack::Static, :
|
11
|
+
# use Rack::Static, urls: ["/<%= @name %>"], root: "themes/<%= @name %>/public"
|
12
12
|
|
13
13
|
helpers do
|
14
14
|
# Add new helpers here.
|
@@ -0,0 +1 @@
|
|
1
|
+
~ @page.to_html(self)
|
data/views/atom.haml
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
%title(type='text')= @title
|
4
4
|
%generator(uri='http://nestacms.com') Nesta
|
5
5
|
%id= atom_id
|
6
|
-
%link(href="#{
|
7
|
-
%link(href="#{
|
6
|
+
%link(href="#{path_to('/articles.xml', :uri => true)}" rel='self')
|
7
|
+
%link(href="#{path_to('/', :uri => true)}" rel='alternate')
|
8
8
|
%subtitle(type='text')= @subtitle
|
9
9
|
- if @articles[0]
|
10
10
|
%updated= @articles[0].date(:xmlschema)
|
@@ -19,7 +19,7 @@
|
|
19
19
|
- @articles.each do |article|
|
20
20
|
%entry
|
21
21
|
%title= article.heading
|
22
|
-
%link{ :href =>
|
22
|
+
%link{ :href => path_to(article.path, :uri => true), :type => 'text/html', :rel => 'alternate' }
|
23
23
|
%id= atom_id(article)
|
24
24
|
%content(type='html')&= find_and_preserve(absolute_urls(article.body(self)))
|
25
25
|
%published= article.date(:xmlschema)
|
data/views/comments.haml
CHANGED
data/views/error.haml
CHANGED
data/views/feed.haml
CHANGED
data/views/layout.haml
CHANGED
@@ -2,20 +2,23 @@
|
|
2
2
|
%html(lang="en")
|
3
3
|
%head
|
4
4
|
%meta(charset="utf-8")
|
5
|
+
%meta(content="width=device-width, initial-scale=1.0" name="viewport")
|
5
6
|
- if @description
|
6
7
|
%meta(name="description" content=@description)
|
7
8
|
- if @keywords
|
8
9
|
%meta(name="keywords" content=@keywords)
|
9
10
|
%title= @title
|
11
|
+
%link(href='http://fonts.googleapis.com/css?family=Roboto+Slab:400,700' rel='stylesheet' type='text/css')
|
10
12
|
<!--[if ! lte IE 6]><!-->
|
11
|
-
%link(href="#{
|
13
|
+
%link(href="#{path_to('/css/master.css')}" media="screen" rel="stylesheet")
|
14
|
+
- local_stylesheet_link_tag('local')
|
12
15
|
<!--<![endif]-->
|
13
16
|
/[if lte IE 6]
|
14
17
|
%link(rel="stylesheet" href="http://universal-ie6-css.googlecode.com/files/ie6.1.1.css" media="screen, projection")
|
15
18
|
/[if lt IE 9]
|
16
19
|
%script(src="//html5shim.googlecode.com/svn/trunk/html5.js")
|
17
|
-
|
18
|
-
%link(href="#{
|
20
|
+
%script(src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.1.0/respond.min.js")
|
21
|
+
%link(href="#{path_to('/articles.xml')}" rel="alternate" type="application/atom+xml")
|
19
22
|
= haml :analytics, :layout => false
|
20
23
|
%body
|
21
24
|
#container
|
data/views/master.sass
CHANGED
@@ -1,143 +1,138 @@
|
|
1
1
|
@import "mixins.sass"
|
2
|
-
@import "
|
3
|
-
|
4
|
-
// Variables
|
5
|
-
|
6
|
-
$content-width: 37em
|
7
|
-
|
8
|
-
$border-style: 1px dashed $border-color
|
9
|
-
|
10
|
-
// Reset
|
11
|
-
|
12
|
-
*
|
13
|
-
margin: 0
|
14
|
-
padding: 0
|
15
|
-
|
16
|
-
// Typography
|
17
|
-
|
18
|
-
@mixin text-shadow
|
19
|
-
text-shadow: 0 2px 3px #ddd
|
2
|
+
@import "normalize"
|
20
3
|
|
21
4
|
body
|
22
|
-
font:
|
23
|
-
line-height:
|
5
|
+
font: $size1 "Roboto Slab", serif
|
6
|
+
line-height: 1.6
|
24
7
|
color: $base-color
|
25
8
|
|
9
|
+
div#container
|
10
|
+
position: relative
|
11
|
+
margin: 0 1em
|
12
|
+
|
26
13
|
header[role=banner]
|
27
14
|
h1,
|
28
15
|
h2
|
29
16
|
margin: 0
|
30
|
-
line-height: 1.2em
|
31
17
|
font-weight: normal
|
18
|
+
|
32
19
|
h1
|
33
|
-
|
34
|
-
|
20
|
+
margin-top: 0.5em
|
21
|
+
font-size: $size2
|
22
|
+
|
35
23
|
h2
|
36
24
|
color: $meta-color
|
37
|
-
font-size:
|
25
|
+
font-size: $size0
|
26
|
+
|
27
|
+
footer.branding
|
28
|
+
padding-top: 2em
|
29
|
+
|
30
|
+
+respond-to(medium-screens)
|
31
|
+
div#container
|
32
|
+
margin: 0 auto
|
33
|
+
max-width: $measure
|
34
|
+
|
35
|
+
+respond-to(wide-screens)
|
36
|
+
div#container
|
37
|
+
max-width: $full-page-width
|
38
|
+
|
39
|
+
div#content
|
40
|
+
float: left
|
41
|
+
width: 37em
|
42
|
+
|
43
|
+
div#sidebar
|
44
|
+
float: right
|
45
|
+
width: $sidebar-width
|
46
|
+
|
47
|
+
footer.branding
|
48
|
+
clear: both
|
49
|
+
|
50
|
+
h1, h2, h3, h4
|
51
|
+
margin: 1em 0 0.5em
|
38
52
|
|
39
|
-
h1, h2, h3, h4, h5, h6
|
40
|
-
font-family: Georgia, serif
|
41
53
|
h1
|
42
|
-
|
43
|
-
font-weight: normal
|
54
|
+
font-size: $size4
|
44
55
|
h2
|
45
|
-
|
46
|
-
font-weight: normal
|
56
|
+
font-size: $size3
|
47
57
|
h3
|
48
|
-
|
49
|
-
font-weight: normal
|
58
|
+
font-size: $size2
|
50
59
|
h4
|
51
|
-
|
60
|
+
font-size: $size2
|
52
61
|
|
53
62
|
ol,
|
54
63
|
p,
|
55
64
|
pre,
|
56
65
|
ul
|
57
|
-
margin: 0
|
58
|
-
margin-bottom: $base-vertical-margin
|
66
|
+
margin: 0 0 $vertical-margin
|
59
67
|
|
60
68
|
li
|
61
|
-
|
69
|
+
margin: 0
|
62
70
|
|
63
71
|
blockquote
|
64
|
-
margin: $
|
65
|
-
padding: 0 $
|
72
|
+
margin: $vertical-margin 0
|
73
|
+
padding: 0 $vertical-margin / 2
|
74
|
+
border-left: 5px solid $tint
|
66
75
|
|
67
76
|
font-style: italic
|
68
77
|
color: $base-color + #555
|
69
78
|
|
70
79
|
pre
|
71
|
-
|
80
|
+
display: block
|
81
|
+
width: auto
|
82
|
+
|
83
|
+
padding: 0.5em
|
84
|
+
|
85
|
+
font-size: $size0
|
86
|
+
|
72
87
|
overflow: auto
|
88
|
+
white-space: pre
|
89
|
+
|
90
|
+
code
|
91
|
+
font-size: 1em
|
92
|
+
|
93
|
+
code
|
94
|
+
font-size: $size0
|
73
95
|
|
74
96
|
img
|
75
97
|
border: none
|
76
98
|
|
77
99
|
nav.breadcrumb
|
78
|
-
margin-top: $vertical-
|
100
|
+
margin-top: $vertical-margin
|
79
101
|
color: $meta-color
|
80
|
-
padding: 0.5em 0
|
81
102
|
|
82
103
|
font-size: 0.909em
|
83
104
|
|
84
|
-
|
105
|
+
ul
|
106
|
+
margin: 0
|
107
|
+
padding: 0
|
85
108
|
|
86
|
-
|
87
|
-
|
109
|
+
li
|
110
|
+
display: inline
|
111
|
+
list-style: none
|
88
112
|
|
89
|
-
|
90
|
-
|
91
|
-
margin: 0 auto
|
92
|
-
padding: 1em 1em 0 1em
|
113
|
+
&::before
|
114
|
+
content: " > "
|
93
115
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
float: left
|
98
|
-
padding: 1px 0
|
116
|
+
&:last-child
|
117
|
+
display: block
|
118
|
+
margin-left: 1em
|
99
119
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
padding: 0 1em
|
104
|
-
|
105
|
-
footer.branding
|
106
|
-
clear: both
|
107
|
-
color: $meta-color
|
108
|
-
@include adjust-font-size($base-scale)
|
109
|
-
p
|
110
|
-
width: $content-width
|
111
|
-
margin: 0
|
112
|
-
padding: 1em 0
|
120
|
+
+respond-to(medium-screens)
|
121
|
+
display: inline
|
122
|
+
margin: 0
|
113
123
|
|
114
|
-
|
124
|
+
&:first-child
|
125
|
+
margin-left: 0
|
115
126
|
|
116
127
|
a
|
117
|
-
border-bottom: 1px dotted $link-color
|
118
|
-
text-decoration: none
|
119
128
|
color: $link-color
|
120
|
-
|
129
|
+
+transition(color 0.25s 0 ease)
|
121
130
|
&:visited
|
122
131
|
color: $visited-link-color
|
123
|
-
border-bottom-color: $visited-link-color
|
124
132
|
&:hover
|
125
133
|
color: $hover-link-color
|
126
|
-
border-bottom-color: $hover-link-color
|
127
134
|
&:active
|
128
135
|
color: $active-link-color
|
129
|
-
border-bottom-color: $active-link-color
|
130
|
-
|
131
|
-
nav.breadcrumb
|
132
|
-
ul
|
133
|
-
margin: 0
|
134
|
-
li
|
135
|
-
display: inline
|
136
|
-
list-style: none
|
137
|
-
&::after
|
138
|
-
content: " > "
|
139
|
-
&:last-child::after
|
140
|
-
content: ""
|
141
136
|
|
142
137
|
nav.breadcrumb,
|
143
138
|
nav.categories,
|
@@ -150,51 +145,19 @@ article p.meta
|
|
150
145
|
a:hover
|
151
146
|
color: $hover-link-color
|
152
147
|
|
153
|
-
nav.categories,
|
154
|
-
div.feed,
|
155
|
-
article p.meta
|
156
|
-
a
|
157
|
-
border-bottom-color: $background-color
|
158
|
-
|
159
|
-
article p.meta
|
160
|
-
a
|
161
|
-
@include transition(border-bottom-color 0.5s 0 ease)
|
162
|
-
a:hover
|
163
|
-
border-bottom-color: $hover-link-color
|
164
|
-
|
165
|
-
article h1 a
|
166
|
-
border-bottom: none
|
167
|
-
|
168
|
-
body
|
169
|
-
background: $background-color
|
170
|
-
|
171
148
|
article
|
172
149
|
img
|
173
150
|
max-width: 100%
|
174
|
-
margin-bottom: $base-vertical-margin
|
175
|
-
|
176
|
-
code,
|
177
|
-
pre
|
178
|
-
background-color: $tint
|
179
|
-
code
|
180
|
-
padding: 1px 3px
|
181
|
-
pre
|
182
|
-
border-left: $border-style
|
183
|
-
background-color: $tint
|
184
|
-
code
|
185
|
-
padding: 0
|
186
151
|
|
187
152
|
footer
|
188
|
-
border-top: $border-style
|
189
153
|
p.meta
|
190
|
-
@include adjust-font-size(0.909, 0.1, 1.9)
|
191
154
|
font-style: italic
|
192
155
|
color: $meta-color
|
193
156
|
|
194
157
|
// Pages of content
|
195
158
|
article[role="main"]
|
196
|
-
h1
|
197
|
-
|
159
|
+
& > h1
|
160
|
+
font-weight: normal
|
198
161
|
|
199
162
|
div#disqus_thread
|
200
163
|
img
|
@@ -207,40 +170,87 @@ section.pages,
|
|
207
170
|
section.articles
|
208
171
|
& > ol
|
209
172
|
margin-left: 0
|
173
|
+
padding-left: 0
|
210
174
|
li
|
211
175
|
position: relative
|
212
176
|
list-style: none
|
177
|
+
|
213
178
|
article
|
179
|
+
h1
|
180
|
+
margin-bottom: 0.2em
|
181
|
+
|
182
|
+
font-size: $size3
|
183
|
+
font-weight: normal
|
214
184
|
ol li
|
215
185
|
list-style: decimal
|
216
186
|
ul li
|
217
187
|
list-style: disc
|
218
188
|
|
219
|
-
header[role=main] h1
|
220
|
-
@include adjust-font-size($h1-scale, 1.5, 0.5)
|
221
189
|
header h1
|
222
|
-
|
190
|
+
font-size: $size3
|
223
191
|
|
224
192
|
article
|
225
193
|
h1
|
226
|
-
|
194
|
+
a
|
195
|
+
text-decoration: none
|
227
196
|
p.read_more
|
228
|
-
|
229
|
-
margin
|
197
|
+
font-size: $size1
|
198
|
+
margin: -1em 0 0 0
|
230
199
|
footer
|
231
200
|
border-top: none
|
232
201
|
|
233
|
-
|
202
|
+
font-size: $size0
|
203
|
+
|
204
|
+
section.articles
|
205
|
+
border-top: 2px solid $tint
|
206
|
+
|
207
|
+
&:first-child
|
208
|
+
border-top: none
|
209
|
+
|
210
|
+
& > header h1
|
211
|
+
color: $meta-color
|
212
|
+
font-weight: normal
|
213
|
+
|
214
|
+
div#sidebar
|
215
|
+
border-top: 2px solid $tint
|
216
|
+
|
234
217
|
h1
|
235
|
-
|
218
|
+
font-size: $size3
|
236
219
|
|
237
|
-
ul
|
220
|
+
ol, ul
|
221
|
+
padding-left: 0
|
238
222
|
list-style: none
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
223
|
+
|
224
|
+
li
|
225
|
+
display: inline
|
226
|
+
|
227
|
+
&::after
|
228
|
+
content: ' / '
|
229
|
+
&:last-child
|
230
|
+
&::after
|
231
|
+
content: ''
|
232
|
+
|
233
|
+
+respond-to(medium-screens)
|
234
|
+
margin-top: 1.4em
|
235
|
+
|
236
|
+
p
|
237
|
+
font-size: $size0
|
238
|
+
|
239
|
+
+respond-to(wide-screens)
|
240
|
+
border-top: none
|
241
|
+
|
242
|
+
color: $meta-color
|
243
|
+
|
244
|
+
h1
|
245
|
+
font-size: $size2
|
246
|
+
font-weight: normal
|
247
|
+
|
248
|
+
ol, ul
|
249
|
+
li
|
250
|
+
display: block
|
251
|
+
|
252
|
+
&::after
|
253
|
+
content: ''
|
244
254
|
|
245
255
|
div.feed
|
246
|
-
margin: $
|
256
|
+
margin: $vertical-margin 0
|