zucker 0.9 → 1

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