bunto 3.0.0 → 3.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +124 -76
- data/README.markdown +49 -12
- data/{bin → exe}/bunto +18 -14
- data/lib/bunto.rb +83 -78
- data/lib/bunto/cleaner.rb +10 -8
- data/lib/bunto/collection.rb +33 -17
- data/lib/bunto/command.rb +19 -13
- data/lib/bunto/commands/build.rb +22 -14
- data/lib/bunto/commands/clean.rb +9 -8
- data/lib/bunto/commands/doctor.rb +10 -8
- data/lib/bunto/commands/help.rb +4 -3
- data/lib/bunto/commands/new.rb +30 -21
- data/lib/bunto/commands/new_theme.rb +36 -0
- data/lib/bunto/commands/serve.rb +26 -20
- data/lib/bunto/commands/serve/servlet.rb +4 -5
- data/lib/bunto/configuration.rb +187 -125
- data/lib/bunto/converters/markdown.rb +19 -9
- data/lib/bunto/converters/markdown/kramdown_parser.rb +12 -5
- data/lib/bunto/converters/markdown/rdiscount_parser.rb +4 -4
- data/lib/bunto/converters/markdown/redcarpet_parser.rb +90 -84
- data/lib/bunto/convertible.rb +38 -25
- data/lib/bunto/deprecator.rb +11 -6
- data/lib/bunto/desktop.ini +2 -0
- data/lib/bunto/document.rb +53 -51
- data/lib/bunto/drops/bunto_drop.rb +12 -0
- data/lib/bunto/drops/document_drop.rb +40 -5
- data/lib/bunto/drops/drop.rb +49 -10
- data/lib/bunto/drops/excerpt_drop.rb +15 -0
- data/lib/bunto/drops/site_drop.rb +4 -2
- data/lib/bunto/drops/url_drop.rb +4 -4
- data/lib/bunto/entry_filter.rb +64 -19
- data/lib/bunto/errors.rb +6 -3
- data/lib/bunto/excerpt.rb +4 -6
- data/lib/bunto/external.rb +4 -4
- data/lib/bunto/filters.rb +72 -39
- data/lib/bunto/frontmatter_defaults.rb +45 -38
- data/lib/bunto/hooks.rb +21 -21
- data/lib/bunto/layout.rb +4 -8
- data/lib/bunto/liquid_renderer.rb +14 -3
- data/lib/bunto/liquid_renderer/file.rb +5 -1
- data/lib/bunto/liquid_renderer/table.rb +11 -11
- data/lib/bunto/log_adapter.rb +2 -2
- data/lib/bunto/page.rb +10 -10
- data/lib/bunto/plugin.rb +5 -5
- data/lib/bunto/plugin_manager.rb +12 -8
- data/lib/bunto/publisher.rb +1 -1
- data/lib/bunto/reader.rb +11 -7
- data/lib/bunto/readers/data_reader.rb +9 -9
- data/lib/bunto/readers/layout_reader.rb +7 -7
- data/lib/bunto/readers/page_reader.rb +3 -1
- data/lib/bunto/readers/post_reader.rb +9 -10
- data/lib/bunto/readers/static_file_reader.rb +3 -1
- data/lib/bunto/regenerator.rb +50 -28
- data/lib/bunto/related_posts.rb +1 -1
- data/lib/bunto/renderer.rb +33 -23
- data/lib/bunto/site.rb +94 -51
- data/lib/bunto/static_file.rb +33 -26
- data/lib/bunto/stevenson.rb +6 -5
- data/lib/bunto/tags/highlight.rb +50 -35
- data/lib/bunto/tags/include.rb +42 -31
- data/lib/bunto/tags/link.rb +11 -4
- data/lib/bunto/tags/post_url.rb +8 -7
- data/lib/bunto/theme.rb +10 -8
- data/lib/bunto/theme_builder.rb +117 -0
- data/lib/bunto/url.rb +21 -14
- data/lib/bunto/utils.rb +57 -28
- data/lib/bunto/utils/ansi.rb +9 -9
- data/lib/bunto/utils/platforms.rb +2 -2
- data/lib/bunto/version.rb +1 -1
- data/lib/site_template/_config.yml +3 -1
- data/lib/site_template/_posts/0000-00-00-welcome-to-bunto.markdown.erb +3 -3
- data/lib/site_template/about.md +3 -3
- data/lib/site_template/css/main.scss +3 -17
- data/lib/theme_template/CODE_OF_CONDUCT.md.erb +74 -0
- data/lib/theme_template/Gemfile +2 -0
- data/lib/theme_template/LICENSE.txt.erb +21 -0
- data/lib/theme_template/README.md.erb +48 -0
- data/lib/theme_template/_layouts/default.html +1 -0
- data/lib/theme_template/_layouts/page.html +5 -0
- data/lib/theme_template/_layouts/post.html +5 -0
- data/lib/theme_template/example/_config.yml.erb +1 -0
- data/lib/theme_template/example/_post.md +12 -0
- data/lib/theme_template/example/index.html +14 -0
- data/lib/theme_template/example/style.scss +7 -0
- data/lib/theme_template/gitignore.erb +4 -0
- data/lib/theme_template/theme.gemspec.erb +18 -0
- metadata +40 -19
- data/lib/site_template/_includes/footer.html +0 -38
- data/lib/site_template/_includes/head.html +0 -12
- data/lib/site_template/_includes/header.html +0 -27
- data/lib/site_template/_includes/icon-github.html +0 -1
- data/lib/site_template/_includes/icon-github.svg +0 -1
- data/lib/site_template/_includes/icon-twitter.html +0 -1
- data/lib/site_template/_includes/icon-twitter.svg +0 -1
- data/lib/site_template/_layouts/default.html +0 -20
- data/lib/site_template/_layouts/page.html +0 -14
- data/lib/site_template/_layouts/post.html +0 -15
- data/lib/site_template/_sass/_base.scss +0 -200
- data/lib/site_template/_sass/_layout.scss +0 -242
- data/lib/site_template/_sass/_syntax-highlighting.scss +0 -71
data/lib/bunto/url.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "uri"
|
2
2
|
|
3
3
|
# Public: Methods that generate a URL for a resource such as a Post or a Page.
|
4
4
|
#
|
@@ -35,8 +35,15 @@ module Bunto
|
|
35
35
|
# The generated relative URL of the resource
|
36
36
|
#
|
37
37
|
# Returns the String URL
|
38
|
+
# Raises a Bunto::Errors::InvalidURLError if the relative URL contains a colon
|
38
39
|
def to_s
|
39
|
-
sanitize_url(generated_permalink || generated_url)
|
40
|
+
sanitized_url = sanitize_url(generated_permalink || generated_url)
|
41
|
+
if sanitized_url.include?(":")
|
42
|
+
raise Bunto::Errors::InvalidURLError,
|
43
|
+
"The URL #{sanitized_url} is invalid because it contains a colon."
|
44
|
+
else
|
45
|
+
sanitized_url
|
46
|
+
end
|
40
47
|
end
|
41
48
|
|
42
49
|
# Generates a URL from the permalink
|
@@ -67,32 +74,32 @@ module Bunto
|
|
67
74
|
|
68
75
|
def generate_url_from_hash(template)
|
69
76
|
@placeholders.inject(template) do |result, token|
|
70
|
-
break result if result.index(
|
77
|
+
break result if result.index(":").nil?
|
71
78
|
if token.last.nil?
|
72
|
-
# Remove leading
|
73
|
-
result.gsub(
|
79
|
+
# Remove leading "/" to avoid generating urls with `//`
|
80
|
+
result.gsub(%r!/:#{token.first}!, "")
|
74
81
|
else
|
75
|
-
result.gsub(
|
82
|
+
result.gsub(%r!:#{token.first}!, self.class.escape_path(token.last))
|
76
83
|
end
|
77
84
|
end
|
78
85
|
end
|
79
86
|
|
80
87
|
def generate_url_from_drop(template)
|
81
|
-
template.gsub(
|
82
|
-
replacement = @placeholders.public_send(match.sub(
|
88
|
+
template.gsub(%r!:([a-z_]+)!) do |match|
|
89
|
+
replacement = @placeholders.public_send(match.sub(":".freeze, "".freeze))
|
83
90
|
if replacement.nil?
|
84
|
-
|
91
|
+
"".freeze
|
85
92
|
else
|
86
93
|
self.class.escape_path(replacement)
|
87
94
|
end
|
88
|
-
end.gsub(
|
95
|
+
end.gsub(%r!//!, "/".freeze)
|
89
96
|
end
|
90
97
|
|
91
98
|
# Returns a sanitized String URL, stripping "../../" and multiples of "/",
|
92
99
|
# as well as the beginning "/" so we can enforce and ensure it.
|
93
100
|
|
94
101
|
def sanitize_url(str)
|
95
|
-
"/" + str.gsub(
|
102
|
+
"/" + str.gsub(%r!/{2,}!, "/").gsub(%r!\.+/|\A/+!, "")
|
96
103
|
end
|
97
104
|
|
98
105
|
# Escapes a path to be a valid URL path segment
|
@@ -106,7 +113,7 @@ module Bunto
|
|
106
113
|
#
|
107
114
|
# Returns the escaped path.
|
108
115
|
def self.escape_path(path)
|
109
|
-
# Because URI.escape doesn't escape
|
116
|
+
# Because URI.escape doesn't escape "?", "[" and "]" by default,
|
110
117
|
# specify unsafe string (except unreserved, sub-delims, ":", "@" and "/").
|
111
118
|
#
|
112
119
|
# URI path segment is defined in RFC 3986 as follows:
|
@@ -116,7 +123,7 @@ module Bunto
|
|
116
123
|
# pct-encoded = "%" HEXDIG HEXDIG
|
117
124
|
# sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
|
118
125
|
# / "*" / "+" / "," / ";" / "="
|
119
|
-
URI.escape(path,
|
126
|
+
URI.escape(path, %r{[^a-zA-Z\d\-._~!$&'()*+,;=:@\/]}).encode("utf-8")
|
120
127
|
end
|
121
128
|
|
122
129
|
# Unescapes a URL path segment
|
@@ -130,7 +137,7 @@ module Bunto
|
|
130
137
|
#
|
131
138
|
# Returns the unescaped path.
|
132
139
|
def self.unescape_path(path)
|
133
|
-
URI.unescape(path.encode(
|
140
|
+
URI.unescape(path.encode("utf-8"))
|
134
141
|
end
|
135
142
|
end
|
136
143
|
end
|
data/lib/bunto/utils.rb
CHANGED
@@ -2,27 +2,25 @@
|
|
2
2
|
module Bunto
|
3
3
|
module Utils
|
4
4
|
extend self
|
5
|
-
autoload :Platforms,
|
5
|
+
autoload :Platforms, "bunto/utils/platforms"
|
6
6
|
autoload :Ansi, "bunto/utils/ansi"
|
7
7
|
|
8
8
|
# Constants for use in #slugify
|
9
|
-
SLUGIFY_MODES = %w(raw default pretty)
|
9
|
+
SLUGIFY_MODES = %w(raw default pretty).freeze
|
10
10
|
SLUGIFY_RAW_REGEXP = Regexp.new('\\s+').freeze
|
11
|
-
SLUGIFY_DEFAULT_REGEXP = Regexp.new(
|
11
|
+
SLUGIFY_DEFAULT_REGEXP = Regexp.new("[^[:alnum:]]+").freeze
|
12
12
|
SLUGIFY_PRETTY_REGEXP = Regexp.new("[^[:alnum:]._~!$&'()+,;=@]+").freeze
|
13
13
|
|
14
14
|
# Takes an indented string and removes the preceding spaces on each line
|
15
15
|
|
16
16
|
def strip_heredoc(str)
|
17
|
-
str.gsub(
|
17
|
+
str.gsub(%r!^[ \t]{#{(str.scan(%r!^[ \t]*(?=\S)!).min || "").size}}!, "")
|
18
18
|
end
|
19
19
|
|
20
20
|
# Takes a slug and turns it into a simple title.
|
21
21
|
|
22
22
|
def titleize_slug(slug)
|
23
|
-
slug.split("-").map!
|
24
|
-
val.capitalize
|
25
|
-
end.join(" ")
|
23
|
+
slug.split("-").map!(&:capitalize).join(" ")
|
26
24
|
end
|
27
25
|
|
28
26
|
# Non-destructive version of deep_merge_hashes! See that method.
|
@@ -42,17 +40,9 @@ module Bunto
|
|
42
40
|
#
|
43
41
|
# Thanks to whoever made it.
|
44
42
|
def deep_merge_hashes!(target, overwrite)
|
45
|
-
target
|
46
|
-
|
47
|
-
|
48
|
-
else
|
49
|
-
mergable?(old_val) && mergable?(new_val) ? deep_merge_hashes(old_val, new_val) : new_val
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
if target.respond_to?(:default_proc) && overwrite.respond_to?(:default_proc) && target.default_proc.nil?
|
54
|
-
target.default_proc = overwrite.default_proc
|
55
|
-
end
|
43
|
+
merge_values(target, overwrite)
|
44
|
+
merge_default_proc(target, overwrite)
|
45
|
+
duplicate_frozen_values(target)
|
56
46
|
|
57
47
|
target
|
58
48
|
end
|
@@ -61,6 +51,15 @@ module Bunto
|
|
61
51
|
value.is_a?(Hash) || value.is_a?(Drops::Drop)
|
62
52
|
end
|
63
53
|
|
54
|
+
def duplicable?(obj)
|
55
|
+
case obj
|
56
|
+
when nil, false, true, Symbol, Numeric
|
57
|
+
false
|
58
|
+
else
|
59
|
+
true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
64
63
|
# Read array from the supplied hash favouring the singular key
|
65
64
|
# and then the plural key, and handling any nil entries.
|
66
65
|
#
|
@@ -71,7 +70,9 @@ module Bunto
|
|
71
70
|
# Returns an array
|
72
71
|
def pluralized_array_from_hash(hash, singular_key, plural_key)
|
73
72
|
[].tap do |array|
|
74
|
-
|
73
|
+
value = value_from_singular_key(hash, singular_key)
|
74
|
+
value ||= value_from_plural_key(hash, plural_key)
|
75
|
+
array << value
|
75
76
|
end.flatten.compact
|
76
77
|
end
|
77
78
|
|
@@ -133,17 +134,19 @@ module Bunto
|
|
133
134
|
# Determines whether a given file has
|
134
135
|
#
|
135
136
|
# Returns true if the YAML front matter is present.
|
137
|
+
# rubocop: disable PredicateName
|
136
138
|
def has_yaml_header?(file)
|
137
|
-
!!(File.open(file,
|
139
|
+
!!(File.open(file, "rb", &:readline) =~ %r!\A---\s*\r?\n!)
|
138
140
|
rescue EOFError
|
139
141
|
false
|
140
142
|
end
|
143
|
+
# rubocop: enable PredicateName
|
141
144
|
|
142
145
|
# Slugify a filename or title.
|
143
146
|
#
|
144
147
|
# string - the filename or title to slugify
|
145
148
|
# mode - how string is slugified
|
146
|
-
# cased - whether to replace all
|
149
|
+
# cased - whether to replace all uppercase letters with their
|
147
150
|
# lowercase counterparts
|
148
151
|
#
|
149
152
|
# When mode is "none", return the given string.
|
@@ -172,7 +175,7 @@ module Bunto
|
|
172
175
|
#
|
173
176
|
# Returns the slugified string.
|
174
177
|
def slugify(string, mode: nil, cased: false)
|
175
|
-
mode ||=
|
178
|
+
mode ||= "default"
|
176
179
|
return nil if string.nil?
|
177
180
|
|
178
181
|
unless SLUGIFY_MODES.include?(mode)
|
@@ -182,21 +185,21 @@ module Bunto
|
|
182
185
|
# Replace each character sequence with a hyphen
|
183
186
|
re =
|
184
187
|
case mode
|
185
|
-
when
|
188
|
+
when "raw"
|
186
189
|
SLUGIFY_RAW_REGEXP
|
187
|
-
when
|
190
|
+
when "default"
|
188
191
|
SLUGIFY_DEFAULT_REGEXP
|
189
|
-
when
|
192
|
+
when "pretty"
|
190
193
|
# "._~!$&'()+,;=@" is human readable (not URI-escaped) in URL
|
191
194
|
# and is allowed in both extN and NTFS.
|
192
195
|
SLUGIFY_PRETTY_REGEXP
|
193
196
|
end
|
194
197
|
|
195
198
|
# Strip according to the mode
|
196
|
-
slug = string.gsub(re,
|
199
|
+
slug = string.gsub(re, "-")
|
197
200
|
|
198
201
|
# Remove leading/trailing hyphen
|
199
|
-
slug.gsub!(
|
202
|
+
slug.gsub!(%r!^\-|\-$!i, "")
|
200
203
|
|
201
204
|
slug.downcase! unless cased
|
202
205
|
slug
|
@@ -267,7 +270,7 @@ module Bunto
|
|
267
270
|
# Returns matched pathes
|
268
271
|
def safe_glob(dir, patterns, flags = 0)
|
269
272
|
return [] unless Dir.exist?(dir)
|
270
|
-
pattern = File.join(Array
|
273
|
+
pattern = File.join(Array(patterns))
|
271
274
|
return [dir] if pattern.empty?
|
272
275
|
Dir.chdir(dir) do
|
273
276
|
Dir.glob(pattern, flags).map { |f| File.join(dir, f) }
|
@@ -284,5 +287,31 @@ module Bunto
|
|
284
287
|
merged
|
285
288
|
end
|
286
289
|
|
290
|
+
private
|
291
|
+
def merge_values(target, overwrite)
|
292
|
+
target.merge!(overwrite) do |_key, old_val, new_val|
|
293
|
+
if new_val.nil?
|
294
|
+
old_val
|
295
|
+
elsif mergable?(old_val) && mergable?(new_val)
|
296
|
+
deep_merge_hashes(old_val, new_val)
|
297
|
+
else
|
298
|
+
new_val
|
299
|
+
end
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
private
|
304
|
+
def merge_default_proc(target, overwrite)
|
305
|
+
if target.is_a?(Hash) && overwrite.is_a?(Hash) && target.default_proc.nil?
|
306
|
+
target.default_proc = overwrite.default_proc
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
private
|
311
|
+
def duplicate_frozen_values(target)
|
312
|
+
target.each do |key, val|
|
313
|
+
target[key] = val.dup if val.frozen? && duplicable?(val)
|
314
|
+
end
|
315
|
+
end
|
287
316
|
end
|
288
317
|
end
|
data/lib/bunto/utils/ansi.rb
CHANGED
@@ -8,17 +8,17 @@ module Bunto
|
|
8
8
|
extend self
|
9
9
|
|
10
10
|
ESCAPE = format("%c", 27)
|
11
|
-
MATCH =
|
11
|
+
MATCH = %r!#{ESCAPE}\[(?:\d+)(?:;\d+)*(j|k|m|s|u|A|B|G)|\e\(B\e\[m!ix
|
12
12
|
COLORS = {
|
13
|
-
:red
|
14
|
-
:green
|
15
|
-
:black
|
13
|
+
:red => 31,
|
14
|
+
:green => 32,
|
15
|
+
:black => 30,
|
16
16
|
:magenta => 35,
|
17
|
-
:yellow
|
18
|
-
:white
|
19
|
-
:blue
|
20
|
-
:cyan
|
21
|
-
}
|
17
|
+
:yellow => 33,
|
18
|
+
:white => 37,
|
19
|
+
:blue => 34,
|
20
|
+
:cyan => 36
|
21
|
+
}.freeze
|
22
22
|
|
23
23
|
# Strip ANSI from the current string. It also strips cursor stuff,
|
24
24
|
# well some of it, and it also strips some other stuff that a lot of
|
@@ -17,8 +17,8 @@ module Bunto
|
|
17
17
|
# platforms. This is mostly useful for `bunto doctor` and for testing
|
18
18
|
# where we kick off certain tests based on the platform.
|
19
19
|
|
20
|
-
{ :windows? =>
|
21
|
-
:osx? =>
|
20
|
+
{ :windows? => %r!mswin|mingw|cygwin!, :linux? => %r!linux!, \
|
21
|
+
:osx? => %r!darwin|mac os!, :unix? => %r!solaris|bsd! }.each do |k, v|
|
22
22
|
define_method k do
|
23
23
|
!!(
|
24
24
|
RbConfig::CONFIG["host_os"] =~ v
|
data/lib/bunto/version.rb
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
# which you are expected to set up once and rarely edit after that. If you find
|
5
5
|
# yourself editing these this file very often, consider using Bunto's data files
|
6
6
|
# feature for the data you need to update frequently.
|
7
|
+
#
|
7
8
|
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
8
9
|
# 'bunto serve'. If you change this file, please restart the server process.
|
9
10
|
|
@@ -20,8 +21,9 @@ description: > # this means to ignore newlines until "baseurl:"
|
|
20
21
|
Google search results) and in your feed.xml site description.
|
21
22
|
baseurl: "" # the subpath of your site, e.g. /blog
|
22
23
|
url: "http://example.com" # the base hostname & protocol for your site
|
23
|
-
twitter_username:
|
24
|
+
twitter_username: buntowaf
|
24
25
|
github_username: bunto
|
25
26
|
|
26
27
|
# Build settings
|
27
28
|
markdown: kramdown
|
29
|
+
theme: minima
|
@@ -14,12 +14,12 @@ Bunto also offers powerful support for code snippets:
|
|
14
14
|
def print_hi(name)
|
15
15
|
puts "Hi, #{name}"
|
16
16
|
end
|
17
|
-
print_hi('
|
18
|
-
#=> prints 'Hi,
|
17
|
+
print_hi('Tom')
|
18
|
+
#=> prints 'Hi, Tom' to STDOUT.
|
19
19
|
{% endhighlight %}
|
20
20
|
|
21
21
|
Check out the [Bunto docs][bunto-docs] for more info on how to get the most out of Bunto. File all bugs/feature requests at [Bunto’s GitHub repo][bunto-gh]. If you have questions, you can ask them on [Bunto Talk][bunto-talk].
|
22
22
|
|
23
23
|
[bunto-docs]: http://bunto.github.io/docs/home
|
24
24
|
[bunto-gh]: https://github.com/bunto/bunto
|
25
|
-
[bunto-talk]: https://bunto.github.io/
|
25
|
+
[bunto-talk]: https://talk.bunto.github.io/
|
data/lib/site_template/about.md
CHANGED
@@ -4,11 +4,11 @@ title: About
|
|
4
4
|
permalink: /about/
|
5
5
|
---
|
6
6
|
|
7
|
-
This is the base Bunto theme. You can find out more info about customizing your Bunto theme, as well as basic Bunto usage documentation at [
|
7
|
+
This is the base Bunto theme. You can find out more info about customizing your Bunto theme, as well as basic Bunto usage documentation at [bunto.github.io](http://bunto.github.io/)
|
8
8
|
|
9
9
|
You can find the source code for the Bunto new theme at:
|
10
|
-
{% include icon-github.html username="
|
11
|
-
[
|
10
|
+
{% include icon-github.html username="bunto" %} /
|
11
|
+
[minima](https://github.com/bunto/minima)
|
12
12
|
|
13
13
|
You can find the source code for Bunto at
|
14
14
|
{% include icon-github.html username="bunto" %} /
|
@@ -3,8 +3,6 @@
|
|
3
3
|
---
|
4
4
|
@charset "utf-8";
|
5
5
|
|
6
|
-
|
7
|
-
|
8
6
|
// Our variables
|
9
7
|
$base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
10
8
|
$base-font-size: 16px;
|
@@ -28,8 +26,7 @@ $content-width: 800px;
|
|
28
26
|
$on-palm: 600px;
|
29
27
|
$on-laptop: 800px;
|
30
28
|
|
31
|
-
|
32
|
-
|
29
|
+
// Minima also includes a mixin for defining media queries.
|
33
30
|
// Use media queries like this:
|
34
31
|
// @include media-query($on-palm) {
|
35
32
|
// .wrapper {
|
@@ -37,17 +34,6 @@ $on-laptop: 800px;
|
|
37
34
|
// padding-left: $spacing-unit / 2;
|
38
35
|
// }
|
39
36
|
// }
|
40
|
-
@mixin media-query($device) {
|
41
|
-
@media screen and (max-width: $device) {
|
42
|
-
@content;
|
43
|
-
}
|
44
|
-
}
|
45
|
-
|
46
|
-
|
47
37
|
|
48
|
-
// Import partials from `
|
49
|
-
@import
|
50
|
-
"base",
|
51
|
-
"layout",
|
52
|
-
"syntax-highlighting"
|
53
|
-
;
|
38
|
+
// Import partials from the `minima` theme.
|
39
|
+
@import "minima";
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
2
|
+
|
3
|
+
## Our Pledge
|
4
|
+
|
5
|
+
In the interest of fostering an open and welcoming environment, we as
|
6
|
+
contributors and maintainers pledge to making participation in our project and
|
7
|
+
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
+
size, disability, ethnicity, gender identity and expression, level of experience,
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity and
|
10
|
+
orientation.
|
11
|
+
|
12
|
+
## Our Standards
|
13
|
+
|
14
|
+
Examples of behavior that contributes to creating a positive environment
|
15
|
+
include:
|
16
|
+
|
17
|
+
* Using welcoming and inclusive language
|
18
|
+
* Being respectful of differing viewpoints and experiences
|
19
|
+
* Gracefully accepting constructive criticism
|
20
|
+
* Focusing on what is best for the community
|
21
|
+
* Showing empathy towards other community members
|
22
|
+
|
23
|
+
Examples of unacceptable behavior by participants include:
|
24
|
+
|
25
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
+
advances
|
27
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
+
* Public or private harassment
|
29
|
+
* Publishing others' private information, such as a physical or electronic
|
30
|
+
address, without explicit permission
|
31
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
+
professional setting
|
33
|
+
|
34
|
+
## Our Responsibilities
|
35
|
+
|
36
|
+
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
+
behavior and are expected to take appropriate and fair corrective action in
|
38
|
+
response to any instances of unacceptable behavior.
|
39
|
+
|
40
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
+
threatening, offensive, or harmful.
|
45
|
+
|
46
|
+
## Scope
|
47
|
+
|
48
|
+
This Code of Conduct applies both within project spaces and in public spaces
|
49
|
+
when an individual is representing the project or its community. Examples of
|
50
|
+
representing a project or community include using an official project e-mail
|
51
|
+
address, posting via an official social media account, or acting as an appointed
|
52
|
+
representative at an online or offline event. Representation of a project may be
|
53
|
+
further defined and clarified by project maintainers.
|
54
|
+
|
55
|
+
## Enforcement
|
56
|
+
|
57
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
+
reported by contacting the project team at <%= user_email %>. All
|
59
|
+
complaints will be reviewed and investigated and will result in a response that
|
60
|
+
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
+
Further details of specific enforcement policies may be posted separately.
|
63
|
+
|
64
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
+
faith may face temporary or permanent repercussions as determined by other
|
66
|
+
members of the project's leadership.
|
67
|
+
|
68
|
+
## Attribution
|
69
|
+
|
70
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
+
available at [http://contributor-covenant.org/version/1/4][version]
|
72
|
+
|
73
|
+
[homepage]: http://contributor-covenant.org
|
74
|
+
[version]: http://contributor-covenant.org/version/1/4/
|