clay 1.7.1 → 1.7.2

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.
Files changed (2) hide show
  1. data/src/clay.rb +28 -21
  2. metadata +5 -5
data/src/clay.rb CHANGED
@@ -6,8 +6,8 @@ require 'fileutils'
6
6
  require 'yaml'
7
7
 
8
8
  module Clay
9
- VERSION = "1.7.1"
10
-
9
+ VERSION = "1.7.2"
10
+
11
11
  def self.init project_name, silent=false
12
12
  mute(silent) {
13
13
  puts "Creating the folder structure... "
@@ -15,7 +15,7 @@ module Clay
15
15
  puts "OK."
16
16
  }
17
17
  end
18
-
18
+
19
19
  def self.form silent=false
20
20
  mute(silent){
21
21
  puts "Forming... "
@@ -24,7 +24,7 @@ module Clay
24
24
  puts "OK."
25
25
  }
26
26
  end
27
-
27
+
28
28
  def self.run silent=false
29
29
  mute(silent) {
30
30
  puts "Starting server on http://localhost:9292/"
@@ -41,7 +41,7 @@ module Clay
41
41
  yield
42
42
  $stdout.reopen(stdout)
43
43
  end
44
-
44
+
45
45
  def self.project
46
46
  Project.new project_root
47
47
  end
@@ -52,6 +52,12 @@ module Clay
52
52
 
53
53
  end
54
54
 
55
+ class Hash
56
+ def deep_copy
57
+ Marshal.load(Marshal.dump(self))
58
+ end
59
+ end
60
+
55
61
  class Project
56
62
  def initialize project_root
57
63
  @project_root = project_root
@@ -68,7 +74,7 @@ class Project
68
74
  def check_consistency
69
75
  init_clay_project? and layouts_exist? and pages_exist? and static_exist? and texts_exist?
70
76
  end
71
-
77
+
72
78
  def build
73
79
  target = configs["target_dir"] ? configs["target_dir"] : "build"
74
80
  unless File.directory?(path(target))
@@ -78,7 +84,7 @@ class Project
78
84
  texts = interpret_texts
79
85
  publish_pages target, texts
80
86
  end
81
-
87
+
82
88
  def prepare_rack_config
83
89
  unless File.exists? path("config.ru")
84
90
  file = File.open(path("config.ru"), "w")
@@ -95,17 +101,17 @@ class Project
95
101
  rescue Errno::ENOENT
96
102
  {}
97
103
  end
98
-
104
+
99
105
  private
100
-
106
+
101
107
  def init_clay_project?
102
108
  `touch #{path(".clay")}` unless File.exists? path(".clay")
103
109
  end
104
-
110
+
105
111
  def layouts_exist?
106
112
  create_directory path("layouts")
107
113
  end
108
-
114
+
109
115
  def pages_exist?
110
116
  create_directory path("pages")
111
117
  end
@@ -117,7 +123,7 @@ private
117
123
  def texts_exist?
118
124
  create_directory path("texts")
119
125
  end
120
-
126
+
121
127
  def create_directory dirname
122
128
  return if dirname.nil? || dirname.empty?
123
129
  unless File.directory?(dirname)
@@ -133,13 +139,13 @@ private
133
139
  def publish_static target
134
140
  FileUtils.cp_r(Dir.glob("static/*"), target)
135
141
  end
136
-
142
+
137
143
  def interpret_texts
138
144
  data = {}
139
- texts = Dir.glob("texts/*")
140
- texts.each do |filename|
145
+ texts = Dir.glob("texts/*") # =>
146
+ texts.each do |filename|
141
147
  begin
142
- data.merge! Text.new(filename).to_h
148
+ data.merge! Text.new(filename).to_h
143
149
  rescue RuntimeError => e
144
150
  puts "Warning: ", e.message
145
151
  end
@@ -147,9 +153,10 @@ private
147
153
  data
148
154
  end
149
155
 
150
- def publish_pages target, data=nil
156
+ def publish_pages target, initial_data=nil
151
157
  Dir.glob("pages/*.*").each { |page_path|
152
158
  begin
159
+ data = initial_data.deep_copy
153
160
  page = Page.new(page_path, target, data)
154
161
  File.open(page.target, "w") {|f| f.write page.content }
155
162
  rescue RuntimeError => e
@@ -180,18 +187,18 @@ class Page
180
187
  data.merge! new_data
181
188
  @content = render raw_content, layout, @page_type, data
182
189
  end
183
-
190
+
184
191
  def target
185
192
  file_base = @filename.split(".")[0..-2].join('.')
186
193
  "#{@target}/#{file_base}.html"
187
194
  end
188
-
195
+
189
196
  private
190
197
  def filename_within_pages filename
191
198
  filename.split("/", 2)[1]
192
199
  end
193
-
194
- def render content, layout, page_type, data
200
+
201
+ def render content, layout, page_type, data
195
202
  data['content'] = parsed_content content, data
196
203
  begin
197
204
  layout_content = File.read(layout)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clay
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 7
9
- - 1
10
- version: 1.7.1
9
+ - 2
10
+ version: 1.7.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Pavlo Kerestey
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-11 00:00:00 +01:00
18
+ date: 2011-02-13 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -170,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
170
  requirements: []
171
171
 
172
172
  rubyforge_project: clay
173
- rubygems_version: 1.4.2
173
+ rubygems_version: 1.5.0
174
174
  signing_key:
175
175
  specification_version: 3
176
176
  summary: A lightweight CMS for static websites