dimples 1.2.4 → 1.2.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3be3dfc36f4a8285d77823deff68e9585cb71baf
4
- data.tar.gz: cb592149ddd792be5f46f1bf647cbcf8084c5cb9
3
+ metadata.gz: 010cd5047836c121e2313676a9b4145ab8e38e1b
4
+ data.tar.gz: f7ab369532e67afd12b0ffb976f76703c864cd1d
5
5
  SHA512:
6
- metadata.gz: 93ec231ac30080beeef7d13876fb573b361c8131e5378775e8472905c2bbc5ad56561eda9f4ec8d18ac66a6060033d3ffa8ea048bec84171eccbc87171bc797a
7
- data.tar.gz: eb90279afa05032d464ff0e7a38ab400e1ee82befa8341a85f20f229f54755a7322c883c514b87b7c7778dad5658943dd15262dd42d3916e15b57bfc1e4f717a
6
+ metadata.gz: 973a8429bcb276d6603e08e9978d082f562acf3a9befb847420b743eed7dae1cf0d60b4d7c4df5916c95dad1c3007e4257e39ca4361d297fd706a7edb052fbaa
7
+ data.tar.gz: 14c778c4d67efa7765bac66ea38f071915cbf923bb4bf422ac86efda9e4c67cef52e62d1e2bd088e78ac227e2d5ac8a0694f54634429d1eb16f23a4211f42761
@@ -4,6 +4,7 @@ require 'fileutils'
4
4
  require 'yaml'
5
5
  require 'tilt'
6
6
 
7
+ require 'dimples/errors'
7
8
  require 'dimples/frontable'
8
9
  require 'dimples/publishable'
9
10
  require 'dimples/configuration'
@@ -0,0 +1,18 @@
1
+ module Dimples
2
+ module Errors
3
+ class Error < RuntimeError
4
+ attr_reader :file
5
+
6
+ def initialize(file, message)
7
+ @file = file
8
+ super(message)
9
+ end
10
+ end
11
+
12
+ class PublishingError < Error
13
+ end
14
+
15
+ class RenderingError < Error
16
+ end
17
+ end
18
+ end
@@ -16,7 +16,7 @@ module Dimples
16
16
 
17
17
  if metadata
18
18
  metadata.each_pair do |key, value|
19
- self.class.send(:attr_accessor, key.to_sym) unless instance_variable_get("@#{key}")
19
+ self.class.send(:attr_accessor, key.to_sym) unless self.respond_to?(key.to_sym)
20
20
  instance_variable_set("@#{key}", value)
21
21
  end
22
22
  end
@@ -6,10 +6,14 @@ module Dimples
6
6
  publish_path = output_file_path(path)
7
7
  parent_path = File.dirname(publish_path)
8
8
 
9
- FileUtils.mkdir_p(parent_path) unless Dir.exist?(parent_path)
9
+ begin
10
+ FileUtils.mkdir_p(parent_path) unless Dir.exist?(parent_path)
10
11
 
11
- File.open(publish_path, 'w') do |file|
12
- file.write(output)
12
+ File.open(publish_path, 'w+') do |file|
13
+ file.write(output)
14
+ end
15
+ rescue SystemCallError => e
16
+ raise Errors::PublishingError.new(publish_path, e.message)
13
17
  end
14
18
  end
15
19
 
@@ -35,18 +39,18 @@ module Dimples
35
39
  else
36
40
  Tilt::StringTemplate.new(&proc)
37
41
  end
38
-
42
+
39
43
  begin
40
44
  output = renderer.render(scope) { body }.strip
41
45
  @rendered_contents = output
42
- rescue RuntimeError, TypeError, NoMethodError, SyntaxError => e
46
+ rescue RuntimeError, TypeError, NoMethodError, SyntaxError, NameError => e
43
47
  problem_file = if @path
44
48
  @path.gsub(@site.source_paths[:root], '')
45
49
  else
46
50
  "dynamic #{self.class}"
47
51
  end
48
52
 
49
- raise "Failed to render #{problem_file} - #{e}"
53
+ raise Errors::RenderingError.new(problem_file, e.message)
50
54
  end
51
55
 
52
56
  if use_layout && @layout && @site.templates[@layout]
@@ -42,16 +42,15 @@ module Dimples
42
42
  def generate
43
43
  prepare_site
44
44
  scan_files
45
-
46
- generate_posts
47
- generate_pages
48
- generate_archives
49
-
50
- generate_categories if @config['generation']['categories']
51
- generate_posts_feed if @config['generation']['feed']
52
- generate_category_feeds if @config['generation']['category_feeds']
53
-
45
+ generate_files
54
46
  copy_assets
47
+
48
+ rescue Errors::RenderingError => e
49
+ puts "Error: Failed to render #{e.file}: #{e.message}"
50
+ rescue Errors::PublishingError => e
51
+ puts "Error: Failed to publish #{e.file}: #{e.message}"
52
+ rescue => e
53
+ puts "Error: #{e}"
55
54
  end
56
55
 
57
56
  def prepare_site
@@ -109,13 +108,19 @@ module Dimples
109
108
  @latest_post = @posts.first
110
109
  end
111
110
 
111
+ def generate_files
112
+ generate_posts
113
+ generate_pages
114
+ generate_archives
115
+
116
+ generate_categories if @config['generation']['categories']
117
+ generate_posts_feed if @config['generation']['feed']
118
+ generate_category_feeds if @config['generation']['category_feeds']
119
+ end
120
+
112
121
  def generate_posts
113
122
  @posts.each do |post|
114
- begin
115
- post.write(@output_paths[:posts])
116
- rescue => e
117
- raise "Failed to render post #{post.path} (#{e})"
118
- end
123
+ post.write(@output_paths[:posts])
119
124
  end
120
125
 
121
126
  if @config['generation']['paginated_posts']
@@ -125,11 +130,7 @@ module Dimples
125
130
 
126
131
  def generate_pages
127
132
  @pages.each do |page|
128
- begin
129
- page.write(@output_paths[:site])
130
- rescue => e
131
- raise "Failed to render page #{page.path.gsub(@source_paths[:root], '')} (#{e})"
132
- end
133
+ page.write(@output_paths[:site])
133
134
  end
134
135
  end
135
136
 
@@ -164,11 +165,7 @@ module Dimples
164
165
  feed.extension = 'atom'
165
166
  feed.layout = 'feed'
166
167
 
167
- begin
168
- feed.write(path, options)
169
- rescue => e
170
- raise "Failed to generate feed #{path} (#{e})"
171
- end
168
+ feed.write(path, options)
172
169
  end
173
170
 
174
171
  def generate_posts_feed
@@ -229,11 +226,7 @@ module Dimples
229
226
 
230
227
  output_path = File.join(paths, index != 1 ? "page#{index}" : '')
231
228
 
232
- begin
233
- page.write(output_path, {posts: posts.slice((index - 1) * per_page, per_page), pagination: pagination})
234
- rescue => e
235
- raise "Failed to generate paginated page #{path} (#{e})"
236
- end
229
+ page.write(output_path, {posts: posts.slice((index - 1) * per_page, per_page), pagination: pagination})
237
230
  end
238
231
  end
239
232
  end
@@ -1,3 +1,3 @@
1
1
  module Dimples
2
- VERSION = "1.2.4"
2
+ VERSION = "1.2.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dimples
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Bogan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-29 00:00:00.000000000 Z
11
+ date: 2015-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tilt
@@ -33,6 +33,7 @@ extra_rdoc_files: []
33
33
  files:
34
34
  - lib/dimples.rb
35
35
  - lib/dimples/configuration.rb
36
+ - lib/dimples/errors.rb
36
37
  - lib/dimples/frontable.rb
37
38
  - lib/dimples/page.rb
38
39
  - lib/dimples/post.rb