bunto 3.0.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/
|