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/site.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: UTF-8
|
2
|
-
require
|
2
|
+
require "csv"
|
3
3
|
|
4
4
|
module Bunto
|
5
5
|
class Site
|
@@ -18,8 +18,8 @@ module Bunto
|
|
18
18
|
# config - A Hash containing site configuration details.
|
19
19
|
def initialize(config)
|
20
20
|
# Source and destination may not be changed after the site has been created.
|
21
|
-
@source = File.expand_path(config[
|
22
|
-
@dest = File.expand_path(config[
|
21
|
+
@source = File.expand_path(config["source"]).freeze
|
22
|
+
@dest = File.expand_path(config["destination"]).freeze
|
23
23
|
|
24
24
|
self.config = config
|
25
25
|
|
@@ -29,10 +29,10 @@ module Bunto
|
|
29
29
|
|
30
30
|
Bunto.sites << self
|
31
31
|
|
32
|
-
Bunto::Hooks.trigger :site, :after_init, self
|
33
|
-
|
34
32
|
reset
|
35
33
|
setup
|
34
|
+
|
35
|
+
Bunto::Hooks.trigger :site, :after_init, self
|
36
36
|
end
|
37
37
|
|
38
38
|
# Public: Set the site's configuration. This handles side-effects caused by
|
@@ -49,19 +49,12 @@ module Bunto
|
|
49
49
|
self.send("#{opt}=", config[opt])
|
50
50
|
end
|
51
51
|
|
52
|
-
|
53
|
-
|
52
|
+
configure_plugins
|
53
|
+
configure_theme
|
54
|
+
configure_include_paths
|
55
|
+
configure_file_read_opts
|
54
56
|
|
55
|
-
self.
|
56
|
-
self.theme = Bunto::Theme.new(config["theme"]) if config["theme"]
|
57
|
-
|
58
|
-
@includes_load_paths = Array(in_source_dir(config["includes_dir"].to_s))
|
59
|
-
@includes_load_paths << theme.includes_path if self.theme
|
60
|
-
|
61
|
-
self.file_read_opts = {}
|
62
|
-
self.file_read_opts[:encoding] = config['encoding'] if config['encoding']
|
63
|
-
|
64
|
-
self.permalink_style = config['permalink'].to_sym
|
57
|
+
self.permalink_style = config["permalink"].to_sym
|
65
58
|
|
66
59
|
@config
|
67
60
|
end
|
@@ -80,7 +73,7 @@ module Bunto
|
|
80
73
|
end
|
81
74
|
|
82
75
|
def print_stats
|
83
|
-
if @config[
|
76
|
+
if @config["profile"]
|
84
77
|
puts @liquid_renderer.stats_table
|
85
78
|
end
|
86
79
|
end
|
@@ -89,7 +82,11 @@ module Bunto
|
|
89
82
|
#
|
90
83
|
# Returns nothing
|
91
84
|
def reset
|
92
|
-
|
85
|
+
if config["time"]
|
86
|
+
self.time = Utils.parse_date(config["time"].to_s, "Invalid time in _config.yml.")
|
87
|
+
else
|
88
|
+
self.time = Time.now
|
89
|
+
end
|
93
90
|
self.layouts = {}
|
94
91
|
self.pages = []
|
95
92
|
self.static_files = []
|
@@ -123,18 +120,23 @@ module Bunto
|
|
123
120
|
dest_pathname = Pathname.new(dest)
|
124
121
|
Pathname.new(source).ascend do |path|
|
125
122
|
if path == dest_pathname
|
126
|
-
raise
|
123
|
+
raise(
|
124
|
+
Errors::FatalException,
|
125
|
+
"Destination directory cannot be or contain the Source directory."
|
126
|
+
)
|
127
127
|
end
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
131
131
|
# The list of collections and their corresponding Bunto::Collection instances.
|
132
|
-
# If config['collections'] is set, a new instance is created
|
133
|
-
#
|
132
|
+
# If config['collections'] is set, a new instance is created
|
133
|
+
# for each item in the collection, a new hash is returned otherwise.
|
134
134
|
#
|
135
135
|
# Returns a Hash containing collection name-to-instance pairs.
|
136
136
|
def collections
|
137
|
-
@collections ||= Hash[collection_names.map
|
137
|
+
@collections ||= Hash[collection_names.map do |coll|
|
138
|
+
[coll, Bunto::Collection.new(self, coll)]
|
139
|
+
end]
|
138
140
|
end
|
139
141
|
|
140
142
|
# The list of collection names.
|
@@ -142,11 +144,11 @@ module Bunto
|
|
142
144
|
# Returns an array of collection names from the configuration,
|
143
145
|
# or an empty array if the `collections` key is not set.
|
144
146
|
def collection_names
|
145
|
-
case config[
|
147
|
+
case config["collections"]
|
146
148
|
when Hash
|
147
|
-
config[
|
149
|
+
config["collections"].keys
|
148
150
|
when Array
|
149
|
-
config[
|
151
|
+
config["collections"]
|
150
152
|
when nil
|
151
153
|
[]
|
152
154
|
else
|
@@ -168,7 +170,10 @@ module Bunto
|
|
168
170
|
# Returns nothing.
|
169
171
|
def generate
|
170
172
|
generators.each do |generator|
|
173
|
+
start = Time.now
|
171
174
|
generator.generate(self)
|
175
|
+
Bunto.logger.debug "Generating:",
|
176
|
+
"#{generator.class} finished in #{Time.now - start} seconds."
|
172
177
|
end
|
173
178
|
end
|
174
179
|
|
@@ -182,26 +187,15 @@ module Bunto
|
|
182
187
|
|
183
188
|
Bunto::Hooks.trigger :site, :pre_render, self, payload
|
184
189
|
|
185
|
-
|
186
|
-
|
187
|
-
if regenerator.regenerate?(document)
|
188
|
-
document.output = Bunto::Renderer.new(self, document, payload).run
|
189
|
-
document.trigger_hooks(:post_render)
|
190
|
-
end
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
pages.flatten.each do |page|
|
195
|
-
if regenerator.regenerate?(page)
|
196
|
-
page.output = Bunto::Renderer.new(self, page, payload).run
|
197
|
-
page.trigger_hooks(:post_render)
|
198
|
-
end
|
199
|
-
end
|
190
|
+
render_docs(payload)
|
191
|
+
render_pages(payload)
|
200
192
|
|
201
193
|
Bunto::Hooks.trigger :site, :post_render, self, payload
|
194
|
+
# rubocop: disable HandleExceptions
|
202
195
|
rescue Errno::ENOENT
|
203
196
|
# ignore missing layout dir
|
204
197
|
end
|
198
|
+
# rubocop: enable HandleExceptions
|
205
199
|
|
206
200
|
# Remove orphaned files and empty directories in destination.
|
207
201
|
#
|
@@ -222,7 +216,7 @@ module Bunto
|
|
222
216
|
end
|
223
217
|
|
224
218
|
def posts
|
225
|
-
collections[
|
219
|
+
collections["posts"] ||= Collection.new(self, "posts")
|
226
220
|
end
|
227
221
|
|
228
222
|
# Construct a Hash of Posts indexed by the specified Post attribute.
|
@@ -242,17 +236,19 @@ module Bunto
|
|
242
236
|
# Build a hash map based on the specified post attribute ( post attr =>
|
243
237
|
# array of posts ) then sort each array in reverse order.
|
244
238
|
hash = Hash.new { |h, key| h[key] = [] }
|
245
|
-
posts.docs.each
|
239
|
+
posts.docs.each do |p|
|
240
|
+
p.data[post_attr].each { |t| hash[t] << p } if p.data[post_attr]
|
241
|
+
end
|
246
242
|
hash.values.each { |posts| posts.sort!.reverse! }
|
247
243
|
hash
|
248
244
|
end
|
249
245
|
|
250
246
|
def tags
|
251
|
-
post_attr_hash(
|
247
|
+
post_attr_hash("tags")
|
252
248
|
end
|
253
249
|
|
254
250
|
def categories
|
255
|
-
post_attr_hash(
|
251
|
+
post_attr_hash("categories")
|
256
252
|
end
|
257
253
|
|
258
254
|
# Prepare site data for site payload. The method maintains backward compatibility
|
@@ -260,7 +256,7 @@ module Bunto
|
|
260
256
|
#
|
261
257
|
# Returns the Hash to be hooked to site.data.
|
262
258
|
def site_data
|
263
|
-
config[
|
259
|
+
config["data"] || data
|
264
260
|
end
|
265
261
|
|
266
262
|
# The Hash payload containing site-wide data.
|
@@ -279,6 +275,7 @@ module Bunto
|
|
279
275
|
def site_payload
|
280
276
|
Drops::UnifiedPayloadDrop.new self
|
281
277
|
end
|
278
|
+
alias_method :to_liquid, :site_payload
|
282
279
|
|
283
280
|
# Get the implementation class for the given Converter.
|
284
281
|
# Returns the Converter instance implementing the given Converter.
|
@@ -305,11 +302,11 @@ module Bunto
|
|
305
302
|
#
|
306
303
|
# Returns
|
307
304
|
def relative_permalinks_are_deprecated
|
308
|
-
if config[
|
305
|
+
if config["relative_permalinks"]
|
309
306
|
Bunto.logger.abort_with "Since v3.0, permalinks for pages" \
|
310
307
|
" in subfolders must be relative to the" \
|
311
308
|
" site source directory, not the parent" \
|
312
|
-
" directory. Check http://bunto.github.io/docs/upgrading
|
309
|
+
" directory. Check http://bunto.github.io/docs/upgrading"\
|
313
310
|
" for more info."
|
314
311
|
end
|
315
312
|
end
|
@@ -350,7 +347,7 @@ module Bunto
|
|
350
347
|
#
|
351
348
|
# Returns a Boolean: true for a full rebuild, false for normal build
|
352
349
|
def incremental?(override = {})
|
353
|
-
override[
|
350
|
+
override["incremental"] || config["incremental"]
|
354
351
|
end
|
355
352
|
|
356
353
|
# Returns the publisher or creates a new publisher if it doesn't
|
@@ -398,11 +395,10 @@ module Bunto
|
|
398
395
|
end
|
399
396
|
end
|
400
397
|
|
401
|
-
private
|
402
|
-
|
403
398
|
# Limits the current posts; removes the posts which exceed the limit_posts
|
404
399
|
#
|
405
400
|
# Returns nothing
|
401
|
+
private
|
406
402
|
def limit_posts!
|
407
403
|
if limit_posts > 0
|
408
404
|
limit = posts.docs.length < limit_posts ? posts.docs.length : limit_posts
|
@@ -414,8 +410,55 @@ module Bunto
|
|
414
410
|
# already exist.
|
415
411
|
#
|
416
412
|
# Returns The Cleaner
|
413
|
+
private
|
417
414
|
def site_cleaner
|
418
415
|
@site_cleaner ||= Cleaner.new(self)
|
419
416
|
end
|
417
|
+
|
418
|
+
private
|
419
|
+
def configure_plugins
|
420
|
+
self.plugin_manager = Bunto::PluginManager.new(self)
|
421
|
+
self.plugins = plugin_manager.plugins_path
|
422
|
+
end
|
423
|
+
|
424
|
+
private
|
425
|
+
def configure_theme
|
426
|
+
self.theme = nil
|
427
|
+
self.theme = Bunto::Theme.new(config["theme"]) if config["theme"]
|
428
|
+
end
|
429
|
+
|
430
|
+
private
|
431
|
+
def configure_include_paths
|
432
|
+
@includes_load_paths = Array(in_source_dir(config["includes_dir"].to_s))
|
433
|
+
@includes_load_paths << theme.includes_path if self.theme
|
434
|
+
end
|
435
|
+
|
436
|
+
private
|
437
|
+
def configure_file_read_opts
|
438
|
+
self.file_read_opts = {}
|
439
|
+
self.file_read_opts[:encoding] = config["encoding"] if config["encoding"]
|
440
|
+
end
|
441
|
+
|
442
|
+
private
|
443
|
+
def render_docs(payload)
|
444
|
+
collections.each do |_, collection|
|
445
|
+
collection.docs.each do |document|
|
446
|
+
if regenerator.regenerate?(document)
|
447
|
+
document.output = Bunto::Renderer.new(self, document, payload).run
|
448
|
+
document.trigger_hooks(:post_render)
|
449
|
+
end
|
450
|
+
end
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
private
|
455
|
+
def render_pages(payload)
|
456
|
+
pages.flatten.each do |page|
|
457
|
+
if regenerator.regenerate?(page)
|
458
|
+
page.output = Bunto::Renderer.new(self, page, payload).run
|
459
|
+
page.trigger_hooks(:post_render)
|
460
|
+
end
|
461
|
+
end
|
462
|
+
end
|
420
463
|
end
|
421
464
|
end
|
data/lib/bunto/static_file.rb
CHANGED
@@ -1,16 +1,25 @@
|
|
1
1
|
module Bunto
|
2
2
|
class StaticFile
|
3
|
-
# The cache of last modification times [path] -> mtime.
|
4
|
-
@@mtimes = {}
|
5
|
-
|
6
3
|
attr_reader :relative_path, :extname
|
7
4
|
|
5
|
+
class << self
|
6
|
+
# The cache of last modification times [path] -> mtime.
|
7
|
+
def mtimes
|
8
|
+
@mtimes ||= {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def reset_cache
|
12
|
+
@mtimes = nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
8
16
|
# Initialize a new StaticFile.
|
9
17
|
#
|
10
18
|
# site - The Site.
|
11
19
|
# base - The String path to the <source>.
|
12
20
|
# dir - The String path between <source> and the file.
|
13
21
|
# name - The String filename of the file.
|
22
|
+
# rubocop: disable ParameterLists
|
14
23
|
def initialize(site, base, dir, name, collection = nil)
|
15
24
|
@site = site
|
16
25
|
@base = base
|
@@ -20,6 +29,7 @@ module Bunto
|
|
20
29
|
@relative_path = File.join(*[@dir, @name].compact)
|
21
30
|
@extname = File.extname(@name)
|
22
31
|
end
|
32
|
+
# rubocop: enable ParameterLists
|
23
33
|
|
24
34
|
# Returns source file path.
|
25
35
|
def path
|
@@ -56,7 +66,7 @@ module Bunto
|
|
56
66
|
#
|
57
67
|
# Returns true if modified since last write.
|
58
68
|
def modified?
|
59
|
-
|
69
|
+
self.class.mtimes[path] != mtime
|
60
70
|
end
|
61
71
|
|
62
72
|
# Whether to write the file to the filesystem
|
@@ -64,7 +74,7 @@ module Bunto
|
|
64
74
|
# Returns true unless the defaults for the destination path from
|
65
75
|
# _config.yml contain `published: false`.
|
66
76
|
def write?
|
67
|
-
defaults.fetch(
|
77
|
+
defaults.fetch("published", true)
|
68
78
|
end
|
69
79
|
|
70
80
|
# Write the static file to the destination directory (if modified).
|
@@ -76,28 +86,15 @@ module Bunto
|
|
76
86
|
dest_path = destination(dest)
|
77
87
|
|
78
88
|
return false if File.exist?(dest_path) && !modified?
|
79
|
-
|
89
|
+
self.class.mtimes[path] = mtime
|
80
90
|
|
81
91
|
FileUtils.mkdir_p(File.dirname(dest_path))
|
82
92
|
FileUtils.rm(dest_path) if File.exist?(dest_path)
|
83
|
-
|
84
|
-
FileUtils.cp(path, dest_path)
|
85
|
-
else
|
86
|
-
FileUtils.copy_entry(path, dest_path)
|
87
|
-
end
|
88
|
-
File.utime(@@mtimes[path], @@mtimes[path], dest_path)
|
93
|
+
copy_file(dest_path)
|
89
94
|
|
90
95
|
true
|
91
96
|
end
|
92
97
|
|
93
|
-
# Reset the mtimes cache (for testing purposes).
|
94
|
-
#
|
95
|
-
# Returns nothing.
|
96
|
-
def self.reset_cache
|
97
|
-
@@mtimes = {}
|
98
|
-
nil
|
99
|
-
end
|
100
|
-
|
101
98
|
def to_liquid
|
102
99
|
{
|
103
100
|
"extname" => extname,
|
@@ -109,11 +106,11 @@ module Bunto
|
|
109
106
|
def placeholders
|
110
107
|
{
|
111
108
|
:collection => @collection.label,
|
112
|
-
:path
|
109
|
+
:path => relative_path[
|
113
110
|
@collection.relative_directory.size..relative_path.size],
|
114
|
-
:output_ext =>
|
115
|
-
:name
|
116
|
-
:title
|
111
|
+
:output_ext => "",
|
112
|
+
:name => "",
|
113
|
+
:title => ""
|
117
114
|
}
|
118
115
|
end
|
119
116
|
|
@@ -125,10 +122,10 @@ module Bunto
|
|
125
122
|
relative_path
|
126
123
|
else
|
127
124
|
::Bunto::URL.new({
|
128
|
-
:template
|
125
|
+
:template => @collection.url_template,
|
129
126
|
:placeholders => placeholders
|
130
127
|
})
|
131
|
-
end.to_s.gsub(
|
128
|
+
end.to_s.gsub(%r!/$!, "")
|
132
129
|
end
|
133
130
|
|
134
131
|
# Returns the type of the collection if present, nil otherwise.
|
@@ -141,5 +138,15 @@ module Bunto
|
|
141
138
|
def defaults
|
142
139
|
@defaults ||= @site.frontmatter_defaults.all url, type
|
143
140
|
end
|
141
|
+
|
142
|
+
private
|
143
|
+
def copy_file(dest_path)
|
144
|
+
if @site.safe || Bunto.env == "production"
|
145
|
+
FileUtils.cp(path, dest_path)
|
146
|
+
else
|
147
|
+
FileUtils.copy_entry(path, dest_path)
|
148
|
+
end
|
149
|
+
File.utime(self.class.mtimes[path], self.class.mtimes[path], dest_path)
|
150
|
+
end
|
144
151
|
end
|
145
152
|
end
|
data/lib/bunto/stevenson.rb
CHANGED
@@ -6,13 +6,13 @@ module Bunto
|
|
6
6
|
@default_formatter = Formatter.new
|
7
7
|
@logdev = $stdout
|
8
8
|
@formatter = proc do |_, _, _, msg|
|
9
|
-
|
9
|
+
msg.to_s
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
def add(severity, message = nil, progname = nil
|
13
|
+
def add(severity, message = nil, progname = nil)
|
14
14
|
severity ||= UNKNOWN
|
15
|
-
@logdev =
|
15
|
+
@logdev = logdevice(severity)
|
16
16
|
|
17
17
|
if @logdev.nil? || severity < @level
|
18
18
|
return true
|
@@ -27,7 +27,8 @@ module Bunto
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
@logdev.puts(
|
30
|
-
format_message(format_severity(severity), Time.now, progname, message)
|
30
|
+
format_message(format_severity(severity), Time.now, progname, message)
|
31
|
+
)
|
31
32
|
true
|
32
33
|
end
|
33
34
|
|
@@ -47,7 +48,7 @@ module Bunto
|
|
47
48
|
|
48
49
|
private
|
49
50
|
|
50
|
-
def
|
51
|
+
def logdevice(severity)
|
51
52
|
if severity > INFO
|
52
53
|
$stderr
|
53
54
|
else
|