nesta 0.9.13 → 0.10.0
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.
- 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
|