clay 1.2 → 1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/src/clay.rb +36 -18
  2. metadata +28 -28
data/src/clay.rb CHANGED
@@ -6,19 +6,19 @@ require 'fileutils'
6
6
  require 'yaml'
7
7
 
8
8
  module Clay
9
- VERSION = "1.2"
9
+ VERSION = "1.3"
10
10
 
11
11
  def self.init project_name
12
- print "Creating the folder structure... "
12
+ puts "Creating the folder structure... "
13
13
  project.init project_name
14
- puts "complete"
14
+ puts "OK."
15
15
  end
16
16
 
17
17
  def self.form
18
- print "Forming... "
18
+ puts "Forming... "
19
19
  project.check_consistency
20
20
  project.build
21
- puts "complete."
21
+ puts "OK."
22
22
  end
23
23
 
24
24
  def self.run
@@ -61,7 +61,8 @@ class Project
61
61
  create_directory path("build")
62
62
  end
63
63
  publish_public
64
- publish_pages
64
+ texts = interpret_texts
65
+ publish_pages texts
65
66
  end
66
67
 
67
68
  def prepare_rack_config
@@ -102,16 +103,33 @@ class Project
102
103
  end
103
104
  end
104
105
 
105
- def publish_pages
106
- Dir.glob("pages/*.*").each { |page_path|
107
- page = Page.new(page_path)
108
- File.open(page.target, "w") {|f| f.write page.content }
109
- }
110
- end
111
-
112
106
  def publish_public
113
107
  FileUtils.cp_r(Dir.glob("public/*"), "build")
114
108
  end
109
+
110
+ def interpret_texts
111
+ data = {}
112
+ texts = Dir.glob("texts/*")
113
+ texts.each do |filename|
114
+ begin
115
+ data.merge! Text.new(filename).to_h
116
+ rescue RuntimeError => e
117
+ puts "Warning: ", e.message
118
+ end
119
+ end
120
+ data
121
+ end
122
+
123
+ def publish_pages data=nil
124
+ Dir.glob("pages/*.*").each { |page_path|
125
+ begin
126
+ page = Page.new(page_path, data)
127
+ File.open(page.target, "w") {|f| f.write page.content }
128
+ rescue RuntimeError => e
129
+ puts "Warning: ", e.message
130
+ end
131
+ }
132
+ end
115
133
 
116
134
  def path filename
117
135
  File.expand_path(File.join("#{@project_root}/", filename))
@@ -121,15 +139,17 @@ end
121
139
 
122
140
  class Page
123
141
  attr_reader :content
124
- def initialize filename
142
+ def initialize filename, data=nil
125
143
  case filename.split(".").last
126
144
  when "md", "markdown" then @page_type = "markdown"
127
145
  when "html" then @page_type = "html"
128
- else raise "File type of #{filename} unknown.\nMaybe it belongs to the public directory?"
146
+ else raise "File type of #{filename} unknown. Shouldn\'t it be in the public directory?"
129
147
  end
130
148
  @filename = filename_within_pages filename
131
149
  file_content = File.read(filename)
132
- layout, raw_content, data = interpret file_content
150
+ data ||= {}
151
+ layout, raw_content, new_data = interpret file_content
152
+ data.merge! new_data
133
153
  @content = render raw_content, layout, @page_type, data
134
154
  end
135
155
 
@@ -169,8 +189,6 @@ private
169
189
  layout_name = data.delete "layout" if data["layout"]
170
190
  end
171
191
  layout = "layouts/#{layout_name}.html"
172
- texts = Dir.glob("texts/*")
173
- texts.each{|filename| data.merge! Text.new(filename).to_h }
174
192
  return layout, content, data
175
193
  end
176
194
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clay
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
- - 2
9
- version: "1.2"
8
+ - 3
9
+ version: "1.3"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Pavlo Kerestey
@@ -14,11 +14,13 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-27 00:00:00 +01:00
17
+ date: 2011-01-02 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- version_requirements: &id001 !ruby/object:Gem::Requirement
21
+ name: mustache
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
22
24
  none: false
23
25
  requirements:
24
26
  - - ~>
@@ -28,12 +30,12 @@ dependencies:
28
30
  - 0
29
31
  - 11
30
32
  version: "0.11"
31
- name: mustache
32
- requirement: *id001
33
- prerelease: false
34
33
  type: :runtime
34
+ version_requirements: *id001
35
35
  - !ruby/object:Gem::Dependency
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
36
+ name: rdiscount
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
37
39
  none: false
38
40
  requirements:
39
41
  - - ">="
@@ -42,12 +44,12 @@ dependencies:
42
44
  segments:
43
45
  - 0
44
46
  version: "0"
45
- name: rdiscount
46
- requirement: *id002
47
- prerelease: false
48
47
  type: :runtime
48
+ version_requirements: *id002
49
49
  - !ruby/object:Gem::Dependency
50
- version_requirements: &id003 !ruby/object:Gem::Requirement
50
+ name: rack
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
51
53
  none: false
52
54
  requirements:
53
55
  - - ">="
@@ -56,12 +58,12 @@ dependencies:
56
58
  segments:
57
59
  - 0
58
60
  version: "0"
59
- name: rack
60
- requirement: *id003
61
- prerelease: false
62
61
  type: :runtime
62
+ version_requirements: *id003
63
63
  - !ruby/object:Gem::Dependency
64
- version_requirements: &id004 !ruby/object:Gem::Requirement
64
+ name: bundler
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
65
67
  none: false
66
68
  requirements:
67
69
  - - ~>
@@ -71,12 +73,12 @@ dependencies:
71
73
  - 1
72
74
  - 0
73
75
  version: "1.0"
74
- name: bundler
75
- requirement: *id004
76
- prerelease: false
77
76
  type: :development
77
+ version_requirements: *id004
78
78
  - !ruby/object:Gem::Dependency
79
- version_requirements: &id005 !ruby/object:Gem::Requirement
79
+ name: rspec
80
+ prerelease: false
81
+ requirement: &id005 !ruby/object:Gem::Requirement
80
82
  none: false
81
83
  requirements:
82
84
  - - ">="
@@ -85,12 +87,12 @@ dependencies:
85
87
  segments:
86
88
  - 0
87
89
  version: "0"
88
- name: rspec
89
- requirement: *id005
90
- prerelease: false
91
90
  type: :development
91
+ version_requirements: *id005
92
92
  - !ruby/object:Gem::Dependency
93
- version_requirements: &id006 !ruby/object:Gem::Requirement
93
+ name: rake
94
+ prerelease: false
95
+ requirement: &id006 !ruby/object:Gem::Requirement
94
96
  none: false
95
97
  requirements:
96
98
  - - ">="
@@ -99,10 +101,8 @@ dependencies:
99
101
  segments:
100
102
  - 0
101
103
  version: "0"
102
- name: rake
103
- requirement: *id006
104
- prerelease: false
105
104
  type: :development
105
+ version_requirements: *id006
106
106
  description: A sticky clay to automatically form a static website using Mustache templates and markdown files.
107
107
  email:
108
108
  - pavlo@kerestey.net