zucker 1 → 2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. data/CHANGELOG +14 -0
  2. data/Rakefile +14 -4
  3. data/lib/zucker.rb +0 -4
  4. data/lib/zucker/2/D.rb +19 -0
  5. data/lib/zucker/2/aliases.rb +28 -0
  6. data/lib/zucker/2/all.rb +6 -0
  7. data/lib/zucker/2/array.rb +17 -0
  8. data/lib/zucker/2/array2proc.rb +16 -0
  9. data/lib/zucker/2/binding.rb +25 -0
  10. data/lib/zucker/2/blank.rb +26 -0
  11. data/lib/zucker/2/class2proc.rb +10 -0
  12. data/lib/zucker/2/debug.rb +4 -0
  13. data/lib/zucker/2/default.rb +25 -0
  14. data/lib/zucker/2/desc/D.yaml +23 -0
  15. data/lib/zucker/2/desc/aliases.yaml +16 -0
  16. data/lib/zucker/2/desc/array.yaml +14 -0
  17. data/lib/zucker/2/desc/array2proc.yaml +17 -0
  18. data/lib/zucker/2/desc/binding.yaml +10 -0
  19. data/lib/zucker/2/desc/blank.yaml +10 -0
  20. data/lib/zucker/2/desc/class2proc.yaml +12 -0
  21. data/lib/zucker/2/desc/egonil.yaml +17 -0
  22. data/lib/zucker/2/desc/enumerable.yaml +11 -0
  23. data/lib/zucker/2/desc/hash.yaml +14 -0
  24. data/lib/zucker/2/desc/hash2proc.yaml +11 -0
  25. data/lib/zucker/2/desc/info.yaml +12 -0
  26. data/lib/zucker/2/desc/iterate.yaml +17 -0
  27. data/lib/zucker/2/desc/ivars.yaml +20 -0
  28. data/lib/zucker/2/desc/kernel.yaml +13 -0
  29. data/lib/zucker/2/desc/mcopy.yaml +12 -0
  30. data/lib/zucker/2/desc/mm.yaml +12 -0
  31. data/lib/zucker/2/desc/regexp2proc.yaml +13 -0
  32. data/lib/zucker/2/desc/sandbox.yaml +19 -0
  33. data/lib/zucker/2/desc/square_brackets_for.yaml +23 -0
  34. data/lib/zucker/2/desc/string.yaml +13 -0
  35. data/lib/zucker/2/desc/unary.yaml +15 -0
  36. data/lib/zucker/2/desc/union.yaml +11 -0
  37. data/lib/zucker/2/doc/zucker_doc.html +1494 -0
  38. data/lib/zucker/2/doc/zucker_doc.rb +498 -0
  39. data/lib/zucker/2/egonil.rb +14 -0
  40. data/lib/zucker/2/enumerable.rb +12 -0
  41. data/lib/zucker/2/hash.rb +19 -0
  42. data/lib/zucker/2/hash2proc.rb +14 -0
  43. data/lib/zucker/2/info.rb +164 -0
  44. data/lib/zucker/2/iterate.rb +23 -0
  45. data/lib/zucker/2/ivars.rb +26 -0
  46. data/lib/zucker/2/kernel.rb +18 -0
  47. data/lib/zucker/2/mcopy.rb +9 -0
  48. data/lib/zucker/2/mm.rb +31 -0
  49. data/lib/zucker/2/regexp2proc.rb +10 -0
  50. data/lib/zucker/2/sandbox.rb +19 -0
  51. data/lib/zucker/2/spec/D_spec.rb +35 -0
  52. data/lib/zucker/2/spec/aliases_spec.rb +13 -0
  53. data/lib/zucker/2/spec/array2proc_spec.rb +12 -0
  54. data/lib/zucker/2/spec/array_spec.rb +23 -0
  55. data/lib/zucker/2/spec/binding_spec.rb +8 -0
  56. data/lib/zucker/2/spec/blank_spec.rb +20 -0
  57. data/lib/zucker/2/spec/class2proc_spec.rb +9 -0
  58. data/lib/zucker/2/spec/egonil_spec.rb +30 -0
  59. data/lib/zucker/2/spec/enumerable_spec.rb +8 -0
  60. data/lib/zucker/2/spec/hash2proc_spec.rb +12 -0
  61. data/lib/zucker/2/spec/hash_spec.rb +17 -0
  62. data/lib/zucker/2/spec/info_spec.rb +8 -0
  63. data/lib/zucker/2/spec/iterate_spec.rb +54 -0
  64. data/lib/zucker/2/spec/ivars_spec.rb +20 -0
  65. data/lib/zucker/2/spec/kernel_spec.rb +28 -0
  66. data/lib/zucker/2/spec/mcopy_spec.rb +13 -0
  67. data/lib/zucker/2/spec/mm_spec.rb +8 -0
  68. data/lib/zucker/2/spec/regexp2proc_spec.rb +9 -0
  69. data/lib/zucker/2/spec/sandbox_spec.rb +26 -0
  70. data/lib/zucker/2/spec/spec_helper.rb +18 -0
  71. data/lib/zucker/2/spec/square_brackets_for_spec.rb +59 -0
  72. data/lib/zucker/2/spec/string_spec.rb +29 -0
  73. data/lib/zucker/2/spec/unary_spec.rb +26 -0
  74. data/lib/zucker/2/spec/union_spec.rb +15 -0
  75. data/lib/zucker/2/square_brackets_for.rb +20 -0
  76. data/lib/zucker/2/string.rb +25 -0
  77. data/lib/zucker/2/unary.rb +22 -0
  78. data/lib/zucker/2/union.rb +14 -0
  79. data/lib/zucker/all.rb +2 -2
  80. data/lib/zucker/array2proc.rb +7 -1
  81. data/lib/zucker/debug.rb +3 -3
  82. data/lib/zucker/default.rb +1 -1
  83. data/lib/zucker/desc/D.yaml +1 -1
  84. data/lib/zucker/desc/array.yaml +1 -1
  85. data/lib/zucker/desc/array2proc.yaml +5 -1
  86. data/lib/zucker/desc/binding.yaml +2 -2
  87. data/lib/zucker/desc/blank.yaml +1 -3
  88. data/lib/zucker/desc/egonil.yaml +1 -1
  89. data/lib/zucker/desc/enumerable.yaml +1 -1
  90. data/lib/zucker/desc/hash.yaml +4 -2
  91. data/lib/zucker/desc/info.yaml +12 -0
  92. data/lib/zucker/desc/kernel.yaml +2 -2
  93. data/lib/zucker/desc/mm.yaml +3 -3
  94. data/lib/zucker/desc/regexp2proc.yaml +1 -1
  95. data/lib/zucker/desc/sandbox.yaml +6 -1
  96. data/lib/zucker/desc/string.yaml +1 -1
  97. data/lib/zucker/desc/unary.yaml +2 -2
  98. data/lib/zucker/desc/union.yaml +1 -1
  99. data/lib/zucker/doc/zucker_doc.html +441 -233
  100. data/lib/zucker/doc/zucker_doc.rb +32 -27
  101. data/lib/zucker/hash.rb +3 -3
  102. data/lib/zucker/info.rb +164 -0
  103. data/lib/zucker/ivars.rb +1 -1
  104. data/lib/zucker/kernel.rb +2 -4
  105. data/lib/zucker/sandbox.rb +7 -3
  106. data/lib/zucker/spec/D_spec.rb +15 -7
  107. data/lib/zucker/spec/aliases_spec.rb +3 -24
  108. data/lib/zucker/spec/array2proc_spec.rb +5 -1
  109. data/lib/zucker/spec/array_spec.rb +1 -1
  110. data/lib/zucker/spec/binding_spec.rb +4 -2
  111. data/lib/zucker/spec/blank_spec.rb +1 -1
  112. data/lib/zucker/spec/class2proc_spec.rb +1 -1
  113. data/lib/zucker/spec/egonil_spec.rb +1 -1
  114. data/lib/zucker/spec/enumerable_spec.rb +1 -1
  115. data/lib/zucker/spec/hash2proc_spec.rb +1 -1
  116. data/lib/zucker/spec/hash_spec.rb +10 -3
  117. data/lib/zucker/spec/info_spec.rb +8 -0
  118. data/lib/zucker/spec/iterate_spec.rb +1 -1
  119. data/lib/zucker/spec/ivars_spec.rb +1 -1
  120. data/lib/zucker/spec/kernel_spec.rb +1 -7
  121. data/lib/zucker/spec/mcopy_spec.rb +1 -1
  122. data/lib/zucker/spec/mm_spec.rb +4 -2
  123. data/lib/zucker/spec/regexp2proc_spec.rb +1 -1
  124. data/lib/zucker/spec/sandbox_spec.rb +22 -3
  125. data/lib/zucker/spec/spec_helper.rb +18 -0
  126. data/lib/zucker/spec/square_brackets_for_spec.rb +1 -1
  127. data/lib/zucker/spec/string_spec.rb +7 -7
  128. data/lib/zucker/spec/unary_spec.rb +1 -1
  129. data/lib/zucker/spec/union_spec.rb +8 -6
  130. metadata +207 -131
  131. data/lib/zucker/doc/meta.yaml +0 -4
@@ -0,0 +1,498 @@
1
+ # Ruby 1.9, encoding: utf-8
2
+ # creates the documentation for Zucker
3
+
4
+ require 'yaml'
5
+ require 'coderay'
6
+
7
+ class ZuckerDoc
8
+ PACKAGES = %w|default debug|
9
+ ORDER = %w|summary why methods info spec source versions|
10
+ DESCRIPTIONS = {
11
+ 'summary' => 'Summary',
12
+ 'why' => 'Why?',
13
+ 'methods' => 'Methods/Usage',
14
+ 'info' => 'Further information',
15
+ 'spec' => 'Specification',
16
+ 'source' => 'Source',
17
+ 'versions' => 'Compatibility',
18
+ 'authors' => 'Authors',
19
+ }
20
+
21
+ # template vars
22
+ @version = 2
23
+
24
+ class << self
25
+ def generate(path = '../')
26
+ @path = path
27
+
28
+ cubes = Dir[ File.join(path, 'desc', '*') ].inject({}) do |res, cube_file; a|
29
+ a = YAML.load_file cube_file
30
+ if a.instance_of? Hash
31
+ res.merge a
32
+ else
33
+ res
34
+ end
35
+ end
36
+
37
+ output_path = File.join(path, 'doc', 'zucker_doc.html')
38
+
39
+ result = DATA.read
40
+
41
+ cubes_html = PACKAGES.map{ |pkg_name|
42
+ package pkg_name, cubes.select{|name, hash| hash['package'] == pkg_name }
43
+ }.join
44
+
45
+ # insert cubes
46
+ result.sub! '....', cubes_html
47
+ # substitute vars
48
+ result.gsub! /\.\.([a-z]+)\.\./i do eval "@#$1" end
49
+ # code needs to be codish ;)
50
+ result.gsub! /⇧(.+?)⇧/, '<code>\1</code>'
51
+ # strong
52
+ result.gsub! /●(.+?)●/, '<strong>\1</strong>'
53
+ # hyper→links
54
+ result.gsub! /→(.+?)→(.+?)→/, '<a href="\2">\1</a>'
55
+
56
+ File.open output_path, 'w' do |file|
57
+ file.puts result
58
+ end
59
+ end
60
+
61
+ protected
62
+
63
+ def package(name, cubes)
64
+ cube_html = cubes.sort.map{ |name, hash|
65
+ cube name, hash
66
+ }.join
67
+
68
+ %{
69
+ <h2 title="require 'zucker/#{name}'">Cubes[#{name}]</h2>
70
+ <div class="cubes">
71
+ #{cube_html}
72
+ </div> }
73
+ end
74
+
75
+ def cube(name, hash)
76
+ @cube_name = name
77
+ %{ <h3 title="require 'zucker/#{name}'">#{ name }</h3>
78
+ <table class="cube_table"
79
+ id="#{ name }_cube"
80
+ title="require 'zucker/#{name}'"> } +
81
+
82
+ ORDER.map{ |th|
83
+ if th == 'spec' ||
84
+ th == 'source' ||
85
+ td = hash[th]
86
+
87
+ "<tr><th>#{ DESCRIPTIONS[th] }</th>" +
88
+ " <td>#{ send th, td }</td></tr>"
89
+ end
90
+ }.join +
91
+ '</table>'
92
+ end
93
+
94
+ def methods(m)
95
+ m.map{ |name, usage|
96
+ "<h5>#{name}</h5>" +
97
+ "<pre class=\"usage source\" style=\"display:block\">#{ syntax_highlight usage }</pre>"
98
+ }.join
99
+ end
100
+
101
+ def info(i)
102
+ convert_html_chars i.join '<br/>'
103
+ end
104
+
105
+ def authors(a)
106
+ a.map{ |author|
107
+ author +
108
+ ( (tmp = @meta[author]) ? " | #{ tmp }" : '' )
109
+ }.join '<br/>'
110
+ end
111
+
112
+ def why(w)
113
+ if w.is_a? Array
114
+ w = w.map{|e| "<p>#{e}</p>"}.join
115
+ end
116
+ convert_html_chars w
117
+ end
118
+
119
+ def summary(s)
120
+ convert_html_chars s
121
+ end
122
+
123
+ def versions(v)
124
+ v.join ', '
125
+ end
126
+
127
+ def spec(s)
128
+ source_helper(:spec, File.join( @path, 'spec/' ), '_spec')
129
+ end
130
+
131
+ def source(s)
132
+ source_helper(:source, @path)
133
+ end
134
+
135
+ def source_helper(kind, file_prefix, suffix='')
136
+ %{ <span id="show_#{@cube_name}_#{kind}">(<a href="javascript:show('#{@cube_name}_#{kind}')">show</a>)</span>
137
+ <pre class="source" id="#{@cube_name}_#{kind}">#{
138
+ get_source_file( File.join file_prefix, ( @cube_name + suffix + '.rb' ) )
139
+ }</pre> }
140
+ end
141
+
142
+ def get_source_file(filename)
143
+ if File.file? filename
144
+ syntax_highlight( File.read(filename).strip )
145
+ else
146
+ '<em>FIXME: missing</em>'
147
+ end
148
+ end
149
+
150
+ def syntax_highlight(string)
151
+ #convert_html_chars
152
+ CodeRay.scan(string, :ruby).html
153
+ end
154
+
155
+ def convert_html_chars(string, protect_spaces = false)
156
+ string = string.to_s.gsub( "\n", '<br/>' )
157
+
158
+ if protect_spaces
159
+ string.gsub(' ',' ')
160
+ else
161
+ string
162
+ end
163
+ end
164
+ end
165
+ end
166
+
167
+ ZuckerDoc.generate *ARGV
168
+
169
+ __END__
170
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
171
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
172
+
173
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
174
+ <head>
175
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
176
+
177
+ <title>Ruby Zucker ..version..</title>
178
+ <script type="text/javascript">
179
+ var show = function(snippet){
180
+ document.getElementById( snippet ).style.display = 'block'
181
+ if( document.getElementById( 'show_'+snippet ) ){
182
+ document.getElementById( 'show_'+snippet ).style.display = 'none'
183
+ }
184
+ }
185
+ </script>
186
+ <style type="text/css">
187
+ body{
188
+ background-color:#aaa;
189
+ color:#111;
190
+ font-family:sans-serif;
191
+ }
192
+
193
+ #world{
194
+ background:#fff;
195
+ }
196
+
197
+ h1, h2, h3, h4, h5, h6{
198
+ margin:0px;
199
+ padding:0px;
200
+ }
201
+
202
+ h1{
203
+ color:#222;
204
+ text-align:center;
205
+ padding:0.5em;
206
+ }
207
+ h2{
208
+ margin-left:0.5em;
209
+ margin-top:0.8em;
210
+ margin-bottom:0.5em;
211
+ }
212
+
213
+ th{
214
+ width:200px;
215
+ color:#444;
216
+ }
217
+
218
+ p{
219
+ margin:0px;
220
+ margin-bottom:0.5em;
221
+ }
222
+
223
+ p.text{
224
+ margin-left:1.5em;
225
+ margin-right:1em;
226
+ }
227
+
228
+ code{
229
+ }
230
+
231
+ .scode{
232
+ display:block;
233
+ margin:0.8em;
234
+ # margin-right:1.8em;
235
+ padding:0.5em;
236
+ border:1px solid black;
237
+ background:#eee;
238
+ }
239
+
240
+ #.cube_table{
241
+ # display:none;
242
+ #}
243
+ .cubes{
244
+ margin:0px;
245
+ margin-left:1.5em;
246
+ margin-right:1em;
247
+ }
248
+
249
+ a{
250
+ color:#111;
251
+ }
252
+
253
+ table{
254
+ margin:0.8em;
255
+ margin-top:0.2em;
256
+ padding:0.2em;
257
+ border:1px solid #111;
258
+ background:#eee;
259
+ overflow:auto;
260
+ display:block;
261
+ }
262
+
263
+ th{
264
+ text-align:left;
265
+ vertical-align:top;
266
+ padding-right:3em;
267
+ }
268
+
269
+ td{
270
+ width:100%;
271
+ }
272
+
273
+ li{
274
+ list-style:none;
275
+ }
276
+
277
+
278
+ #foot{
279
+ text-align:left;
280
+ padding:0.3em;
281
+ font-size:70%
282
+ }
283
+ #foot, #foot a{
284
+ color:#444;
285
+ }
286
+ #smile{
287
+ font-size:150%;
288
+ float:right;
289
+ }
290
+ #smile a{
291
+ text-decoration:none;
292
+ }
293
+
294
+ .small{
295
+ font-size:70%;
296
+ }
297
+
298
+ code, pre{
299
+ font-face:mono;
300
+ margin:0px;
301
+ padding:0px;
302
+ }
303
+
304
+ .source{
305
+ display:none;
306
+ width:98%;
307
+ padding: 3px 5px;
308
+ overflow: auto;
309
+ font-size: 12px;
310
+ background-color: #f8f8f8;
311
+ border:1px solid #005;
312
+ border: 1px solid silver;
313
+ font-family: 'Courier New', 'Terminal', monospace;
314
+ color: #000;
315
+ }
316
+
317
+ #/*railscasts*/
318
+ #.source .an { color:#E7BE69 } /* html attribute */
319
+ #.source .c { color:#BC9358; font-style: italic; } /* comment */
320
+ #.source .ch { color:#509E4F } /* escaped character */
321
+ #.source .cl { color:#FFF } /* class */
322
+ #.source .co { color:#FFF } /* constant */
323
+ #.source .fl { color:#A4C260 } /* float */
324
+ #.source .fu { color:#FFC56D } /* function */
325
+ #.source .gv { color:#D0CFFE } /* global variable */
326
+ #.source .i { color:#A4C260 } /* integer */
327
+ #.source .il { background:#151515 } /* inline code */
328
+ #.source .iv { color:#D0CFFE } /* instance variable */
329
+ #.source .pp { color:#E7BE69 } /* doctype */
330
+ #.source .r { color:#CB7832 } /* keyword */
331
+ #.source .rx { color:#A4C260 } /* regex */
332
+ #.source .s { color:#A4C260 } /* string */
333
+ #.source .sy { color:#6C9CBD } /* symbol */
334
+ #.source .ta { color:#E7BE69 } /* html tag */
335
+ #.source .pc { color:#6C9CBD } /* boolean */
336
+
337
+ # http://coderay.rubychan.de/
338
+ .source pre { margin: 0px; }
339
+
340
+ span.source { white-space: pre; border: 0px; padding: 2px; }
341
+
342
+ table.source { border-collapse: collapse; width: 100%; padding: 2px; }
343
+ table.source td { padding: 2px 4px; vertical-align: top; }
344
+
345
+ .source .line_numbers, .source .no {
346
+ background-color: #def;
347
+ color: gray;
348
+ text-align: right;
349
+ }
350
+ .source .line_numbers a:target, .source .no a:target { color: blue; }
351
+ .source .line_numbers .highlighted, .source .no .highlighted { color: red; }
352
+ .source .no { padding: 0px 4px; }
353
+ .source .code { width: 100%; }
354
+ .source .code pre { overflow: auto; }
355
+
356
+ .source .debug { color:white ! important; background:blue ! important; }
357
+
358
+ .source .an { color:#007 }
359
+ .source .at { color:#f08 }
360
+ .source .av { color:#700 }
361
+ .source .bi { color:#509; font-weight:bold }
362
+ .source .c { color:#888; }
363
+ .source .c .dl { color:#444; }
364
+ .source .c .ch { color:#444; }
365
+
366
+ .source .ch { color:#04D }
367
+ .source .ch .k { color:#04D }
368
+ .source .ch .dl { color:#039 }
369
+
370
+ .source .cl { color:#B06; font-weight:bold }
371
+ .source .cm { color:#A08; font-weight:bold }
372
+ .source .co { color:#036; font-weight:bold }
373
+ .source .cr { color:#0A0 }
374
+ .source .cv { color:#369 }
375
+ .source .de { color:#B0B; }
376
+ .source .df { color:#099; font-weight:bold }
377
+ .source .di { color:#088; font-weight:bold }
378
+ .source .dl { color:black }
379
+ .source .do { color:#970 }
380
+ .source .dt { color:#34b }
381
+ .source .ds { color:#D42; font-weight:bold }
382
+ .source .e { color:#666; font-weight:bold }
383
+ .source .en { color:#800; font-weight:bold }
384
+ .source .er { color:#F00; background-color:#FAA }
385
+ .source .ex { color:#C00; font-weight:bold }
386
+ .source .fl { color:#60E; font-weight:bold }
387
+ .source .fu { color:#06B; font-weight:bold }
388
+ .source .gv { color:#d70; font-weight:bold }
389
+ .source .hx { color:#058; font-weight:bold }
390
+ .source .i { color:#00D; font-weight:bold }
391
+ .source .ic { color:#B44; font-weight:bold }
392
+
393
+ .source .il { background-color: hsla(0,0%,0%,0.1); color: black }
394
+ .source .il .idl { font-weight: bold; color: #666 }
395
+ .source .idl { font-weight: bold; background-color: hsla(0,0%,0%,0.1); color: #666; }
396
+
397
+ .source .im { color:#f00; }
398
+ .source .in { color:#B2B; font-weight:bold }
399
+ .source .iv { color:#33B }
400
+ .source .la { color:#970; font-weight:bold }
401
+ .source .lv { color:#963 }
402
+ .source .ns { color:#707; font-weight:bold }
403
+ .source .oc { color:#40E; font-weight:bold }
404
+ .source .op { }
405
+ .source .pc { color:#058; font-weight:bold }
406
+ .source .pd { color:#369; font-weight:bold }
407
+ .source .pp { color:#579; }
408
+ .source .ps { color:#00C; font-weight:bold }
409
+ .source .pt { color:#074; font-weight:bold }
410
+ .source .r, .kw { color:#080; font-weight:bold }
411
+
412
+ .source .ke { color: #808; }
413
+ .source .ke .dl { color: #606; }
414
+ .source .ke .ch { color: #80f; }
415
+ .source .vl { color: #088; }
416
+
417
+ .source .rx { background-color:hsla(300,100%,50%,0.1); }
418
+ .source .rx .k { color:#808 }
419
+ .source .rx .dl { color:#404 }
420
+ .source .rx .mod { color:#C2C }
421
+ .source .rx .fu { color:#404; font-weight: bold }
422
+
423
+ .source .s { background-color:hsla(0,100%,50%,0.1); }
424
+ .source .s .k { color: #D20; }
425
+ .source .s .ch { color: #b0b; }
426
+ .source .s .dl { color: #710; }
427
+
428
+ .source .sh { background-color:hsla(120,100%,50%,0.1); }
429
+ .source .sh .k { color:#2B2 }
430
+ .source .sh .dl { color:#161 }
431
+
432
+ .source .sy { color:#A60 }
433
+ .source .sy .k { color:#A60 }
434
+ .source .sy .dl { color:#630 }
435
+
436
+ .source .ta { color:#070 }
437
+ .source .ts { color:#D70; font-weight:bold }
438
+ .source .ty { color:#339; font-weight:bold }
439
+ .source .v { color:#036 }
440
+ .source .xt { color:#444 }
441
+
442
+ .source .ins { background: hsla(120,100%,50%,0.2) }
443
+ .source .del { background: hsla(0,100%,50%,0.2) }
444
+ .source .chg { color: #aaf; background: #007; }
445
+ .source .head { color: #f8f; background: #505 }
446
+ .source .head .filename { color: white; }
447
+
448
+ .source .ins .eye { background-color: hsla(120,100%,50%,0.2) }
449
+ .source .del .eye { background-color: hsla(0,100%,50%,0.2) }
450
+
451
+ .source .ins .ins { color: #080; background:transparent; font-weight:bold }
452
+ .source .del .del { color: #800; background:transparent; font-weight:bold }
453
+ .source .chg .chg { color: #66f; }
454
+ .source .head .head { color: #f4f; }
455
+
456
+
457
+
458
+ </style>
459
+ </head>
460
+ <body>
461
+ <div id="world">
462
+
463
+ <h1>Ruby Zucker ..version..</h1>
464
+ <h2>What is it?</h2>
465
+ <p class="text">Zucker is the German word for sugar (<a href="http://www.forvo.com/word/zucker/">pronunciation</a>). It adds syntactical sugar in the form of independent, small scripts that make Ruby even more sweet. Read <a href="http://rbjl.net/32-introducing-ruby-zucker-a-new-syntactical-sugar-gem">this blog post</a> for a little introduction.</p>
466
+
467
+ <h2>Install</h2>
468
+ <p class="text">
469
+ <code class="scode">gem install zucker # might need sudo</code>
470
+ </p>
471
+
472
+ <h2>Usage / Organisation</h2>
473
+ <p class="text">The gem consists of many small snippets, called <em>cubes</em>, which are bundled in <em>packages</em>. Currently, there are two packages available: <strong>default</strong> and <strong>debug</strong>. You can use a package be requiring it in this way:
474
+ <code class="scode">require 'zucker/default'</code>
475
+ and
476
+ <code class="scode">require 'zucker/debug'</code>
477
+
478
+ Since there aren't any dependencies within the gem, you could also pick only the cubes you want:
479
+
480
+ <code class="scode">require 'zucker/egonil'</code>
481
+ </p>
482
+
483
+ <p class="text">You can also lock your require to a specific version of Zucker by simply putting the version before the cube name in this way:
484
+ <code>require 'zucker/1/egonil'</code>. Future releases of the gem will include all previous (main) versions, so the behaviour of these directly required cubes will not change (except for critical bugs).</p>
485
+
486
+ ....
487
+ <br/>
488
+ </div>
489
+ <div id="foot">
490
+ <div id="smile"><a href="http://rbjl.net">J-_-L</a></div>
491
+ This is the Ruby Zucker ..version.. documentation.
492
+ The current version is always available at <a href="http://rubyzucker.info">rubyzucker.info</a>.
493
+ Gem source can be found at <a href="http://github.com/janlelis/zucker">github</a>.
494
+ </div>
495
+
496
+ </body>
497
+ </html>
498
+