zucker 9 → 10

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.
File without changes
data/CHANGELOG CHANGED
@@ -1,75 +1,81 @@
1
+ 2011-04-29 | Zucker 10
2
+ * doc/spec tweaks
3
+ * make test.rubygems.org-testable
4
+ * fix zucker 9 permission issue
5
+
6
+
1
7
  2011-01-22 | Zucker 9
2
- * removed history versions (sorry, it caused too much gem/rdoc troubles)
8
+ * remove history versions (sorry, it caused too much gem/rdoc troubles)
3
9
  * add file cube: File.delete! and File.gsub
4
10
  * debug pack improvements
5
11
  * binding: typos + return nil
6
12
  * cc: support for ripl + return nil
7
13
  * mm: also show eigenclass for modules + nicer displaying + return nil
8
14
  * added Regexp#visualize
9
- * removed optional sandbox param
10
- * renamed xxx2proc to xxx_to_proc
11
- * changed rakefile/rspec/gemspec structure
15
+ * remove optional sandbox param
16
+ * rename xxx2proc to xxx_to_proc
17
+ * change rakefile/rspec/gemspec structure
12
18
  * more minor fixes and improvements
13
19
 
14
20
 
15
21
  2010-10-06 | Zucker 8
16
- * fixed a little alias_for bug
17
- * disabled rdoc creation when installing (in favour of the custom docs)
18
- * changed Binding#inspect to Binding.variables (was too verbose and dangerous)
22
+ * fix a little alias_for bug
23
+ * disable rdoc creation when installing (in favour of the custom docs)
24
+ * change Binding#inspect to Binding.variables (was too verbose and dangerous)
19
25
 
20
26
 
21
27
  2010-10-03 | Zucker 7
22
- * fixed critical OS.windows? bug
28
+ * fix critical OS.windows? bug
23
29
 
24
30
 
25
31
  2010-10-03 | Zucker 6
26
32
  * no new cubes
27
33
  * bugfix for OS.posix?
28
34
  * small changes + bugfixes + doc improvements
29
- * added two user methods to Info
30
- * changed egonil semantics ( using method_missing, see http://rbjl.net/26/catch_nil.rb )
35
+ * add two user methods to Info
36
+ * change egonil semantics ( using method_missing, see http://rbjl.net/26/catch_nil.rb )
31
37
  * bugfix for vv
32
38
 
33
39
 
34
40
  2010-09-04 | Zucker 5
35
- * debug edition - added two debug helpers: oo (output line, method, file) and cc (output method callstack)
36
- * renamed cube D to dd add added more debug aliases (for mm and binding)
37
- * fixed __SPECIAL_VARS__ in info and kernel cube and some minor bugfixes
41
+ * debug edition - add two debug helpers: oo (output line, method, file) and cc (output method callstack)
42
+ * rename cube D to dd add add more debug aliases (for mm and binding)
43
+ * fix __SPECIAL_VARS__ in info and kernel cube and some minor bugfixes
38
44
  * Zucker.activate_more_aliases! option
39
- * added Hash#&
40
- * added aliases: File.filename (for basename), Dir.join and Dir.split (for File.join, split)
41
- * added a flexible requiring mechansim in zucker.rb (no api changes)
42
- * restructered packages
43
- * added rake tasks for releasing
44
- * improved RubyVersion constant (cleaner and more flexible)
45
+ * add Hash#&
46
+ * add aliases: File.filename (for basename), Dir.join and Dir.split (for File.join, split)
47
+ * add a flexible requiring mechansim in zucker.rb (no api changes)
48
+ * restructure packages
49
+ * add rake tasks for releasing
50
+ * improve RubyVersion constant (cleaner and more flexible)
45
51
 
46
52
 
47
53
  2010-09-01 | Zucker 4
48
- * fixed Binding#inspect
49
- * added RubyEngine constant
50
- * added RubyVersion constant
51
- * added OS constant
52
- * added q debug method (like p but on one line)
53
- * added String#-
54
+ * fix Binding#inspect
55
+ * add RubyEngine constant
56
+ * add RubyVersion constant
57
+ * add OS constant
58
+ * add q debug method (like p but on one line)
59
+ * add String#-
54
60
 
55
61
 
56
62
  2010-08-14 | Zucker 3
57
- * added tap cube
58
- * added Object#not
59
- * added alias_for for an alternative alias syntax
60
- * added String#constantize (improved AS version)
61
- * improved Info module
62
- * made Array#sum Rails compatibile
63
- * improved docs
64
- * changed directory layout (no changes for requiring)
63
+ * add tap cube
64
+ * add Object#not
65
+ * add alias_for for an alternative alias syntax
66
+ * add String#constantize (improved AS version)
67
+ * improve Info module
68
+ * make Array#sum Rails compatibile
69
+ * improve docs
70
+ * change directory layout (no changes for requiring)
65
71
  * more small changes
66
72
 
67
73
 
68
74
  2010-08-08 | Zucker 2
69
- * added info cube
70
- * added chaining for array2proc
71
- * fixed Hash.zip
72
- * fixed instance_variables_from binding for 1.9
75
+ * add info cube
76
+ * add chaining for array2proc
77
+ * fix Hash.zip
78
+ * fix instance_variables_from binding for 1.9
73
79
  * more specs
74
80
 
75
81
 
data/Rakefile CHANGED
@@ -16,8 +16,10 @@ task 'doc' do
16
16
  end
17
17
 
18
18
  task 'default' => 'spec'
19
+ task 'test' => 'spec'
19
20
  RSpec::Core::RakeTask.new('spec') do |t|
20
21
  t.ruby_opts = "-r " + File.join(@path, 'spec', 'spec_helper')
22
+ t.rspec_opts = "--color"
21
23
 
22
24
  if RUBY_VERSION < '1.9'
23
25
  t.pattern = File.join(@path, 'spec', '*_spec.rb')
@@ -49,7 +51,7 @@ task :gemspec do
49
51
  end
50
52
 
51
53
  # release
52
- desc 'run specs, build doc, bump version, set date, copy version directories and add these changes to git'
54
+ desc 'run specs, build doc, bump version, set date and add these changes to git'
53
55
  task 'prepare_release' => %w[spec] do # run specs
54
56
  # really want to release?
55
57
  print 'Do you really want to release? ...then enter release: '
@@ -62,12 +64,12 @@ task 'prepare_release' => %w[spec] do # run specs
62
64
  zucker_rb.sub! /DATE\s*=.*$/, "DATE = '#{Date.today}'"
63
65
  File.open 'lib/zucker.rb','w' do |f| f.write zucker_rb end
64
66
 
65
- `rake doc`
67
+ system 'rake doc'
66
68
 
67
69
  # add changes to git and tag
68
- `git add .`
69
- `git commit -m 'Ruby Zucker #@v :)'`
70
- `git tag -a v#@v -m 'Ruby Zucker #@v :)'`
70
+ system 'git add .'
71
+ system "git commit -m 'Ruby Zucker #@v :)'"
72
+ system "git tag -a v#@v -m 'Ruby Zucker #@v :)'"
71
73
 
72
74
  # done
73
75
  puts "prepared Zucker #@v gem release"
@@ -75,8 +77,7 @@ end
75
77
 
76
78
  desc 'prepare_release, build gem, and push it to git and display rubygems push command'
77
79
  task 'release' => %w[gem] do
78
- `git push origin master`
79
- `git push origin master --tags`
80
- last_gem = Dir['pkg/zucker-*.gem'].sort[-1] # TODO read version from lib/zucker.rb for zucker-10
81
- puts "gem push pkg/#{last_gem}"
80
+ system 'git push origin master'
81
+ system 'git push origin master --tags'
82
+ puts "gem push pkg/zucker-#{ Zucker::VERSION }.gem"
82
83
  end
@@ -1,8 +1,10 @@
1
1
  blank:
2
- summary: Does pretty the same as in ActiveSupport (Every object can be asked if it is blank).
2
+ summary: Does pretty the same as in ActiveSupport (Every object can be asked if it is blank or present).
3
3
  why: It's too familiar ;)
4
4
  methods:
5
- Object#blank?: "'an object'.blank? # => false"
5
+ Object#blank?:
6
+ - "'an object'.blank? # => false"
7
+ - "nil.present? # => false"
6
8
  versions:
7
9
  - 1.9
8
10
  - 1.8
@@ -1,14 +1,13 @@
1
1
  file:
2
2
  summary: Extensions for ⇧File⇧.
3
3
  methods:
4
- File#gsub: |
5
- File.gsub 'some_filename', {
4
+ File.gsub: |
5
+ File.gsub 'some_filename', # will read the file and substitute the hash keys with their values
6
6
  /hi/ => 'cu',
7
- /\d/ => proc do ($&.to_i+1).to_s end
8
- } # will read the file and substitute the hash keys with their values
9
- File#delete!: "File.delete! 'some_filename' # will delete the file, don't care if it exist."
7
+ /\d/ => proc{ |m| (m.to_i+1).to_s }
8
+ File.delete!: "File.delete! 'some_filename' # will delete the file, don't care if it exist."
10
9
  info:
11
- - "Idea for ⇧.File#delete!⇧. from sugar-high."
10
+ - "Idea for File.delete!⇧ from sugar-high."
12
11
  versions:
13
12
  - 1.9
14
13
  - 1.8
@@ -1,5 +1,5 @@
1
1
  hash:
2
- summary: Some sugar for dealing with hashs.
2
+ summary: Some sugar for dealing with hashes.
3
3
  methods:
4
4
  Hash.zip: "Hash.zip [1,2,3], [4,5,6] # => {1=>4, 2=>5, 3=>6}"
5
5
  Hash#<<: |
@@ -4,9 +4,9 @@ kernel:
4
4
  methods:
5
5
  activate_warnings!: "activate_warnings! # sets $VERBOSE to 1"
6
6
  deactivate_warnings!: "deactivate_warnings! # sets $VERBOSE to 0"
7
- executed_directly?, standalone?: "executed_directly? # checks, if the current file is run directly -> true"
7
+ executed_directly?, directly_executed, standalone?: "executed_directly? # checks, if the current file is run directly -> true"
8
8
  library?: "library? # checks, if the current file is run directly -> false"
9
- irb?: "irb? # returns false if not called from IRB"
9
+ irb?: "irb? # returns false if not called from IRB or RIPL"
10
10
  ignore_sigint!: "ignore_sigint! # blocks CTRL+C"
11
11
  versions:
12
12
  - 1.9
@@ -1,5 +1,5 @@
1
1
  not:
2
- summary: ⇧not⇧ returns an object on which all methods are redirected to it's receiver object, but returns inverted boolean.
2
+ summary: ⇧not⇧ returns an object on which all methods are redirected to it's receiver object, but returns the inverted boolean.
3
3
  why: Better readability.
4
4
  methods:
5
5
  Object#not: |
@@ -1,5 +1,5 @@
1
1
  qq:
2
- summary: The ⇧q⇧ method does the same like ⇧p⇧, but puts out multiple arguments on the same line.
2
+ summary: The ⇧q⇧ method does the same like ⇧p⇧, but outputs multiple arguments on the same line.
3
3
  methods:
4
4
  q, qq: |
5
5
  q "zucker", '', {6=>7}, 5, 2.3, :o # outputs "zucker" "" {6=>7} 5 2.3 :o
@@ -10,3 +10,4 @@ sandbox:
10
10
  versions:
11
11
  - 1.9
12
12
  - 1.8
13
+ - "Does not work on JRuby, since $SAFE is not supported there"
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
7
7
 
8
- <title>Ruby Zucker 9</title>
8
+ <title>Ruby Zucker 10</title>
9
9
  <script type="text/javascript">
10
10
  var show = function(snippet){
11
11
  document.getElementById( snippet ).style.display = 'block'
@@ -281,10 +281,9 @@ table.source td { padding: 2px 4px; vertical-align: top; }
281
281
  <body>
282
282
  <div id="world">
283
283
  <img class="rubylogo" alt="ruby" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAADAVgAAwFYBgeEOVwAAAAd0SU1FB9oIHxY1C2ozXR0AABglSURBVGjevZt/sGVVdec/a+9z7q/3o1830N00DQiCQkoQiPgj0UiG8UcyMZNSC82PkdIEqYlaISkTMTPlVEw5IdHRqKEURQ2JSZwaiYijJimnxohMVH42Aml+2dD9ul//fP1+9Lv3nnP23mv+2Puce25DTOI4dtepe+5+7913vnut9V1rfdd+wo/wn/cea+3UWlBFIFfVDOdCsbi/Gj7+CMWePRQH9lEsLlItLjLav0h1fAX1ivqKUDq08njnkNKzYZXDsyb86qoH4KNzXd6xXjztGbIfBdAQAsYYjDFT66q6E7gQeJWIBDXmmKpfN1k2kl4P040X3S6m08FYIyH4TBEQASMYhGGOGWY4CSx+fC5fqZD971gv9gH8wVyHd6+XPxrAJwMVEVR1AFwBnFsdWrrKrSy/TIcbSJ6Tb9tBftpWqiNHML0uptfH9vqYfh/b7+OzHPUBSZ9Ziae0gaGBwggKKBBU7vvAfOfDTuW+69eLBwDes9DjvStj5P8n0JOs+VzgZzcevP9la//wjZ8qnnjslHLP41QH9irjITbLpXP6TmZf+BJmf+Z1VBtjhg/uojx4kGJxkWJxL+X+RdzKKq5yjIoNxtWYEaqViJQqWolIpUZLRBxQij7shPf8l9XyVoDfme/8cAGrKiKTj6zKcpDl+U8A7167+1vP3vvhG7aNdj/UC8cOEdbWMYoai1gBAyoByXoZg4svZ+t7P0i1NuTEvXdTHDigxYH94pYO6OqeJ2Rt9RhOHUHRUkQqIsgK0VKNVBDBo1RC4eGX3rda/PUP1aVDCA1Y59yCMea/icjri4MHOrve/PrOxv13GQkBVLGgYkUUEQXUgBURmyk+KBv3/gMrf34TZ/zxZwiuUn9iXdzanD716INSrq8hBhTUC+JV8CISAA8SgBDfa0AkQLcSvfWdm3s//oHj43vtD5t9VfVqEe4MZfXj373urZ1d1/yHfLy4KEpQVRUUFCRo3BxF0BjbKIKJW4Dbv5fejz2fhStfLTo/5//+HW8T9QVWaGLVIQQRcSo4BI+oA7wgHsSJqFfEi+DQs1/YtbeaHxZYVRVV/RVfjG9e+tIX7P+69Fzd88nPSLCoN+AD4lTwCj5AUHABnCpVCDjVeHnBI5SHlykP7ENBN192uf25R77nxmc/xy1JT4/anq7Yvo5sV0vJ1YtRFaM1eyuogqog3oBHg4NXOyPnmf/XmG3l1euG+5665bvX/0b2nauv0o29B4QBGgK1J0NQNEhzT4AQhBAieB8UBwTimpYlAgLopnPOyd9w9y551s/8rPdB1QFOjHibKVmueZbpILM6a63OGqMDER0oOqOqfUV6Cr3A67Mf1KrGmCZmVfWGpb/50rt2f+D3OXrHXWr7iMlQFFFAohvX2wQqkCJYAyAxjoPEQsSn79f684tC/GioVJX9yXf9rs7Pz1cP3/bXmTqHqEqyakx9oBako6IW1U5QuqqUqFTwmh8I8Elgb3r4j37v1x7/2Ecoji2rGTTfJhLARGwRtMQLUWI4py8QAzMoBFGCghiQwQzVwQOUe76HXzkufvW4hrU1Offcs/PuS3/S3/2/v26NCKKqJMLyquJVqUB8ChWvigdV1efJD5p6VNUCn777umve9NRf3YIvKzWx/sEomPQqGkHXxk0FUiQfjSQlAoggAtZAhtKdm+P8W24jHDzEePfDhPUV9RsbEkZDfFloKEtOHF8p77lnlwkhZIholcA6jWxf84JX1KE4Vcl+QLCDcnXlv+56zzvf9MQtn1KJBhdCDDhJ4Bofq0HLxL0DIKIEFZoaScBg8F7pXXQZlBVrX/8a7thhfFWJL0t8VaovSglVQSjLziXP2u4feHKpHPnQcdHC6kIQp9CAVxWn4FQ1+9fmWVXdsrG49927b/zAbzxy06c0GyBojEqR6FdCtHAKVZDorpLWjLb3I7o3RjEIPihiYOYFL6HYt5e1Rx4iVI5QlfhyjK+chKokOKcagqhqdt7CQJ5aHxVHC9eJzI96EAfqUakUjaD1X1Z41KWiqu4sVpbf//BHbnjjwx/+mOYzzVNLHadNjMgkbmmvt9Y0enL8YRW8KBYwcwvMXfpC1u+7h40Di6gqwXvUh5SvFVUk5h5VUHNGP+8I+H2jSpyq9aBOg7jozuJV1Sn/vEu3wJ4H3Hz3u97+8sf+7K80n514oqHlytLgivGa3Ldel5Qka1efbJBiVFBRBhdcROfMszn2wRsoh0MQE39VBNi6QFUlwlY5zUpmu5l7dFj6SoP1oF6D+IC6+Lv89wXsE9jg/eXATd+89hcvfeJzn1M7mKQb04pXOYkCJdSxmjag/taanGsQyRuCARHLGde+nY1HH2H1u/djBjNo8ISg6WdroIEQd0GjteP6nKi9sGfYNQplGbQTonujYLrKIfP9LGuNwXt/mRhzy72/9zuX7vni59VkiMaYbcDWQMPEkKjGvFoDMy0eS1mIVP82rwSlf+55bPv3V7G++yFcUCrncS7gfbzie49L750P4n1ac47KeckC5uLc5KcYirEmmgAGylL2/XJtSj2v23Pbf7/wHz/9cfXOSWTSFLPEfFl7rOgEtCSXDTYlyHrtJGvXrioCroJL/vTzjJf2c/jv/hYnBql8HbPEcI33QUPkAdXa0uleJd6qOV/oGqFaVDIVGCgH/7kYvmzlsd3X7frQHzBeWReToSZhNNpKPzKxWuPerTitmbmNNMjE4gqEEZzzq29i7sLncfSOr3PwjrvpntYH7xPASezWKVI1VWqEVnxTE5oC8mxD3lPYozD7TBZukZSUa6vvvO9DNwz2/59d2pmLrY2RCdOqtpP0SexMy6otZq7Zub4Q8CNYuOi5XPyhTxCqiqX/+UUkQ13lhRZBtUGH9D6kstwn71JSiZoewyvSBc4IkPEMFq6ViuCqK7/3lS9d9dAtt2AHiG9ZVGQStzJdHrcWJ2xM25ptwALqIT9lhov+8CNI3sGPRvrEV77MqkFsUU2nNCJQTeC8xth3rcun9ViEEJUPYEcMq2kLt6UZNxrffMfv/hYuuYYJk/ijRT4hMXUNTmryqvPspFSmbvZVpzfgOb95Pae+/MrIDCLYhS1hVGIlT3lZwLYJkYk123tcFzsBsHUWEOgqZPH9snkm66rqm7523a+fvfzUEcXE9g4lxkurn23yqUzIp36AINOlZc3agZh+1IB3cMbP/zznv+23MNYiqiJZpjv+zSuCAfKUx226MomXIdbiJm2wkYnXTRU/aWPmAuTxUVayky2rqrPrSwc+sevPPqt5L7pybSlb76BACKmjaYEWJhavc1FoxW9opS8jsPmy53PZRz6F7fVxRw6jzikaZNull6kHutEjtE4G7eIm1KEVJp5Vf60N2Cp0tPGM1axt2fTvnV/4pdebQARrWkysEmMkq6untG5a5ESLjKY4zaSfIcZt78yzuPxPPkN3bp7R/ffihydAVUQDHTfO5hf6ZbUx6gASJMZhpxUeUxniaV3O5KXTAgysZidZ98eOPvzQW/ffdXdOlGWaEjEwuXwrblIVQ617aGu3tbWWJCx8AbNn7eTFN3+WhXOfw+pXb8evrCT3SF3rxgZbL7jQ7PvOvZg8CXYgpcRYtM3UYpIt6tjVk+r3fnLnFI0r2UnWvebBj9+4rWsNwyrGrCSr2lT6hbZrpXxcDwLETBcUQaNb1xYPY5g/90x+4k//Bwtbd3Dk5htxy0cRY8F70JRPg5dBt2tCSM+u0coBGDOJU1sDkRaJyYRLTKyuaNntRNbqdV9Zrh6/au2+e8xMp6PBBxmVFT7En/QCNoA3/4QXSdwUaTUPJEbGgB/DwnPO4aWfvY3u8RUOffT9uLU1xJimSkoxISKilhBUEK/Y0AKhOilHaf3ONmvX93OhaV7qCPCZqhJC6ANXrD344I58PNLZTkdS5ca4rGq9DZdIwpsJKNvugloNRNMwGAgONj33PF72l19E9jzB0uc+C95FfNGkkyotilzS7ebS39RnOByRVqV+jtBy30omKakuQupY64cJbwBrBjRLKsZLgOuLR3bTrUqZ7fc1VioxIIqywqFNCiDlZCsthraTelpqrSc9zMLzLuTlt3wBfeIJDnzyY2hZTlm16YIaeRMyVRnMzOiJjZFqC+xUzMoEZM0dSCw8TvUTnklc8iQQskS6ZwHijy/TFyF0u1EOT0wjQFFVuKj8TlQLmWhWjXalEy3LWthxxb/l5Z++lbWv/R37/vj9qHcNpWtt3aYpmPSMBhH1XlQadVcadbdNovV7nViz7yepsVW+7wkJMCIS54mZpTM/j5zYiD1Vq7oQie5dBcWbaN2awBqxLoGuhjC3YwvP/eWredHvf5DFm25k74f+EMnyBDYkdw6NhdvWJWln4itNsSt1bLbB1iQVdEKSmsEmN+GZloX31AJAUKgAsvlNdE7fgTl6FD2uDVGIkeYDigQ6mOg6NjF0lnJHOYadL76EF/7n93L2q1/DI+/6TZb+/DNIlqEiLRFg0vXQek+SswVkxkgwRowLKm3L1uTkdVLl1SQ26FiqEOiUOl0Gw/dqlw4CGwCd7afT27GTIssiiuVjiAjGSJN2jAjDssS36kgboEqMeOk7/iMvevd7GGzdzt2veQUr3/4Wkllwbqqpmn6apz2coGjXGGONqAatgTWW9q0cXHdL3a5grcFnCqU2la0REUH2CoRMNFAdOlyYXo/uGTvpnnXWFNWa5WNJSxasCEYMIrBRJNCAL2Hz2dt57a23s+3SywH41it/itX7741pJ4SmLZy0Fy3c+vQyKYa3SGYMQYIGxdQWngKbXDTPhV7Hoqq4LHK2AawxYqOOPDbGkK1+5XYoK6NlQff5l9E759moczGGJAkzy8sYEUxySUl7PSwDttvhlTd9VC+5+i0CaHHsCPdfc7Usf+fbKnku+FBDmMKkJ9eC+jTDiwp0DBoUiZ1xtHAbrE95vtuxjaFUAhaDtYIVk4wkDiA7cefXoXRGh0O0qph/6RVoUTQHTqKqEEGrd9Drkc/Osnnrds76hddyybW/Tj4YoKDl8rJ++y1v5vCXv0p3U0/E+zaOiVL7DH6tz3DjgYFI7Q/SjtsmHQH9riGzSfZJG5JnFiMGKwYbOah8w3hINrrnHgihg/OUS0vMverfsfmnr2T46G6Gjz3GeH4T+ZYthNGIzQsLmB076V9wIduvfAW20421b1mKBq/Ld90n993+ZUxPmBlVdEwUlXKTuEqnXFj06cF8kvWVTESMoGWseVRlkpNj3Bp6uYn1fZwz4QVyY+P5EhGsMQjJwuWJdRGRzQDu8d06fOgBmfvpV7Bw2lZmL74Et7JCKEtMntHZcipmdgaKAr8xpDq+jJaVaFmqjsey/I1vMkfO0AfW8IoiXQMdIxigmzYAVWnUHp3S6J+GWAWZERjHTCa1ZZ1Cr2MYdC2hFrhrOVWUkAldbBtwzESVK40g20DwxsrhW25m5sUvTZSoZIMB5DlaFlRL+6EoCFWFliValWhZoWUp6ir23v5VOmZAYEyBFyHy1SgVLEOv2KheaN9ANwFoqR9tQVMA8aA9YhzXfbBX6OSGftdGRVOY2iFEGWXKpmDBxDhOPRCZK5wA2xDFWMPjf/O3nPqtO+mdchpaFmhZEqoyAawiyKqCor1e4k5scPDBXeTdPhk5XktUdMpNNZ3DqCAMfaTrGUF6guZ1ZSrTVhdB+oo60jhZEZsJ/a5F0Elf3gCPv2loAh0sagQjpkgtNVlZFUYgWlgDh0vHN9/4Zq64+aO44UYDmCJZtHJxI6oKqpLgKgiBxbsextJFiSOTTCxxnp8k2TQLCooaMCRlcU1hOYAVdLMQcsVYmRhNY3FjuqBjYpYbdC3WaEs7q/co8rggFOLIbLSwEbNfREbRpatSBNlqgMPDcWwWVtc4dscdDDYvEIpxBOocOId6DyGk13hvjOHQ7icxmUXxBFEEi8E18pBPFZHRRpePdbegNhKRHEq9a6aEzQLddMZFQE8xyH6g37VkRlLcSgJLI3yLCl4CFsEYGxla5IDAKLl0aRC2VUFZLUpMsJBZdn/+di557atwwxH4gGqIr8EnKcSjzqMhYARWjxxHLOlBQnIswSRCMTqtMrbkXGlJRQqIU+xS0gK6gswo0hfodyx5ZmI5Kqkcm9Zx02anD7ZCbjIE2S+iEXAIXhC2bpSBwgdmyAgG1g4fYeXxPQzmBtGNQ4hTgPRKCM2Jlf37l1NNXJeAmvJonKNqKx2Fk0CfpH9JSwKTIMiJAIWgz5Ku7MBwTB1BYkyohulatLWPkj4kNxYR9lNbWAQpvG49XoVYLzf6sbD44KNccNH5lKMRWls1ga0BWwOH9y1H67ZmCvX/MokE4aTJwMnaci3jtrsjrzBnDDttR3qSYVToeMNBW+KTcKOmrVdPmvUgsKGOU+wMii5esu/xAiAbOjVlUOvi5F0lxMY/oKwsH2d1cT/dPEM1TM1niYMrghHGpUtUrKiEBixpCDbV1UgLHE8X3po8C8yL5YysSy4Wm/LpZsmZocMTuo4zKXMnL6oJSyWS2JoW2jWZOMKJ5jTtoXEklngYNR4FTPM6Cldx6OgKZ5y6CZeGWu1JngBH10qCD1OurK0OqJZ2aZeEJ1nYt2rj2v03GcuZWZ9cDLaumMQgRpgTy8VmCw/4ZZyEiRLRmrCrBta0kF6WUah3DWBtKltJc9SUPSWehFkbjtg87jejmBptSOdIjx0bqU5mDy3Q092AZ9qy7UlE3eLVUs0Wm3NG1sMa23RoVhLrCqk+NrzIbucBd5TVUESikommJcSWNQjkJqsmgJUgInuBswSRSRzGZLg6HHNs9QRz/Q7BN027qKqGoDgfRNORg+hKbdgTPbop/NsTvtZ7p9ARYXPWYWfWT5qZxZgE2JqUagQrMd0YDC/u7eD+8jBL1Qls62CJJlevCDpruw1gI0IFfLWO+5BOwIUUxy54NoqCsqioyoqyKCmLkqqsGA4rfEgRKFMwm55XmHia1tM9pjWpIsC8zTi7M2BnPkCMkFlLZg2ZseTWkosls5bcZOTGkomNr9bygsEOzu9uaboTEY0jLQ0UEqosy6vWiXiJgIVrCdFG9clWgGCEo+OCrggZBtWgQeOhwOHIxN5etMXLYcrC7elAfUKgid0kiu3Mu5yW9eiY2Lu2u5y6n81EmtP1jZun+0wsl82ezty4y73DpXreJV6UoYSy1+tPAL91ZcQnF/pL7alfw5oIQZRSPevjihlJrX90Z62qTl0IabuEnxJsWqMIMZNY9Qo9YzinM8OMzZre1aRi35jYx1oma9bYRnmx9ea0Nub5s6czk3X5xuqTGMBrYIOq6vf75dTfPATRx0W5DcwveEkWCzEX1xZaCRWZl0TOKiGY9LV4ZoqWlTnJudvNvZUoN52e9zizM4hivknWSgAbwImZjU1rSPO9JlnctlhcRbhgYTunzm7iiwcewIXAmi/W8tn5tSaGP7G5z7XHx8si3ORh5OJBTLygTkM87ImwatCRq6QqKi2LUp0LGuq+vonf5M46LefU3VIQyLKMhZkeric8ZUYsmYKjUrJCyQn1lKJURnGiOIFKFIfiUYLRqHyaCLxjLF2b07U5eadL3u9CJ9Ptc1v4xfNfQifLOV6O1piZW52uZoG/ODXPV6v8fU75ba2rVGkOzUgQ6JdeTx15PCDZrGK7ErQSL46gHi+OgMPjpyorL0KwBnILJvKAikzYfbJVqGpsKDCSiSFDyEwkr44YcolAOyajI5aOzehkGXmWkWU53Syn2+nR73TZ8CW7jjx555b+/Btf+eAji41Lf2Khxy8fHVcf35S9TxDv0OtrsAGadLPWMZwy8ipiRaRDSB7QWDlNEppzW5nBpRaN1pRSRJrTc4a6AZaUS9NWCzj1VJL0+jCp3NLw7JCiB71yyAoHBzY/ONvpL83nvY3Ngzl/6sy8O212i7/49HOXrvnmnUeeZuEb5/u8bW3EJxf6vTXPC7yRLwV0QacUfmGu8n77EKvdzSGok4CXoA5PRRBPYQNlZmL8Szrkrc80cdSYN+EYsFeERZB9Jt7vG6s/DuriX+Roc25FwVkRZ0QKIzLOxIy7WTae6wzGb3jyUPlPnb96/2kZv33ETT/Hn8z3efvaCIA/2tSfVfQFCq9T5OeAs1SQTNGz1jOv+SAvpaKUSivjjnqjh73RIwqHgSMicgg4AqwIsiawboQ1i1nvYlaPhaLITdQB4iVqjYQuJsxl3XCwOqEztsfFM9u4/MlH/3V/YfOW/4T59Pue8Wv/F9jGEQFesRfqAAAAAElFTkSuQmCC" />
284
- <h1>Ruby Zucker 9</h1>
284
+ <h1>Ruby Zucker 10</h1>
285
285
  <h2 style="clear:both">What is it?</h2>
286
- <p class="text">Zucker (<a href="http://www.forvo.com/word/zucker/">pronunciation</a>) is the German word for sugar. It adds syntactic sugar in the form of independent, small scripts that make Ruby even more sweet. It adds a lot of useful helper methods for an improved readability and usage. Everything is documented on this page.</p>
287
- <p class="text">See the <a href="http://github.com/janlelis/zucker">github page</a> and wiki for issues, discussion and information about contributing.</p>
286
+ <p class="text">Zucker (<a href="http://www.forvo.com/word/zucker/">pronunciation</a>) is the German word for sugar. It adds syntactic sugar in the form of independent, small scripts that make Ruby even more sweet. It adds a lot of useful helper methods for an improved readability and usage. Almost every Zucker feature comes with specs. Everything is documented on this page. The source is available at <a href="http://github.com/janlelis/zucker">github</a>.</p>
288
287
 
289
288
  <h2>Install</h2>
290
289
  <p class="text">
@@ -298,7 +297,7 @@ table.source td { padding: 2px 4px; vertical-align: top; }
298
297
  <p class="text">The gem consists of many small snippets, called <em>cubes</em>, which are bundled in <em>packs</em>. Since there aren't any dependencies within the gem, you can easily require only the packs or cubes you want:
299
298
  <code class="scode">require 'zucker/cube_or_pack_name'</code>
300
299
  </p>
301
- <h3 style="padding-left:1.3em">Packages</h3>
300
+ <h3 style="padding-left:1.3em">Packs</h3>
302
301
  <ul class="text">
303
302
  <li><a href="#control" style="text-decoration:none;font-weight:bold;">control</a>: Cubes that change program behaviour.</li>
304
303
  <li><a href="#env" style="text-decoration:none;font-weight:bold;">env</a>: Cubes for collecting information.</li>
@@ -314,7 +313,7 @@ table.source td { padding: 2px 4px; vertical-align: top; }
314
313
  <h3 style="padding-left:1.3em">Which methods and constants are added directly to the global namespace by the <em>default</em> pack?</h3>
315
314
  <p class="text">
316
315
 
317
- <code class="scode">Info, RubyVersion, RubyEngine, OS, Infinity, NaN, alias_for, aliases_for, egonil, nn, iterate, instance_variables_from, ivars, activate_warnings!, deactivate_warnings!, executed_directly?, standalone?, library?, ignore_sigint!, sandbox, tap_on, make_new, (blank?, present?, mcopy)</code>
316
+ <code class="scode">Info, RubyVersion, RubyEngine, OS, Infinity, NaN, alias_for, aliases_for, egonil, nn, iterate, instance_variables_from, ivars, activate_warnings!, deactivate_warnings!, executed_directly?, directly_executed?, standalone?, library?, ignore_sigint!, sandbox, tap_on, make_new, (blank?, present?, mcopy)</code>
318
317
  </p>
319
318
 
320
319
 
@@ -484,7 +483,7 @@ describe <span class="s"><span class="dl">'</span><span class="k">Object#iterate
484
483
  <span class="c"># J-_-L</span></pre> </td></tr><tr><th>Compatibility</th> <td>1.9, 1.8</td></tr><tr><th>Discussion</th> <td><a href="http://wiki.github.com/janlelis/zucker/iterate">github wiki</a></td></tr></table> <h3 title="require 'zucker/kernel'" id="kernel">kernel</h3>
485
484
  <table class="cube_table"
486
485
  id="kernel_cube"
487
- title="require 'zucker/kernel'"> <tr><th>Summary</th> <td>Some useful general shortcut methods.</td></tr><tr><th>Why?</th> <td>Readability.</td></tr><tr><th>Methods/Usage</th> <td><h5>activate_warnings!</h5><pre class="usage source" style="display:block">activate_warnings! <span class="c"># sets $VERBOSE to 1</span></pre><h5>deactivate_warnings!</h5><pre class="usage source" style="display:block">deactivate_warnings! <span class="c"># sets $VERBOSE to 0</span></pre><h5>executed_directly?, standalone?</h5><pre class="usage source" style="display:block">executed_directly? <span class="c"># checks, if the current file is run directly -&gt; true</span></pre><h5>library?</h5><pre class="usage source" style="display:block">library? <span class="c"># checks, if the current file is run directly -&gt; false</span></pre><h5>irb?</h5><pre class="usage source" style="display:block">irb? <span class="c"># returns false if not called from IRB</span></pre><h5>ignore_sigint!</h5><pre class="usage source" style="display:block">ignore_sigint! <span class="c"># blocks CTRL+C</span></pre></td></tr><tr><th>Specification</th> <td> <span id="show_kernel_spec">(<a href="javascript:show('kernel_spec')">show</a>)</span>
486
+ title="require 'zucker/kernel'"> <tr><th>Summary</th> <td>Some useful general shortcut methods.</td></tr><tr><th>Why?</th> <td>Readability.</td></tr><tr><th>Methods/Usage</th> <td><h5>activate_warnings!</h5><pre class="usage source" style="display:block">activate_warnings! <span class="c"># sets $VERBOSE to 1</span></pre><h5>deactivate_warnings!</h5><pre class="usage source" style="display:block">deactivate_warnings! <span class="c"># sets $VERBOSE to 0</span></pre><h5>executed_directly?, directly_executed, standalone?</h5><pre class="usage source" style="display:block">executed_directly? <span class="c"># checks, if the current file is run directly -&gt; true</span></pre><h5>library?</h5><pre class="usage source" style="display:block">library? <span class="c"># checks, if the current file is run directly -&gt; false</span></pre><h5>irb?</h5><pre class="usage source" style="display:block">irb? <span class="c"># returns false if not called from IRB or RIPL</span></pre><h5>ignore_sigint!</h5><pre class="usage source" style="display:block">ignore_sigint! <span class="c"># blocks CTRL+C</span></pre></td></tr><tr><th>Specification</th> <td> <span id="show_kernel_spec">(<a href="javascript:show('kernel_spec')">show</a>)</span>
488
487
  <pre class="source" id="kernel_spec">require <span class="s"><span class="dl">'</span><span class="k">zucker/kernel</span><span class="dl">'</span></span>
489
488
 
490
489
  describe <span class="s"><span class="dl">'</span><span class="k">activate_warnings!</span><span class="dl">'</span></span> <span class="r">do</span>
@@ -568,12 +567,14 @@ describe <span class="s"><span class="dl">'</span><span class="k">ignore_sigint!
568
567
  <pre class="source" id="sandbox_spec">require <span class="s"><span class="dl">'</span><span class="k">zucker/sandbox</span><span class="dl">'</span></span>
569
568
 
570
569
  describe <span class="s"><span class="dl">'</span><span class="k">sandbox</span><span class="dl">'</span></span> <span class="r">do</span>
571
- it <span class="s"><span class="dl">'</span><span class="k">should throw a SecurityError if bad commands are issued</span><span class="dl">'</span></span> <span class="r">do</span>
572
- proc <span class="r">do</span>
573
- sandbox <span class="r">do</span>
574
- <span class="sh"><span class="dl">`</span><span class="k">ls</span><span class="dl">`</span></span>
575
- <span class="r">end</span>
576
- <span class="r">end</span>.should raise_exception <span class="co">SecurityError</span>
570
+ <span class="r">unless</span> <span class="r">defined?</span>(<span class="co">RUBY_ENGINE</span>) &amp;&amp; <span class="co">RUBY_ENGINE</span> == <span class="s"><span class="dl">'</span><span class="k">jruby</span><span class="dl">'</span></span>
571
+ it <span class="s"><span class="dl">'</span><span class="k">should throw a SecurityError if bad commands are issued</span><span class="dl">'</span></span> <span class="r">do</span>
572
+ proc <span class="r">do</span>
573
+ sandbox <span class="r">do</span>
574
+ <span class="sh"><span class="dl">`</span><span class="k">ls</span><span class="dl">`</span></span>
575
+ <span class="r">end</span>
576
+ <span class="r">end</span>.should raise_exception <span class="co">SecurityError</span>
577
+ <span class="r">end</span>
577
578
  <span class="r">end</span>
578
579
  <span class="r">end</span></pre> </td></tr><tr><th>Source</th> <td> <span id="show_sandbox_source">(<a href="javascript:show('sandbox_source')">show</a>)</span>
579
580
  <pre class="source" id="sandbox_source">require <span class="s"><span class="dl">'</span><span class="k">zucker</span><span class="dl">'</span></span>
@@ -589,7 +590,7 @@ describe <span class="s"><span class="dl">'</span><span class="k">sandbox</span>
589
590
  <span class="r">end</span>
590
591
  <span class="r">end</span>
591
592
 
592
- <span class="c"># J-_-L</span></pre> </td></tr><tr><th>Compatibility</th> <td>1.9, 1.8</td></tr><tr><th>Discussion</th> <td><a href="http://wiki.github.com/janlelis/zucker/sandbox">github wiki</a></td></tr></table> <h3 title="require 'zucker/tap'" id="tap">tap</h3>
593
+ <span class="c"># J-_-L</span></pre> </td></tr><tr><th>Compatibility</th> <td>1.9, 1.8, Does not work on JRuby, since $SAFE is not supported there</td></tr><tr><th>Discussion</th> <td><a href="http://wiki.github.com/janlelis/zucker/sandbox">github wiki</a></td></tr></table> <h3 title="require 'zucker/tap'" id="tap">tap</h3>
593
594
  <table class="cube_table"
594
595
  id="tap_cube"
595
596
  title="require 'zucker/tap'"> <tr><th>Summary</th> <td>This cube adds the two <code>tap</code> variants <code>tap_on</code> (known as <code>returning</code> in ActiveSupport) and <code>make_new</code>.</td></tr><tr><th>Methods/Usage</th> <td><h5>tap_on</h5><pre class="usage source" style="display:block">tap_on [<span class="i">1</span>,<span class="i">2</span>] <span class="r">do</span> |obj|
@@ -1291,20 +1292,35 @@ describe <span class="s"><span class="dl">'</span><span class="k">Enumerable#mas
1291
1292
  <span class="c"># J-_-L</span></pre> </td></tr><tr><th>Compatibility</th> <td>1.9, 1.8</td></tr><tr><th>Discussion</th> <td><a href="http://wiki.github.com/janlelis/zucker/enumerable">github wiki</a></td></tr></table> <h3 title="require 'zucker/file'" id="file">file</h3>
1292
1293
  <table class="cube_table"
1293
1294
  id="file_cube"
1294
- title="require 'zucker/file'"> <tr><th>Summary</th> <td>Extensions for <code>File</code>.</td></tr><tr><th>Methods/Usage</th> <td><h5>File#gsub</h5><pre class="usage source" style="display:block"><span class="co">File</span>.gsub <span class="s"><span class="dl">'</span><span class="k">some_filename</span><span class="dl">'</span></span>, {
1295
+ title="require 'zucker/file'"> <tr><th>Summary</th> <td>Extensions for <code>File</code>.</td></tr><tr><th>Methods/Usage</th> <td><h5>File.gsub</h5><pre class="usage source" style="display:block"><span class="co">File</span>.gsub <span class="s"><span class="dl">'</span><span class="k">some_filename</span><span class="dl">'</span></span>, <span class="c"># will read the file and substitute the hash keys with their values</span>
1295
1296
  <span class="rx"><span class="dl">/</span><span class="k">hi</span><span class="dl">/</span></span> =&gt; <span class="s"><span class="dl">'</span><span class="k">cu</span><span class="dl">'</span></span>,
1296
- <span class="rx"><span class="dl">/</span><span class="ch">\d</span><span class="dl">/</span></span> =&gt; proc <span class="r">do</span> (<span class="gv">$&amp;</span>.to_i+<span class="i">1</span>).to_s <span class="r">end</span>
1297
- } <span class="c"># will read the file and substitute the hash keys with their values</span>
1298
- </pre><h5>File#delete!</h5><pre class="usage source" style="display:block"><span class="co">File</span>.delete! <span class="s"><span class="dl">'</span><span class="k">some_filename</span><span class="dl">'</span></span> <span class="c"># will delete the file, don't care if it exist.</span></pre></td></tr><tr><th>Information</th> <td>Idea for <code>.File#delete!</code>. from sugar-high.</td></tr><tr><th>Specification</th> <td> <span id="show_file_spec">(<a href="javascript:show('file_spec')">show</a>)</span>
1297
+ <span class="rx"><span class="dl">/</span><span class="ch">\d</span><span class="dl">/</span></span> =&gt; proc{ |m| (m.to_i+<span class="i">1</span>).to_s }
1298
+ </pre><h5>File.delete!</h5><pre class="usage source" style="display:block"><span class="co">File</span>.delete! <span class="s"><span class="dl">'</span><span class="k">some_filename</span><span class="dl">'</span></span> <span class="c"># will delete the file, don't care if it exist.</span></pre></td></tr><tr><th>Information</th> <td>Idea for <code>File.delete!</code> from sugar-high.</td></tr><tr><th>Specification</th> <td> <span id="show_file_spec">(<a href="javascript:show('file_spec')">show</a>)</span>
1299
1299
  <pre class="source" id="file_spec">require <span class="s"><span class="dl">'</span><span class="k">zucker/file</span><span class="dl">'</span></span>
1300
1300
  require <span class="s"><span class="dl">'</span><span class="k">fileutils</span><span class="dl">'</span></span>
1301
1301
 
1302
- describe <span class="s"><span class="dl">'</span><span class="k">File#gsub</span><span class="dl">'</span></span> <span class="r">do</span>
1303
- it <span class="s"><span class="dl">'</span><span class="k">should read filename in arg1, substitute every key in the arg2 with its value and save the file</span><span class="dl">'</span></span>
1302
+ describe <span class="s"><span class="dl">'</span><span class="k">File.gsub</span><span class="dl">'</span></span> <span class="r">do</span>
1303
+ let <span class="sy">:random_filename</span> <span class="r">do</span>
1304
+ <span class="s"><span class="dl">'</span><span class="k">test_</span><span class="dl">'</span></span> + (<span class="i">0</span>..<span class="i">20</span>).map{|e| [*<span class="s"><span class="dl">'</span><span class="k">a</span><span class="dl">'</span></span>..<span class="s"><span class="dl">'</span><span class="k">z</span><span class="dl">'</span></span>].send <span class="co">RUBY_VERSION</span> &gt; <span class="s"><span class="dl">'</span><span class="k">1.9</span><span class="dl">'</span></span> ? <span class="sy">:sample</span> : <span class="sy">:choice</span> }*<span class="s"><span class="dl">'</span><span class="dl">'</span></span>
1305
+ <span class="r">end</span>
1306
+
1307
+ it <span class="s"><span class="dl">'</span><span class="k">should read filename in arg1, substitute every key in the arg2 with its value and save the file</span><span class="dl">'</span></span> <span class="r">do</span>
1308
+ <span class="co">File</span>.open(random_filename,<span class="s"><span class="dl">'</span><span class="k">w</span><span class="dl">'</span></span>){ |file|
1309
+ file.print <span class="s"><span class="dl">'</span><span class="k">should read filename in arg1, substitute every key in the arg2 with its value and save the file</span><span class="dl">'</span></span>
1310
+ }
1311
+ <span class="co">File</span>.gsub random_filename,
1312
+ <span class="rx"><span class="dl">/</span><span class="k">read</span><span class="dl">/</span></span> =&gt; <span class="s"><span class="dl">'</span><span class="k">write</span><span class="dl">'</span></span>,
1313
+ <span class="rx"><span class="dl">/</span><span class="ch">\d</span><span class="k">+</span><span class="dl">/</span></span> =&gt; proc{|m| (m.to_i+<span class="i">1</span>).to_s }
1314
+
1315
+ <span class="co">File</span>.read(random_filename).should ==
1316
+ <span class="s"><span class="dl">'</span><span class="k">should write filename in arg2, substitute every key in the arg3 with its value and save the file</span><span class="dl">'</span></span>
1317
+
1318
+ <span class="co">FileUtils</span>.rm random_filename
1319
+ <span class="r">end</span>
1304
1320
  <span class="r">end</span>
1305
1321
 
1306
- describe <span class="s"><span class="dl">'</span><span class="k">File#delete!</span><span class="dl">'</span></span> <span class="r">do</span>
1307
- let <span class="sy">:random_filename</span> <span class="r">do</span>
1322
+ describe <span class="s"><span class="dl">'</span><span class="k">File.delete!</span><span class="dl">'</span></span> <span class="r">do</span>
1323
+ let <span class="sy">:random_filename</span> <span class="r">do</span>
1308
1324
  <span class="s"><span class="dl">'</span><span class="k">test_</span><span class="dl">'</span></span> + (<span class="i">0</span>..<span class="i">20</span>).map{|e| [*<span class="s"><span class="dl">'</span><span class="k">a</span><span class="dl">'</span></span>..<span class="s"><span class="dl">'</span><span class="k">z</span><span class="dl">'</span></span>].send <span class="co">RUBY_VERSION</span> &gt; <span class="s"><span class="dl">'</span><span class="k">1.9</span><span class="dl">'</span></span> ? <span class="sy">:sample</span> : <span class="sy">:choice</span> }*<span class="s"><span class="dl">'</span><span class="dl">'</span></span>
1309
1325
  <span class="r">end</span>
1310
1326
 
@@ -1349,7 +1365,7 @@ describe <span class="s"><span class="dl">'</span><span class="k">File#delete!</
1349
1365
  <span class="r">end</span></pre> </td></tr><tr><th>Compatibility</th> <td>1.9, 1.8</td></tr><tr><th>Discussion</th> <td><a href="http://wiki.github.com/janlelis/zucker/file">github wiki</a></td></tr></table> <h3 title="require 'zucker/hash'" id="hash">hash</h3>
1350
1366
  <table class="cube_table"
1351
1367
  id="hash_cube"
1352
- title="require 'zucker/hash'"> <tr><th>Summary</th> <td>Some sugar for dealing with hashs.</td></tr><tr><th>Methods/Usage</th> <td><h5>Hash.zip</h5><pre class="usage source" style="display:block"><span class="co">Hash</span>.zip [<span class="i">1</span>,<span class="i">2</span>,<span class="i">3</span>], [<span class="i">4</span>,<span class="i">5</span>,<span class="i">6</span>] <span class="c"># =&gt; {1=&gt;4, 2=&gt;5, 3=&gt;6}</span></pre><h5>Hash#&lt;&lt;</h5><pre class="usage source" style="display:block">{<span class="i">1</span>=&gt;<span class="i">2</span>} &lt;&lt; [<span class="i">3</span>, <span class="i">4</span>] <span class="c"># =&gt; { 1=&gt;2, 3=&gt;4 }</span>
1368
+ title="require 'zucker/hash'"> <tr><th>Summary</th> <td>Some sugar for dealing with hashes.</td></tr><tr><th>Methods/Usage</th> <td><h5>Hash.zip</h5><pre class="usage source" style="display:block"><span class="co">Hash</span>.zip [<span class="i">1</span>,<span class="i">2</span>,<span class="i">3</span>], [<span class="i">4</span>,<span class="i">5</span>,<span class="i">6</span>] <span class="c"># =&gt; {1=&gt;4, 2=&gt;5, 3=&gt;6}</span></pre><h5>Hash#&lt;&lt;</h5><pre class="usage source" style="display:block">{<span class="i">1</span>=&gt;<span class="i">2</span>} &lt;&lt; [<span class="i">3</span>, <span class="i">4</span>] <span class="c"># =&gt; { 1=&gt;2, 3=&gt;4 }</span>
1353
1369
  {<span class="i">1</span>=&gt;<span class="i">2</span>} &lt;&lt; { <span class="i">5</span>=&gt;<span class="i">6</span> } <span class="c"># =&gt; { 1=&gt;2, 5=&gt;6 }</span>
1354
1370
  </pre><h5>Hash#&amp;</h5><pre class="usage source" style="display:block">{ <span class="i">1</span>=&gt;<span class="i">4</span>, <span class="i">2</span>=&gt;<span class="i">5</span>, <span class="i">3</span>=&gt;<span class="i">6</span> } &amp; { <span class="i">1</span>=&gt;<span class="i">4</span>, <span class="i">2</span>=&gt;<span class="i">7</span> } <span class="c"># =&gt; { 1=&gt;4 }</span></pre></td></tr><tr><th>Information</th> <td>Some of the operators are inspired by Ruby Facets.</td></tr><tr><th>Specification</th> <td> <span id="show_hash_spec">(<a href="javascript:show('hash_spec')">show</a>)</span>
1355
1371
  <pre class="source" id="hash_spec">require <span class="s"><span class="dl">'</span><span class="k">zucker/hash</span><span class="dl">'</span></span>
@@ -1624,7 +1640,7 @@ describe <span class="s"><span class="dl">'</span><span class="k">String#|</span
1624
1640
  <h3 title="require 'zucker/blank'" id="blank">blank</h3>
1625
1641
  <table class="cube_table"
1626
1642
  id="blank_cube"
1627
- title="require 'zucker/blank'"> <tr><th>Summary</th> <td>Does pretty the same as in ActiveSupport (Every object can be asked if it is blank).</td></tr><tr><th>Why?</th> <td>It's too familiar ;)</td></tr><tr><th>Methods/Usage</th> <td><h5>Object#blank?</h5><pre class="usage source" style="display:block"><span class="s"><span class="dl">'</span><span class="k">an object</span><span class="dl">'</span></span>.blank? <span class="c"># =&gt; false</span></pre></td></tr><tr><th>Specification</th> <td> <span id="show_blank_spec">(<a href="javascript:show('blank_spec')">show</a>)</span>
1643
+ title="require 'zucker/blank'"> <tr><th>Summary</th> <td>Does pretty the same as in ActiveSupport (Every object can be asked if it is blank or present).</td></tr><tr><th>Why?</th> <td>It's too familiar ;)</td></tr><tr><th>Methods/Usage</th> <td><h5>Object#blank?</h5><pre class="usage source" style="display:block">[<span class="s"><span class="dl">&quot;</span><span class="k">'an object'.blank? # =&gt; false</span><span class="dl">&quot;</span></span>, <span class="s"><span class="dl">&quot;</span><span class="k">nil.present? # =&gt; false</span><span class="dl">&quot;</span></span>]</pre></td></tr><tr><th>Specification</th> <td> <span id="show_blank_spec">(<a href="javascript:show('blank_spec')">show</a>)</span>
1628
1644
  <pre class="source" id="blank_spec">require <span class="s"><span class="dl">'</span><span class="k">zucker/blank</span><span class="dl">'</span></span>
1629
1645
 
1630
1646
  describe <span class="s"><span class="dl">'</span><span class="k">Object#blank?</span><span class="dl">'</span></span> <span class="r">do</span>
@@ -1699,7 +1715,7 @@ describe <span class="s"><span class="dl">'</span><span class="k">Object#mcopy</
1699
1715
  <span class="c"># J-_-L</span></pre> </td></tr><tr><th>Compatibility</th> <td>1.9, 1.8</td></tr><tr><th>Discussion</th> <td><a href="http://wiki.github.com/janlelis/zucker/mcopy">github wiki</a></td></tr></table> <h3 title="require 'zucker/not'" id="not">not</h3>
1700
1716
  <table class="cube_table"
1701
1717
  id="not_cube"
1702
- title="require 'zucker/not'"> <tr><th>Summary</th> <td><code>not</code> returns an object on which all methods are redirected to it's receiver object, but returns inverted boolean.</td></tr><tr><th>Why?</th> <td>Better readability.</td></tr><tr><th>Methods/Usage</th> <td><h5>Object#not</h5><pre class="usage source" style="display:block">[<span class="i">1</span>,<span class="i">2</span>,<span class="i">3</span>].not.empty? <span class="c"># true</span>
1718
+ title="require 'zucker/not'"> <tr><th>Summary</th> <td><code>not</code> returns an object on which all methods are redirected to it's receiver object, but returns the inverted boolean.</td></tr><tr><th>Why?</th> <td>Better readability.</td></tr><tr><th>Methods/Usage</th> <td><h5>Object#not</h5><pre class="usage source" style="display:block">[<span class="i">1</span>,<span class="i">2</span>,<span class="i">3</span>].not.empty? <span class="c"># true</span>
1703
1719
  </pre></td></tr><tr><th>Information</th> <td>See <a href="http://blog.jayfields.com/2007/08/ruby-adding-not-method-for-readability.html">this article by Jay Field</a> for more information.</td></tr><tr><th>Specification</th> <td> <span id="show_not_spec">(<a href="javascript:show('not_spec')">show</a>)</span>
1704
1720
  <pre class="source" id="not_spec"><span class="r">if</span> <span class="r">defined?</span> <span class="co">BasicObject</span> <span class="c"># 1.9 only</span>
1705
1721
 
@@ -2467,7 +2483,7 @@ describe <span class="s"><span class="dl">'</span><span class="k">o</span><span
2467
2483
  <span class="c"># J-_-L</span></pre> </td></tr><tr><th>Compatibility</th> <td>1.9, 1.8</td></tr><tr><th>Discussion</th> <td><a href="http://wiki.github.com/janlelis/zucker/oo">github wiki</a></td></tr></table> <h3 title="require 'zucker/qq'" id="qq">qq</h3>
2468
2484
  <table class="cube_table"
2469
2485
  id="qq_cube"
2470
- title="require 'zucker/qq'"> <tr><th>Summary</th> <td>The <code>q</code> method does the same like <code>p</code>, but puts out multiple arguments on the same line.</td></tr><tr><th>Methods/Usage</th> <td><h5>q, qq</h5><pre class="usage source" style="display:block">q <span class="s"><span class="dl">&quot;</span><span class="k">zucker</span><span class="dl">&quot;</span></span>, <span class="s"><span class="dl">'</span><span class="dl">'</span></span>, {<span class="i">6</span>=&gt;<span class="i">7</span>}, <span class="i">5</span>, <span class="fl">2.3</span>, <span class="sy">:o</span> <span class="c"># outputs &quot;zucker&quot; &quot;&quot; {6=&gt;7} 5 2.3 :o</span>
2486
+ title="require 'zucker/qq'"> <tr><th>Summary</th> <td>The <code>q</code> method does the same like <code>p</code>, but outputs multiple arguments on the same line.</td></tr><tr><th>Methods/Usage</th> <td><h5>q, qq</h5><pre class="usage source" style="display:block">q <span class="s"><span class="dl">&quot;</span><span class="k">zucker</span><span class="dl">&quot;</span></span>, <span class="s"><span class="dl">'</span><span class="dl">'</span></span>, {<span class="i">6</span>=&gt;<span class="i">7</span>}, <span class="i">5</span>, <span class="fl">2.3</span>, <span class="sy">:o</span> <span class="c"># outputs &quot;zucker&quot; &quot;&quot; {6=&gt;7} 5 2.3 :o</span>
2471
2487
  </pre></td></tr><tr><th>Information</th> <td>Inspired by <a href="http://github.com/rdp/sane/blob/master/lib/sane/pps.rb">rdp</a>.</td></tr><tr><th>Specification</th> <td> <span id="show_qq_spec">(<a href="javascript:show('qq_spec')">show</a>)</span>
2472
2488
  <pre class="source" id="qq_spec">require <span class="s"><span class="dl">'</span><span class="k">zucker/qq</span><span class="dl">'</span></span>
2473
2489
 
@@ -2589,78 +2605,84 @@ describe <span class="s"><span class="dl">'</span><span class="k">Regexp#visuali
2589
2605
 
2590
2606
  <h2>Changelog</h2>
2591
2607
  <div class="cubes">
2592
- <pre class="scode">2011-01-22 | <a href="http://rubyzucker.info/9/">Zucker 9</a>
2593
- * removed history versions (sorry, it caused too much gem/rdoc troubles)
2608
+ <pre class="scode">2011-04-29 | <a href="http://rubyzucker.info/10/">Zucker 10</a>
2609
+ * doc/spec tweaks
2610
+ * make test.rubygems.org-testable
2611
+ * fix zucker 9 permission issue
2612
+
2613
+
2614
+ 2011-01-22 | <a href="http://rubyzucker.info/9/">Zucker 9</a>
2615
+ * remove history versions (sorry, it caused too much gem/rdoc troubles)
2594
2616
  * add file cube: File.delete! and File.gsub
2595
2617
  * debug pack improvements
2596
2618
  * binding: typos + return nil
2597
2619
  * cc: support for ripl + return nil
2598
2620
  * mm: also show eigenclass for modules + nicer displaying + return nil
2599
2621
  * added Regexp#visualize
2600
- * removed optional sandbox param
2601
- * renamed xxx2proc to xxx_to_proc
2602
- * changed rakefile/rspec/gemspec structure
2622
+ * remove optional sandbox param
2623
+ * rename xxx2proc to xxx_to_proc
2624
+ * change rakefile/rspec/gemspec structure
2603
2625
  * more minor fixes and improvements
2604
2626
 
2605
2627
 
2606
2628
  2010-10-06 | <a href="http://rubyzucker.info/8/">Zucker 8</a>
2607
- * fixed a little alias_for bug
2608
- * disabled rdoc creation when installing (in favour of the custom docs)
2609
- * changed Binding#inspect to Binding.variables (was too verbose and dangerous)
2629
+ * fix a little alias_for bug
2630
+ * disable rdoc creation when installing (in favour of the custom docs)
2631
+ * change Binding#inspect to Binding.variables (was too verbose and dangerous)
2610
2632
 
2611
2633
 
2612
2634
  2010-10-03 | <a href="http://rubyzucker.info/7/">Zucker 7</a>
2613
- * fixed critical OS.windows? bug
2635
+ * fix critical OS.windows? bug
2614
2636
 
2615
2637
 
2616
2638
  2010-10-03 | <a href="http://rubyzucker.info/6/">Zucker 6</a>
2617
2639
  * no new cubes
2618
2640
  * bugfix for OS.posix?
2619
2641
  * small changes + bugfixes + doc improvements
2620
- * added two user methods to Info
2621
- * changed egonil semantics ( using method_missing, see http://rbjl.net/26/catch_nil.rb )
2642
+ * add two user methods to Info
2643
+ * change egonil semantics ( using method_missing, see http://rbjl.net/26/catch_nil.rb )
2622
2644
  * bugfix for vv
2623
2645
 
2624
2646
 
2625
2647
  2010-09-04 | <a href="http://rubyzucker.info/5/">Zucker 5</a>
2626
- * debug edition - added two debug helpers: oo (output line, method, file) and cc (output method callstack)
2627
- * renamed cube D to dd add added more debug aliases (for mm and binding)
2628
- * fixed __SPECIAL_VARS__ in info and kernel cube and some minor bugfixes
2648
+ * debug edition - add two debug helpers: oo (output line, method, file) and cc (output method callstack)
2649
+ * rename cube D to dd add add more debug aliases (for mm and binding)
2650
+ * fix __SPECIAL_VARS__ in info and kernel cube and some minor bugfixes
2629
2651
  * Zucker.activate_more_aliases! option
2630
- * added Hash#&amp;
2631
- * added aliases: File.filename (for basename), Dir.join and Dir.split (for File.join, split)
2632
- * added a flexible requiring mechansim in zucker.rb (no api changes)
2633
- * restructered packages
2634
- * added rake tasks for releasing
2635
- * improved RubyVersion constant (cleaner and more flexible)
2652
+ * add Hash#&amp;
2653
+ * add aliases: File.filename (for basename), Dir.join and Dir.split (for File.join, split)
2654
+ * add a flexible requiring mechansim in zucker.rb (no api changes)
2655
+ * restructure packages
2656
+ * add rake tasks for releasing
2657
+ * improve RubyVersion constant (cleaner and more flexible)
2636
2658
 
2637
2659
 
2638
2660
  2010-09-01 | <a href="http://rubyzucker.info/4/">Zucker 4</a>
2639
- * fixed Binding#inspect
2640
- * added RubyEngine constant
2641
- * added RubyVersion constant
2642
- * added OS constant
2643
- * added q debug method (like p but on one line)
2644
- * added String#-
2661
+ * fix Binding#inspect
2662
+ * add RubyEngine constant
2663
+ * add RubyVersion constant
2664
+ * add OS constant
2665
+ * add q debug method (like p but on one line)
2666
+ * add String#-
2645
2667
 
2646
2668
 
2647
2669
  2010-08-14 | <a href="http://rubyzucker.info/3/">Zucker 3</a>
2648
- * added tap cube
2649
- * added Object#not
2650
- * added alias_for for an alternative alias syntax
2651
- * added String#constantize (improved AS version)
2652
- * improved Info module
2653
- * made Array#sum Rails compatibile
2654
- * improved docs
2655
- * changed directory layout (no changes for requiring)
2670
+ * add tap cube
2671
+ * add Object#not
2672
+ * add alias_for for an alternative alias syntax
2673
+ * add String#constantize (improved AS version)
2674
+ * improve Info module
2675
+ * make Array#sum Rails compatibile
2676
+ * improve docs
2677
+ * change directory layout (no changes for requiring)
2656
2678
  * more small changes
2657
2679
 
2658
2680
 
2659
2681
  2010-08-08 | <a href="http://rubyzucker.info/2/">Zucker 2</a>
2660
- * added info cube
2661
- * added chaining for array2proc
2662
- * fixed Hash.zip
2663
- * fixed instance_variables_from binding for 1.9
2682
+ * add info cube
2683
+ * add chaining for array2proc
2684
+ * fix Hash.zip
2685
+ * fix instance_variables_from binding for 1.9
2664
2686
  * more specs
2665
2687
 
2666
2688
 
@@ -2677,7 +2699,7 @@ describe <span class="s"><span class="dl">'</span><span class="k">Regexp#visuali
2677
2699
  </div>
2678
2700
  <div id="foot">
2679
2701
  <div id="smile"><a href="http://rbjl.net">J-_-L</a></div>
2680
- This is the Ruby Zucker 9 documentation (2011-01-22).
2702
+ This is the Ruby Zucker 10 documentation (2011-04-29).
2681
2703
  The current version is always available at <a href="http://rubyzucker.info">rubyzucker.info</a>.
2682
2704
  Source at <a href="http://github.com/janlelis/zucker">github</a>.
2683
2705
  Ruby Logo CC-BY-SA Yukihiro Matsumoto.
@@ -499,8 +499,7 @@ table.source td { padding: 2px 4px; vertical-align: top; }
499
499
  <img class="rubylogo" alt="ruby" src="data:image/png;base64,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" />
500
500
  <h1>Ruby Zucker ..version..</h1>
501
501
  <h2 style="clear:both">What is it?</h2>
502
- <p class="text">Zucker (<a href="http://www.forvo.com/word/zucker/">pronunciation</a>) is the German word for sugar. It adds syntactic sugar in the form of independent, small scripts that make Ruby even more sweet. It adds a lot of useful helper methods for an improved readability and usage. Everything is documented on this page.</p>
503
- <p class="text">See the <a href="http://github.com/janlelis/zucker">github page</a> and wiki for issues, discussion and information about contributing.</p>
502
+ <p class="text">Zucker (<a href="http://www.forvo.com/word/zucker/">pronunciation</a>) is the German word for sugar. It adds syntactic sugar in the form of independent, small scripts that make Ruby even more sweet. It adds a lot of useful helper methods for an improved readability and usage. Almost every Zucker feature comes with specs. Everything is documented on this page. The source is available at <a href="http://github.com/janlelis/zucker">github</a>.</p>
504
503
 
505
504
  <h2>Install</h2>
506
505
  <p class="text">
@@ -514,7 +513,7 @@ table.source td { padding: 2px 4px; vertical-align: top; }
514
513
  <p class="text">The gem consists of many small snippets, called <em>cubes</em>, which are bundled in <em>packs</em>. Since there aren't any dependencies within the gem, you can easily require only the packs or cubes you want:
515
514
  <code class="scode">require 'zucker/cube_or_pack_name'</code>
516
515
  </p>
517
- <h3 style="padding-left:1.3em">Packages</h3>
516
+ <h3 style="padding-left:1.3em">Packs</h3>
518
517
  <ul class="text">
519
518
  ..packages..
520
519
  </ul>
@@ -524,7 +523,7 @@ table.source td { padding: 2px 4px; vertical-align: top; }
524
523
  <h3 style="padding-left:1.3em">Which methods and constants are added directly to the global namespace by the <em>default</em> pack?</h3>
525
524
  <p class="text">
526
525
 
527
- <code class="scode">Info, RubyVersion, RubyEngine, OS, Infinity, NaN, alias_for, aliases_for, egonil, nn, iterate, instance_variables_from, ivars, activate_warnings!, deactivate_warnings!, executed_directly?, standalone?, library?, ignore_sigint!, sandbox, tap_on, make_new, (blank?, present?, mcopy)</code>
526
+ <code class="scode">Info, RubyVersion, RubyEngine, OS, Infinity, NaN, alias_for, aliases_for, egonil, nn, iterate, instance_variables_from, ivars, activate_warnings!, deactivate_warnings!, executed_directly?, directly_executed?, standalone?, library?, ignore_sigint!, sandbox, tap_on, make_new, (blank?, present?, mcopy)</code>
528
527
  </p>
529
528
 
530
529
  ..cubes..
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Zucker
4
4
  # version and date get modified by the :prepare_release rake task
5
- VERSION = '9'
6
- DATE = '2011-01-22'
5
+ VERSION = '10'
6
+ DATE = '2011-04-29'
7
7
 
8
8
  # cube list
9
9
  PACKAGES = {
@@ -1,12 +1,28 @@
1
1
  require 'zucker/file'
2
2
  require 'fileutils'
3
3
 
4
- describe 'File#gsub' do
5
- it 'should read filename in arg1, substitute every key in the arg2 with its value and save the file'
4
+ describe 'File.gsub' do
5
+ let :random_filename do
6
+ 'test_' + (0..20).map{|e| [*'a'..'z'].send RUBY_VERSION > '1.9' ? :sample : :choice }*''
7
+ end
8
+
9
+ it 'should read filename in arg1, substitute every key in the arg2 with its value and save the file' do
10
+ File.open(random_filename,'w'){ |file|
11
+ file.print 'should read filename in arg1, substitute every key in the arg2 with its value and save the file'
12
+ }
13
+ File.gsub random_filename,
14
+ /read/ => 'write',
15
+ /\d+/ => proc{|m| (m.to_i+1).to_s }
16
+
17
+ File.read(random_filename).should ==
18
+ 'should write filename in arg2, substitute every key in the arg3 with its value and save the file'
19
+
20
+ FileUtils.rm random_filename
21
+ end
6
22
  end
7
23
 
8
- describe 'File#delete!' do
9
- let :random_filename do
24
+ describe 'File.delete!' do
25
+ let :random_filename do
10
26
  'test_' + (0..20).map{|e| [*'a'..'z'].send RUBY_VERSION > '1.9' ? :sample : :choice }*''
11
27
  end
12
28
 
@@ -1,12 +1,14 @@
1
1
  require 'zucker/sandbox'
2
2
 
3
3
  describe 'sandbox' do
4
- it 'should throw a SecurityError if bad commands are issued' do
5
- proc do
6
- sandbox do
7
- `ls`
8
- end
9
- end.should raise_exception SecurityError
4
+ unless defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
5
+ it 'should throw a SecurityError if bad commands are issued' do
6
+ proc do
7
+ sandbox do
8
+ `ls`
9
+ end
10
+ end.should raise_exception SecurityError
11
+ end
10
12
  end
11
13
  end
12
14
 
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.description = "Sweeten your Ruby code with syntactic sugar :).
12
12
  Adds a lot of little helpers that you do not want to miss again."
13
13
  s.homepage = "http://rubyzucker.info"
14
- s.files = Dir.glob( %w[{lib,spec}/**/*.rb desc/**/*.yaml] ) + %w{Rakefile zucker.gemspec MIT-LICENSE README CHANGELOG doc/zucker_doc.rb doc/zucker_doc.html}
14
+ s.files = Dir.glob( %w[{lib,spec}/**/*.rb desc/**/*.yaml] ) + %w{Rakefile zucker.gemspec MIT-LICENSE README CHANGELOG doc/zucker_doc.rb doc/zucker_doc.html .gemtest}
15
15
  s.has_rdoc = false
16
16
  s.require_paths = ["lib"]
17
17
  s.required_ruby_version = '>= 1.8.7' # 1.9 recommended
metadata CHANGED
@@ -1,10 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zucker
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 9
7
- version: "9"
4
+ prerelease:
5
+ version: "10"
8
6
  platform: ruby
9
7
  authors:
10
8
  - Jan Lelis
@@ -13,8 +11,7 @@ autorequire:
13
11
  bindir: bin
14
12
  cert_chain: []
15
13
 
16
- date: 2011-01-22 00:00:00 +01:00
17
- default_executable:
14
+ date: 2011-04-28 00:00:00 Z
18
15
  dependencies:
19
16
  - !ruby/object:Gem::Dependency
20
17
  name: rspec
@@ -24,8 +21,6 @@ dependencies:
24
21
  requirements:
25
22
  - - ">="
26
23
  - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
24
  version: "0"
30
25
  type: :development
31
26
  version_requirements: *id001
@@ -37,8 +32,6 @@ dependencies:
37
32
  requirements:
38
33
  - - ">="
39
34
  - !ruby/object:Gem::Version
40
- segments:
41
- - 0
42
35
  version: "0"
43
36
  type: :development
44
37
  version_requirements: *id002
@@ -53,123 +46,123 @@ extensions: []
53
46
  extra_rdoc_files: []
54
47
 
55
48
  files:
56
- - lib/zucker.rb
57
- - lib/zucker/tap.rb
58
- - lib/zucker/alias_for.rb
59
- - lib/zucker/hash_to_proc.rb
60
- - lib/zucker/mcopy.rb
61
- - lib/zucker/class2proc.rb
62
- - lib/zucker/info.rb
63
- - lib/zucker/version.rb
64
- - lib/zucker/array_to_proc.rb
65
- - lib/zucker/engine.rb
66
49
  - lib/zucker/default.rb
67
- - lib/zucker/env.rb
68
- - lib/zucker/binding.rb
69
- - lib/zucker/blank.rb
70
- - lib/zucker/object.rb
71
- - lib/zucker/string.rb
72
- - lib/zucker/kernel.rb
73
- - lib/zucker/class_to_proc.rb
74
- - lib/zucker/regexp2proc.rb
75
- - lib/zucker/unary.rb
76
- - lib/zucker/not.rb
77
- - lib/zucker/regexp_visualize.rb
50
+ - lib/zucker/qq.rb
78
51
  - lib/zucker/all.rb
79
- - lib/zucker/hash.rb
80
- - lib/zucker/aliases.rb
81
- - lib/zucker/extensions.rb
52
+ - lib/zucker/string.rb
82
53
  - lib/zucker/sandbox.rb
83
- - lib/zucker/control.rb
54
+ - lib/zucker/regexp2proc.rb
55
+ - lib/zucker/ivars.rb
84
56
  - lib/zucker/dd.rb
57
+ - lib/zucker/class2proc.rb
85
58
  - lib/zucker/enumerable.rb
86
- - lib/zucker/file.rb
87
- - lib/zucker/ivars.rb
59
+ - lib/zucker/alias_for.rb
60
+ - lib/zucker/control.rb
61
+ - lib/zucker/array_to_proc.rb
62
+ - lib/zucker/unary.rb
63
+ - lib/zucker/hash.rb
64
+ - lib/zucker/hash2proc.rb
65
+ - lib/zucker/regexp_to_proc.rb
66
+ - lib/zucker/tap.rb
67
+ - lib/zucker/blank.rb
68
+ - lib/zucker/not.rb
69
+ - lib/zucker/array2proc.rb
70
+ - lib/zucker/info.rb
88
71
  - lib/zucker/array.rb
89
- - lib/zucker/qq.rb
90
- - lib/zucker/union.rb
72
+ - lib/zucker/binding.rb
73
+ - lib/zucker/extensions.rb
74
+ - lib/zucker/mm.rb
75
+ - lib/zucker/oo.rb
76
+ - lib/zucker/aliases.rb
77
+ - lib/zucker/to_proc.rb
91
78
  - lib/zucker/iterate.rb
92
- - lib/zucker/array2proc.rb
93
- - lib/zucker/cc.rb
94
- - lib/zucker/debug.rb
95
- - lib/zucker/square_brackets_for.rb
96
79
  - lib/zucker/egonil.rb
80
+ - lib/zucker/mcopy.rb
97
81
  - lib/zucker/shortcuts.rb
98
- - lib/zucker/to_proc.rb
82
+ - lib/zucker/hash_to_proc.rb
83
+ - lib/zucker/square_brackets_for.rb
84
+ - lib/zucker/file.rb
85
+ - lib/zucker/kernel.rb
86
+ - lib/zucker/engine.rb
87
+ - lib/zucker/regexp_visualize.rb
88
+ - lib/zucker/class_to_proc.rb
99
89
  - lib/zucker/os.rb
100
- - lib/zucker/mm.rb
101
- - lib/zucker/regexp_to_proc.rb
102
- - lib/zucker/oo.rb
103
- - lib/zucker/hash2proc.rb
104
- - spec/file_spec.rb
90
+ - lib/zucker/object.rb
91
+ - lib/zucker/cc.rb
92
+ - lib/zucker/debug.rb
93
+ - lib/zucker/env.rb
94
+ - lib/zucker/version.rb
95
+ - lib/zucker/union.rb
96
+ - lib/zucker.rb
97
+ - spec/cc_spec.rb
98
+ - spec/iterate_spec.rb
99
+ - spec/kernel_spec.rb
100
+ - spec/union_spec.rb
101
+ - spec/string_spec.rb
105
102
  - spec/tap_spec.rb
106
- - spec/hash_spec.rb
107
- - spec/array_spec.rb
108
- - spec/dd_spec.rb
109
- - spec/square_brackets_for_spec.rb
110
- - spec/mm_spec.rb
111
- - spec/sandbox_spec.rb
112
- - spec/binding_spec.rb
113
103
  - spec/unary_spec.rb
114
- - spec/qq_spec.rb
115
- - spec/kernel_spec.rb
116
- - spec/spec_helper.rb
117
- - spec/alias_for_spec.rb
118
- - spec/blank_spec.rb
104
+ - spec/regexp_to_proc_spec.rb
105
+ - spec/egonil_spec.rb
119
106
  - spec/regexp_visualize_spec.rb
107
+ - spec/ivars_spec.rb
108
+ - spec/sandbox_spec.rb
120
109
  - spec/array_to_proc_spec.rb
110
+ - spec/hash_spec.rb
111
+ - spec/spec_helper.rb
112
+ - spec/hash_to_proc_spec.rb
113
+ - spec/binding_spec.rb
114
+ - spec/mcopy_spec.rb
115
+ - spec/qq_spec.rb
116
+ - spec/aliases_spec.rb
117
+ - spec/engine_spec.rb
118
+ - spec/dd_spec.rb
119
+ - spec/square_brackets_for_spec.rb
120
+ - spec/enumerable_spec.rb
121
121
  - spec/version_spec.rb
122
+ - spec/blank_spec.rb
123
+ - spec/alias_for_spec.rb
124
+ - spec/mm_spec.rb
125
+ - spec/array_spec.rb
122
126
  - spec/os_spec.rb
123
- - spec/iterate_spec.rb
124
- - spec/cc_spec.rb
125
- - spec/mcopy_spec.rb
126
- - spec/egonil_spec.rb
127
- - spec/ivars_spec.rb
128
127
  - spec/not_spec.rb
129
- - spec/aliases_spec.rb
130
- - spec/string_spec.rb
131
- - spec/oo_spec.rb
132
128
  - spec/class_to_proc_spec.rb
133
- - spec/hash_to_proc_spec.rb
134
- - spec/regexp_to_proc_spec.rb
135
- - spec/union_spec.rb
129
+ - spec/oo_spec.rb
136
130
  - spec/info_spec.rb
137
- - spec/engine_spec.rb
138
- - spec/enumerable_spec.rb
139
- - desc/mm.yaml
140
- - desc/tap.yaml
141
- - desc/class_to_proc.yaml
142
- - desc/string.yaml
143
- - desc/dd.yaml
144
- - desc/array.yaml
145
- - desc/file.yaml
146
- - desc/alias_for.yaml
131
+ - spec/file_spec.rb
132
+ - desc/hash_to_proc.yaml
133
+ - desc/engine.yaml
147
134
  - desc/iterate.yaml
148
- - desc/version.yaml
149
- - desc/aliases.yaml
150
- - desc/binding.yaml
151
- - desc/regexp_visualize.yaml
152
135
  - desc/unary.yaml
153
- - desc/blank.yaml
154
- - desc/hash_to_proc.yaml
136
+ - desc/not.yaml
155
137
  - desc/ivars.yaml
156
- - desc/engine.yaml
157
- - desc/sandbox.yaml
158
- - desc/egonil.yaml
159
- - desc/union.yaml
160
- - desc/hash.yaml
161
- - desc/qq.yaml
162
- - desc/cc.yaml
163
138
  - desc/info.yaml
164
- - desc/oo.yaml
165
- - desc/os.yaml
166
- - desc/not.yaml
167
- - desc/square_brackets_for.yaml
139
+ - desc/regexp_visualize.yaml
168
140
  - desc/array_to_proc.yaml
169
- - desc/kernel.yaml
170
- - desc/enumerable.yaml
141
+ - desc/array.yaml
142
+ - desc/cc.yaml
143
+ - desc/square_brackets_for.yaml
144
+ - desc/class_to_proc.yaml
145
+ - desc/mm.yaml
171
146
  - desc/regexp_to_proc.yaml
147
+ - desc/file.yaml
172
148
  - desc/mcopy.yaml
149
+ - desc/enumerable.yaml
150
+ - desc/qq.yaml
151
+ - desc/union.yaml
152
+ - desc/kernel.yaml
153
+ - desc/dd.yaml
154
+ - desc/hash.yaml
155
+ - desc/aliases.yaml
156
+ - desc/sandbox.yaml
157
+ - desc/version.yaml
158
+ - desc/blank.yaml
159
+ - desc/tap.yaml
160
+ - desc/string.yaml
161
+ - desc/alias_for.yaml
162
+ - desc/os.yaml
163
+ - desc/oo.yaml
164
+ - desc/binding.yaml
165
+ - desc/egonil.yaml
173
166
  - Rakefile
174
167
  - zucker.gemspec
175
168
  - MIT-LICENSE
@@ -177,7 +170,7 @@ files:
177
170
  - CHANGELOG
178
171
  - doc/zucker_doc.rb
179
172
  - doc/zucker_doc.html
180
- has_rdoc: true
173
+ - .gemtest
181
174
  homepage: http://rubyzucker.info
182
175
  licenses:
183
176
  - MIT
@@ -191,23 +184,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
191
184
  requirements:
192
185
  - - ">="
193
186
  - !ruby/object:Gem::Version
194
- segments:
195
- - 1
196
- - 8
197
- - 7
198
187
  version: 1.8.7
199
188
  required_rubygems_version: !ruby/object:Gem::Requirement
200
189
  none: false
201
190
  requirements:
202
191
  - - ">="
203
192
  - !ruby/object:Gem::Version
204
- segments:
205
- - 0
206
193
  version: "0"
207
194
  requirements: []
208
195
 
209
196
  rubyforge_project:
210
- rubygems_version: 1.3.7
197
+ rubygems_version: 1.7.2
211
198
  signing_key:
212
199
  specification_version: 3
213
200
  summary: Many little helpers that sweeten your Ruby code :).