deplot 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +27 -4
- data/bin/deplot +41 -10
- data/deplot.gemspec +1 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -89,6 +89,20 @@ end
|
|
89
89
|
|
90
90
|
`collect_in` concatenates all the rendered files and writes them to a single file. Like `output_to`, it can be called with a block (the `apply` example makes use of this feature).
|
91
91
|
|
92
|
+
#### render (documents only)
|
93
|
+
|
94
|
+
`render` expects a block. This block is called when rendering (the only argument is the array of sources) and *replaces* the default renderer. You can use this method to define your own rendering process. The following code parses each source as YAML and renders a template using the YAML data:
|
95
|
+
|
96
|
+
```
|
97
|
+
render do |sources|
|
98
|
+
sources.each do |source|
|
99
|
+
metadata = YAML::load(source[:content])
|
100
|
+
post_renderer = Tilt.new("assets/post.erb")
|
101
|
+
source[:content] = post_renderer.render(nil, metadata)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
```
|
105
|
+
|
92
106
|
#### filter
|
93
107
|
|
94
108
|
The `filter` command is available for both media and document renderers and is used to filter out files from the specified sources. It can be used in two ways:
|
@@ -98,6 +112,15 @@ filter :only => [/.*.markdown$/]
|
|
98
112
|
filter :exclude => [/.*.erb$/]
|
99
113
|
```
|
100
114
|
|
115
|
+
#### sort
|
116
|
+
|
117
|
+
With `sort`, you can specify wheter you want to sort the sources *ascending* (default) or *descending* based on the file name:
|
118
|
+
|
119
|
+
```
|
120
|
+
sort :descending
|
121
|
+
```
|
122
|
+
|
123
|
+
|
101
124
|
#### apply
|
102
125
|
|
103
126
|
The mightiest of all commands, `apply`, can be used to execute custom code (so-called *modules*) in the context of the current set of sources. Modules are searched for in the `modules/` folder of your project and need to be included in the Deplotfle (`use :teaser` for `teaser.rb`). For our basic blog, we may want to shorten the text displayed on the front page and display a link to the post page:
|
@@ -151,13 +174,13 @@ There are three types of modules: the filter, the preprocessor, the processor mo
|
|
151
174
|
|
152
175
|
## Planned features
|
153
176
|
|
154
|
-
* Ability to use custom renderer
|
177
|
+
* Ability to use custom renderer modules
|
155
178
|
* Non-media asset processing (compiling, compressing, concatenating) for files written in LESS, SASS, CoffeScript etc.
|
156
179
|
* Filter: keep or discard file when one or more, but not necessarily all conditions are met (considered bug)
|
157
180
|
* Automatic rebuilding using [guard][guard]
|
158
181
|
* Media resizing and conversion
|
159
182
|
* Partials (for more modular layouts)
|
160
|
-
*
|
183
|
+
* Expand sort functionality
|
161
184
|
|
162
185
|
Please submit feature requests and bugfixes in the issue tracker.
|
163
186
|
|
@@ -165,5 +188,5 @@ Please submit feature requests and bugfixes in the issue tracker.
|
|
165
188
|
|
166
189
|
See LICENSE file.
|
167
190
|
|
168
|
-
[tilt]: https://github.com/rtomayko/
|
169
|
-
[guard]: https://github.com/guard/
|
191
|
+
[tilt]: https://github.com/rtomayko/tilt
|
192
|
+
[guard]: https://github.com/guard/guard
|
data/bin/deplot
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
VERSION = "0.1.
|
3
|
+
VERSION = "0.1.1"
|
4
4
|
|
5
5
|
require 'thor'
|
6
6
|
require 'fileutils'
|
@@ -45,6 +45,23 @@ class DeplotRenderer
|
|
45
45
|
@sources = (Dir.glob(base_dir + "*") - [".", "..", ".DS_STORE"]).collect { |file| {:filename => file} }
|
46
46
|
@base_dir = base_dir
|
47
47
|
@layout = ""
|
48
|
+
@sort_options = {
|
49
|
+
:reverse => false
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
# Sort sources based on file name
|
54
|
+
def sort *args
|
55
|
+
#args.uniq!
|
56
|
+
@sort_options[:reverse] = false if args.include? :ascending
|
57
|
+
@sort_options[:reverse] = true if args.include? :descending
|
58
|
+
end
|
59
|
+
|
60
|
+
# Prerender: apply sort options
|
61
|
+
def prerender
|
62
|
+
puts @sort_options[:reverse]
|
63
|
+
puts @sources
|
64
|
+
@sources.reverse! if @sort_options[:reverse]
|
48
65
|
end
|
49
66
|
|
50
67
|
# Filter out sources based on file name
|
@@ -75,6 +92,7 @@ class DeplotMediaRenderer < DeplotRenderer
|
|
75
92
|
end
|
76
93
|
|
77
94
|
def copy_to output_dir
|
95
|
+
prerender
|
78
96
|
puts "Copying files..."
|
79
97
|
FileUtils.mkdir_p(output_dir)
|
80
98
|
@sources.each do |source|
|
@@ -102,7 +120,10 @@ end
|
|
102
120
|
|
103
121
|
# Document renderer
|
104
122
|
class DeplotDocumentRenderer < DeplotRenderer
|
123
|
+
attr_accessor :renderer
|
124
|
+
|
105
125
|
def initialize base_dir
|
126
|
+
@renderer = nil
|
106
127
|
puts "Documents renderer initialized.".green
|
107
128
|
super
|
108
129
|
end
|
@@ -117,18 +138,23 @@ class DeplotDocumentRenderer < DeplotRenderer
|
|
117
138
|
end
|
118
139
|
|
119
140
|
def render
|
141
|
+
prerender
|
120
142
|
read if @read == false
|
121
143
|
puts "Rendering..."
|
122
144
|
@rendered = true
|
123
|
-
@
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
source[:content]
|
128
|
-
|
129
|
-
|
130
|
-
|
145
|
+
if @renderer.nil?
|
146
|
+
@sources.each do |source|
|
147
|
+
renderer = Tilt[source[:filename]]
|
148
|
+
unless renderer.nil?
|
149
|
+
source[:content] = renderer.new do
|
150
|
+
source[:content]
|
151
|
+
end.render context
|
152
|
+
else
|
153
|
+
alert "No Tilt renderer found for '#{source[:filename]}', falling back to echo."
|
154
|
+
end
|
131
155
|
end
|
156
|
+
else
|
157
|
+
@renderer.call(@sources)
|
132
158
|
end
|
133
159
|
end
|
134
160
|
|
@@ -266,9 +292,14 @@ end
|
|
266
292
|
end
|
267
293
|
end
|
268
294
|
end
|
295
|
+
self.class.send :define_method, "render" do |&block|
|
296
|
+
unless $current_instance.nil?
|
297
|
+
$current_instance.send("renderer=", block)
|
298
|
+
end
|
299
|
+
end
|
269
300
|
|
270
301
|
# Basic methods
|
271
|
-
["filter", "apply", "copy_to"].each do |method_name|
|
302
|
+
["filter", "apply", "copy_to", "sort"].each do |method_name|
|
272
303
|
self.class.send :define_method, method_name do |*args|
|
273
304
|
unless $current_instance.nil?
|
274
305
|
$current_instance.context = binding.eval("self")
|
data/deplot.gemspec
CHANGED