deplot 0.0.0
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.
- data/bin/deplot +522 -0
- metadata +65 -0
data/bin/deplot
ADDED
@@ -0,0 +1,522 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'tilt'
|
6
|
+
|
7
|
+
# Deplot DSL
|
8
|
+
|
9
|
+
$assets_dir = Dir.pwd+"/assets"
|
10
|
+
$content_dir = Dir.pwd+"/content"
|
11
|
+
$root_dir = Dir.pwd
|
12
|
+
$template_arguments = {}
|
13
|
+
$variables = {}
|
14
|
+
|
15
|
+
$tasks = []
|
16
|
+
$render_type = ""
|
17
|
+
$current_source = ""
|
18
|
+
$layout = ""
|
19
|
+
$options = {}
|
20
|
+
|
21
|
+
# dsl methods for page specification
|
22
|
+
def assets_dir dir
|
23
|
+
$assets_dir = $root_dir + "/" + dir.gsub(/^\//, "").gsub(/\/$/, "")
|
24
|
+
end
|
25
|
+
def content_dir dir
|
26
|
+
$content_dir = $root_dir + "/" + dir.gsub(/^\//, "").gsub(/\/$/, "")
|
27
|
+
end
|
28
|
+
def variables vars
|
29
|
+
$variables.merge! vars
|
30
|
+
end
|
31
|
+
def layout file
|
32
|
+
$layout = file
|
33
|
+
end
|
34
|
+
def render file
|
35
|
+
$render_type = "render-single"
|
36
|
+
$current_source = file
|
37
|
+
end
|
38
|
+
def render_each base = "", paths = []
|
39
|
+
$render_type = "render-all"
|
40
|
+
unless base.is_a? Array
|
41
|
+
$current_source = [base, paths]
|
42
|
+
else
|
43
|
+
$current_source = ["./", base]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
def render_all path
|
47
|
+
$render_type = "render-all"
|
48
|
+
$current_source = path
|
49
|
+
end
|
50
|
+
|
51
|
+
# base of route specification
|
52
|
+
def path path, &block
|
53
|
+
# reset
|
54
|
+
$render_type = ""
|
55
|
+
$current_source = ""
|
56
|
+
$layout = "layout.erb"
|
57
|
+
$options = {}
|
58
|
+
$variables = {}
|
59
|
+
|
60
|
+
# set
|
61
|
+
block.call
|
62
|
+
|
63
|
+
# remember
|
64
|
+
if $render_type == "render-all"
|
65
|
+
$render_type = (/\#/ =~ path) ? "render-all" : "render-all-one-file"
|
66
|
+
$tasks << [$render_type, path, $current_source, $layout, $options, $variables]
|
67
|
+
else
|
68
|
+
$tasks << [$render_type, path, $current_source, $layout, $options, $variables]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# set options
|
73
|
+
def reverse_order
|
74
|
+
$options[:reverse_order] = true
|
75
|
+
end
|
76
|
+
def extension ext
|
77
|
+
$options[:extension] = ext
|
78
|
+
end
|
79
|
+
|
80
|
+
# methods for partials
|
81
|
+
def partial name, options = {}
|
82
|
+
begin
|
83
|
+
source_tilt = Tilt.new($assets_dir+"/"+name)
|
84
|
+
rescue Exception => e
|
85
|
+
puts "- ERROR creating tilt instance (possibly missing source file for partial)."
|
86
|
+
return ""
|
87
|
+
end
|
88
|
+
if options.has_key? :layout
|
89
|
+
begin
|
90
|
+
layout_tilt = Tilt.new(options[:layout])
|
91
|
+
rescue Exception => e
|
92
|
+
puts "- ERROR creating tilt instance (possibly missing layout file for partial)."
|
93
|
+
return ""
|
94
|
+
end
|
95
|
+
return layout_tilt.render(Object.new, $template_arguments) do
|
96
|
+
source_tilt.render(Object.new, $template_arguments)
|
97
|
+
end
|
98
|
+
else
|
99
|
+
return source_tilt.render(Object.new, $template_arguments)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# publishing methods
|
104
|
+
def check_directories?
|
105
|
+
[$assets_dir, $content_dir].each do |dir|
|
106
|
+
unless File.exists?(dir) and File.directory?(dir)
|
107
|
+
return false
|
108
|
+
end
|
109
|
+
end
|
110
|
+
return true
|
111
|
+
end
|
112
|
+
def publish
|
113
|
+
puts "Publishing site..."
|
114
|
+
$tasks.each do |task|
|
115
|
+
action, path, source, $layout, options, variables = task
|
116
|
+
content = ""
|
117
|
+
$template_arguments = {:path => "", :source => "", :file_name => "", :depth => 0}
|
118
|
+
$template_arguments.merge! variables
|
119
|
+
options[:extension] = (options[:extension].nil?) ? "html" : options[:extension]
|
120
|
+
unless check_directories?
|
121
|
+
puts "- ERROR: content or assets directory does't exist. Exiting..."
|
122
|
+
return
|
123
|
+
end
|
124
|
+
|
125
|
+
if action == "render-single"
|
126
|
+
|
127
|
+
## R E N D E R S I N G L E
|
128
|
+
# Destination
|
129
|
+
destination_dir = File.dirname path
|
130
|
+
destination_base = File.basename path
|
131
|
+
if /\/$/ =~ path
|
132
|
+
destination_dir = path.gsub /\/$/, ""
|
133
|
+
destination_base = "index.#{options[:extension]}"
|
134
|
+
end
|
135
|
+
$template_arguments.merge! :path => "#{destination_dir}/#{destination_base}"
|
136
|
+
$template_arguments.merge! :file_name => destination_base
|
137
|
+
$template_arguments.merge! :source => source
|
138
|
+
$template_arguments.merge! :depth => (destination_dir.count "/")
|
139
|
+
|
140
|
+
puts "Rendering path '#{destination_dir}/#{destination_base}'"
|
141
|
+
# make path
|
142
|
+
FileUtils.mkdir_p "."+destination_dir
|
143
|
+
unless File.directory? "."+destination_dir
|
144
|
+
puts " Path '"+path+"' could not be created. Skipping..."
|
145
|
+
next
|
146
|
+
end
|
147
|
+
|
148
|
+
# Read source
|
149
|
+
Dir.chdir $content_dir do
|
150
|
+
unless File.exist? source
|
151
|
+
puts " Source file could not be found. Skipping..."
|
152
|
+
next
|
153
|
+
end
|
154
|
+
content = File.read source
|
155
|
+
end
|
156
|
+
puts " Read source file."
|
157
|
+
|
158
|
+
# Create tilt instances
|
159
|
+
layout_tilt = nil
|
160
|
+
Dir.chdir $assets_dir do
|
161
|
+
begin
|
162
|
+
layout_tilt = Tilt.new($layout)
|
163
|
+
rescue Exception => e
|
164
|
+
puts "- ERROR creating tilt instance (possibly missing layout file)."
|
165
|
+
layout_tilt = nil
|
166
|
+
end
|
167
|
+
end
|
168
|
+
if layout_tilt.nil?
|
169
|
+
puts " Layout could not be found or rendered. Skipping..."
|
170
|
+
next
|
171
|
+
end
|
172
|
+
source_tilt = nil
|
173
|
+
Dir.chdir $content_dir do
|
174
|
+
begin
|
175
|
+
source_tilt = Tilt.new(source)
|
176
|
+
rescue Exception => e
|
177
|
+
puts "- ERROR creating tilt instance (possibly missing source file)."
|
178
|
+
source_tilt = nil
|
179
|
+
end
|
180
|
+
end
|
181
|
+
if source_tilt.nil?
|
182
|
+
puts " Source file could not be rendered. Skipping..."
|
183
|
+
next
|
184
|
+
end
|
185
|
+
puts " Created tilt instances."
|
186
|
+
|
187
|
+
# Render and write
|
188
|
+
Dir.chdir "."+destination_dir do
|
189
|
+
File.open destination_base, "w" do |file|
|
190
|
+
file.puts layout_tilt.render(Object.new, $template_arguments){
|
191
|
+
source_tilt.render(Object.new, $template_arguments)
|
192
|
+
}
|
193
|
+
end
|
194
|
+
end
|
195
|
+
puts " Wrote to file."
|
196
|
+
elsif action == "render-all"
|
197
|
+
|
198
|
+
## R E N D E R A L L
|
199
|
+
# Destination
|
200
|
+
destination_dir = File.dirname path
|
201
|
+
destination_base = File.basename path
|
202
|
+
if /\/$/ =~ path
|
203
|
+
destination_dir = path.gsub /\/$/, ""
|
204
|
+
destination_base = "index.#{options[:extension]}"
|
205
|
+
end
|
206
|
+
|
207
|
+
puts "Rendering path/s '"+destination_dir+"/...'"
|
208
|
+
# make path
|
209
|
+
FileUtils.mkdir_p "."+destination_dir
|
210
|
+
unless File.directory? "."+destination_dir
|
211
|
+
next
|
212
|
+
end
|
213
|
+
|
214
|
+
# Read source
|
215
|
+
Dir.chdir $content_dir do
|
216
|
+
paths = []
|
217
|
+
if source.is_a? Array
|
218
|
+
source, paths = source
|
219
|
+
end
|
220
|
+
source.gsub!(/\/$/, "")
|
221
|
+
Dir.chdir source do
|
222
|
+
# Create layout tilt instance
|
223
|
+
layout_tilt = nil
|
224
|
+
Dir.chdir $assets_dir do
|
225
|
+
begin
|
226
|
+
layout_tilt = Tilt.new($layout)
|
227
|
+
rescue Exception => e
|
228
|
+
puts "- ERROR creating tilt instance (possibly missing layout file)."
|
229
|
+
layout_tilt = nil
|
230
|
+
end
|
231
|
+
end
|
232
|
+
if layout_tilt.nil?
|
233
|
+
puts " Layout could not be found or rendered. Skipping..."
|
234
|
+
next
|
235
|
+
end
|
236
|
+
(paths == [] ? Dir.glob("*") : paths).each do |content_file|
|
237
|
+
puts " Read source file #{source}/#{content_file}"
|
238
|
+
$template_arguments.merge! :source => "#{source}/#{content_file}"
|
239
|
+
|
240
|
+
# Create tilt instances
|
241
|
+
source_tilt = nil
|
242
|
+
begin
|
243
|
+
source_tilt = Tilt.new(content_file)
|
244
|
+
rescue Exception => e
|
245
|
+
puts "- ERROR creating tilt instance (possibly missing source file)."
|
246
|
+
source_tilt = nil
|
247
|
+
end
|
248
|
+
if source_tilt.nil?
|
249
|
+
puts " Source file could not be rendered. Skipping..."
|
250
|
+
next
|
251
|
+
end
|
252
|
+
|
253
|
+
# Render and write
|
254
|
+
Dir.chdir $root_dir+destination_dir do
|
255
|
+
file_name = File.basename(content_file).gsub(File.extname(content_file), ".#{options[:extension]}")
|
256
|
+
$template_arguments.merge! :path => "#{destination_dir}/#{file_name}"
|
257
|
+
$template_arguments.merge! :file_name => file_name
|
258
|
+
$template_arguments.merge! :depth => (destination_dir.count "/")
|
259
|
+
File.open destination_base.gsub("#", file_name), "w" do |file|
|
260
|
+
file.puts layout_tilt.render(Object.new, $template_arguments){
|
261
|
+
source_tilt.render(Object.new, $template_arguments)
|
262
|
+
}
|
263
|
+
end
|
264
|
+
puts " Wrote to file: " + file_name
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
elsif action == "render-all-one-file"
|
270
|
+
|
271
|
+
## R E N D E R A L L O N E F I L E
|
272
|
+
# Destination
|
273
|
+
destination_dir = File.dirname path
|
274
|
+
destination_base = File.basename path
|
275
|
+
if /\/$/ =~ path
|
276
|
+
destination_dir = path.gsub /\/$/, ""
|
277
|
+
destination_base = "index.#{options[:extension]}"
|
278
|
+
end
|
279
|
+
|
280
|
+
$template_arguments.merge! :path => "#{destination_dir}/#{destination_base}"
|
281
|
+
$template_arguments.merge! :file_name => destination_base
|
282
|
+
$template_arguments.merge! :depth => (destination_dir.count "/")
|
283
|
+
|
284
|
+
puts "Rendering path '#{destination_dir}/#{destination_base}'"
|
285
|
+
# make path
|
286
|
+
FileUtils.mkdir_p "."+destination_dir
|
287
|
+
unless File.directory? "."+destination_dir
|
288
|
+
puts " Path '"+path+"' could not be created. Skipping..."
|
289
|
+
next
|
290
|
+
end
|
291
|
+
|
292
|
+
sources_rendered = []
|
293
|
+
# Read source/s
|
294
|
+
Dir.chdir $content_dir do
|
295
|
+
paths = []
|
296
|
+
if source.is_a? Array
|
297
|
+
source, paths = source
|
298
|
+
end
|
299
|
+
Dir.chdir source do
|
300
|
+
paths = (paths == [] ? Dir.glob("*") : paths)
|
301
|
+
if options.has_key? :reverse_order and options[:reverse_order] == true
|
302
|
+
paths.reverse!
|
303
|
+
end
|
304
|
+
paths.each do |content_file|
|
305
|
+
#content = File.read content_file
|
306
|
+
puts " Read source file #{source}/#{content_file}"
|
307
|
+
$template_arguments.merge! :source => "#{source}#{content_file}"
|
308
|
+
|
309
|
+
# Create tilt instance
|
310
|
+
source_tilt = nil
|
311
|
+
begin
|
312
|
+
source_tilt = Tilt.new(content_file)
|
313
|
+
rescue Exception => e
|
314
|
+
puts "- ERROR creating tilt instance (possibly missing source file)."
|
315
|
+
source_tilt = nil
|
316
|
+
end
|
317
|
+
if source_tilt.nil?
|
318
|
+
puts " Source file could not be rendered. Skipping..."
|
319
|
+
next
|
320
|
+
end
|
321
|
+
sources_rendered << {:content => source_tilt.render(Object.new, $template_arguments)}.merge($template_arguments)
|
322
|
+
end
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
# Create layout tilt instance
|
327
|
+
layout_tilt = nil
|
328
|
+
Dir.chdir $assets_dir do
|
329
|
+
begin
|
330
|
+
layout_tilt = Tilt.new($layout)
|
331
|
+
rescue Exception => e
|
332
|
+
puts "- ERROR creating tilt instance (possibly missing layout file)."
|
333
|
+
layout_tilt = nil
|
334
|
+
end
|
335
|
+
end
|
336
|
+
if layout_tilt.nil?
|
337
|
+
puts " Layout could not be found or rendered. Skipping..."
|
338
|
+
next
|
339
|
+
end
|
340
|
+
# Render and write
|
341
|
+
Dir.chdir "."+destination_dir do
|
342
|
+
File.open destination_base, "w" do |file|
|
343
|
+
file.puts layout_tilt.render(Object.new, {:items => sources_rendered}.merge($template_arguments))
|
344
|
+
end
|
345
|
+
end
|
346
|
+
puts " Wrote to file."
|
347
|
+
end # End of action switching
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
351
|
+
# Thor: Deplot CLI
|
352
|
+
|
353
|
+
class Deplot < Thor
|
354
|
+
|
355
|
+
desc "init", "Create a new deplot project in the current directory"
|
356
|
+
def init
|
357
|
+
# Content directory
|
358
|
+
puts " Making directory '"+$content_dir+"'..."
|
359
|
+
FileUtils.mkdir $content_dir
|
360
|
+
# Assets directory
|
361
|
+
puts " Making directory '"+$assets_dir+"'..."
|
362
|
+
FileUtils.mkdir $assets_dir
|
363
|
+
# Basic Layout
|
364
|
+
Dir.chdir $assets_dir do
|
365
|
+
File.open "layout.erb", "w" do |file|
|
366
|
+
file.write <<-EOF
|
367
|
+
<html>
|
368
|
+
<head>
|
369
|
+
<title>Deplot Project</title>
|
370
|
+
<link rel="stylesheet" href="style.css" />
|
371
|
+
</head>
|
372
|
+
<body>
|
373
|
+
<div id="wrapper">
|
374
|
+
<%= yield %>
|
375
|
+
</div>
|
376
|
+
</body>
|
377
|
+
</html>
|
378
|
+
EOF
|
379
|
+
end
|
380
|
+
File.open "style.less", "w" do |file|
|
381
|
+
file.write <<-EOF
|
382
|
+
body {
|
383
|
+
font-family: "Helvetica", sans-serif;
|
384
|
+
}
|
385
|
+
#wrapper {
|
386
|
+
width: 500px;
|
387
|
+
margin: 0px auto;
|
388
|
+
}
|
389
|
+
EOF
|
390
|
+
end
|
391
|
+
end
|
392
|
+
# Deplotfile
|
393
|
+
puts " Creating Deplotfile..."
|
394
|
+
File.open "Deplotfile", "w" do |file|
|
395
|
+
file.write <<-EOF
|
396
|
+
path '/' do
|
397
|
+
render "index.markdown"
|
398
|
+
end
|
399
|
+
|
400
|
+
publish
|
401
|
+
EOF
|
402
|
+
end
|
403
|
+
# Guardfile
|
404
|
+
puts " Creating Guardfile..."
|
405
|
+
File.open "Guardfile", "w" do |file|
|
406
|
+
file.write <<-EOF
|
407
|
+
# CoffeeScript
|
408
|
+
guard :coffeescript, :input => 'assets', :output => '.'
|
409
|
+
|
410
|
+
# CSS <- LESS, SASS
|
411
|
+
guard :sass, :input => 'assets', :output => '.'
|
412
|
+
guard :less, :output => '.' do
|
413
|
+
watch(/^assets\\/(.+\.less)$/)
|
414
|
+
end
|
415
|
+
|
416
|
+
# Invoke deplot
|
417
|
+
guard :shell do
|
418
|
+
watch(/(assets|content)\\/(.*)/) do |m|
|
419
|
+
`echo ""; echo "File '\#{m[2]}' changed."; deplot make`
|
420
|
+
end
|
421
|
+
end
|
422
|
+
EOF
|
423
|
+
end
|
424
|
+
# Example content
|
425
|
+
Dir.chdir $content_dir do
|
426
|
+
File.open "index.markdown", "w" do |file|
|
427
|
+
file.write <<-EOF
|
428
|
+
# New deplot project
|
429
|
+
|
430
|
+
This is the default page of your new project. Change the Deplotfile in the project
|
431
|
+
directory to add new routes (see examples below) or change the contents of this file
|
432
|
+
by editing `content/index.markdown`. Remember to call `deplot make` to build the
|
433
|
+
project or, better, run `guard` to recompile if anything changes.
|
434
|
+
|
435
|
+
## Editing the Deplotfile
|
436
|
+
|
437
|
+
The basic syntax to describe a page of your site is to call `path` with the page location
|
438
|
+
as a string and with a block containing the specific instructions, like the `render`
|
439
|
+
method:
|
440
|
+
|
441
|
+
```ruby
|
442
|
+
path '/' do
|
443
|
+
render "index.markdown"
|
444
|
+
end
|
445
|
+
```
|
446
|
+
|
447
|
+
This is, by the way, also the code that is used to generate this introduction page.
|
448
|
+
To render more than one file, for example all files in a directory called `blog/`,
|
449
|
+
you can use `render_all`:
|
450
|
+
|
451
|
+
```ruby
|
452
|
+
path '/blog/#'
|
453
|
+
render_all "blog/"
|
454
|
+
end
|
455
|
+
```
|
456
|
+
|
457
|
+
The symbol `#` will then be replaced by the name of the source file (without its
|
458
|
+
extension and with `.html` at the end). Omitting the symbol will cause deplot to render
|
459
|
+
all source files into one single file. The code below will produce an index file
|
460
|
+
`blog/index.html` that uses another layout (`layout_index.erb`).
|
461
|
+
|
462
|
+
```ruby
|
463
|
+
path '/blog/'
|
464
|
+
layout "layout_index.erb"
|
465
|
+
render_all "blog/"
|
466
|
+
end
|
467
|
+
|
468
|
+
## Editing content
|
469
|
+
|
470
|
+
All content is by default in the directory `content/` and can be written in any language
|
471
|
+
that `tilt` understands. The directory in which deplot searches for the source files can
|
472
|
+
be changed with a call to `content_dir`, and the directory for all assets (layouts,
|
473
|
+
stylesheets) with `assets_dir`.
|
474
|
+
|
475
|
+
EOF
|
476
|
+
end
|
477
|
+
end
|
478
|
+
end
|
479
|
+
|
480
|
+
desc "new <project_name> (<git_repo>)", "Create a new deplot project, if a git repo is specified by cloning an existing skeleton"
|
481
|
+
def new(project_name, git_skeleton = "")
|
482
|
+
if File.exist? project_name
|
483
|
+
puts "Directory '"+project_name+"' already exists. Exiting..."
|
484
|
+
return
|
485
|
+
end
|
486
|
+
puts "Creating project folder..."
|
487
|
+
if git_skeleton == ""
|
488
|
+
FileUtils.mkdir project_name
|
489
|
+
$root_dir = Dir.pwd + "/" + project_name
|
490
|
+
$assets_dir = $root_dir + "/assets"
|
491
|
+
$content_dir = $root_dir + "/content"
|
492
|
+
Dir.chdir project_name do
|
493
|
+
init
|
494
|
+
end
|
495
|
+
puts "Finished creating '#{project_name}'- ready to build your site!"
|
496
|
+
else
|
497
|
+
`git clone #{git_skeleton} #{project_name}`
|
498
|
+
if File.exist? project_name
|
499
|
+
begin
|
500
|
+
`rm -rf #{project_name}/.git`
|
501
|
+
rescue
|
502
|
+
puts "Unable to delete git references."
|
503
|
+
end
|
504
|
+
puts "Finished creating '#{project_name}' - ready to build your site! (If 'git clone' didn't fail.)"
|
505
|
+
else
|
506
|
+
puts "Git clone failed (see output above)."
|
507
|
+
end
|
508
|
+
end
|
509
|
+
end
|
510
|
+
|
511
|
+
desc "make", "Run deplot and build your project"
|
512
|
+
def make()
|
513
|
+
puts "Making project..."
|
514
|
+
unless File.exist? "Deplotfile"
|
515
|
+
puts "Deplotfile not found. Exiting..."
|
516
|
+
return
|
517
|
+
end
|
518
|
+
$LOAD_PATH.unshift(Dir.pwd)
|
519
|
+
load "Deplotfile"
|
520
|
+
end
|
521
|
+
end
|
522
|
+
Deplot.start
|
metadata
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: deplot
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 31
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
version: 0.0.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Cyril Nusko
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-02-23 00:00:00 Z
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: A ruby static web site generator
|
22
|
+
email: gitcdn@gmail.com
|
23
|
+
executables:
|
24
|
+
- deplot
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files: []
|
28
|
+
|
29
|
+
files:
|
30
|
+
- bin/deplot
|
31
|
+
homepage: http://www.github.com/cdn64/deplot
|
32
|
+
licenses: []
|
33
|
+
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
|
37
|
+
require_paths:
|
38
|
+
- lib
|
39
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
hash: 3
|
54
|
+
segments:
|
55
|
+
- 0
|
56
|
+
version: "0"
|
57
|
+
requirements: []
|
58
|
+
|
59
|
+
rubyforge_project:
|
60
|
+
rubygems_version: 1.8.12
|
61
|
+
signing_key:
|
62
|
+
specification_version: 3
|
63
|
+
summary: Deplot
|
64
|
+
test_files: []
|
65
|
+
|