shenanigans 1.0.9 → 1.0.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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -3
  3. data/README.rdoc +1 -1
  4. data/doc/Array.html +423 -202
  5. data/doc/Fixnum.html +155 -140
  6. data/doc/Hash.html +305 -206
  7. data/doc/Kernel.html +360 -249
  8. data/doc/Module.html +181 -153
  9. data/doc/Object.html +210 -201
  10. data/doc/String.html +166 -139
  11. data/doc/_index.html +188 -0
  12. data/doc/class_list.html +54 -0
  13. data/doc/css/common.css +1 -0
  14. data/doc/css/full_list.css +57 -0
  15. data/doc/css/style.css +338 -0
  16. data/doc/file.README.html +162 -0
  17. data/doc/file_list.html +56 -0
  18. data/doc/frames.html +26 -0
  19. data/doc/index.html +62 -80
  20. data/doc/js/app.js +219 -0
  21. data/doc/js/full_list.js +178 -0
  22. data/doc/js/jquery.js +4 -18
  23. data/doc/method_list.html +149 -0
  24. data/doc/top-level-namespace.html +114 -0
  25. data/lib/shenanigans.rb +3 -1
  26. data/lib/shenanigans/array.rb +3 -3
  27. data/lib/shenanigans/array/reductions.rb +29 -0
  28. data/lib/shenanigans/kernel.rb +4 -4
  29. data/lib/shenanigans/module.rb +1 -1
  30. data/lib/shenanigans/object.rb +2 -2
  31. data/lib/shenanigans/string.rb +1 -1
  32. data/test/array/test_reductions.rb +27 -0
  33. metadata +16 -36
  34. data/doc/README_rdoc.html +0 -199
  35. data/doc/created.rid +0 -25
  36. data/doc/images/add.png +0 -0
  37. data/doc/images/arrow_up.png +0 -0
  38. data/doc/images/brick.png +0 -0
  39. data/doc/images/brick_link.png +0 -0
  40. data/doc/images/bug.png +0 -0
  41. data/doc/images/bullet_black.png +0 -0
  42. data/doc/images/bullet_toggle_minus.png +0 -0
  43. data/doc/images/bullet_toggle_plus.png +0 -0
  44. data/doc/images/date.png +0 -0
  45. data/doc/images/delete.png +0 -0
  46. data/doc/images/find.png +0 -0
  47. data/doc/images/loadingAnimation.gif +0 -0
  48. data/doc/images/macFFBgHack.png +0 -0
  49. data/doc/images/package.png +0 -0
  50. data/doc/images/page_green.png +0 -0
  51. data/doc/images/page_white_text.png +0 -0
  52. data/doc/images/page_white_width.png +0 -0
  53. data/doc/images/plugin.png +0 -0
  54. data/doc/images/ruby.png +0 -0
  55. data/doc/images/tag_blue.png +0 -0
  56. data/doc/images/tag_green.png +0 -0
  57. data/doc/images/transparent.png +0 -0
  58. data/doc/images/wrench.png +0 -0
  59. data/doc/images/wrench_orange.png +0 -0
  60. data/doc/images/zoom.png +0 -0
  61. data/doc/js/darkfish.js +0 -155
  62. data/doc/js/navigation.js +0 -142
  63. data/doc/js/search.js +0 -94
  64. data/doc/js/search_index.js +0 -1
  65. data/doc/js/searcher.js +0 -228
  66. data/doc/rdoc.css +0 -595
  67. data/doc/table_of_contents.html +0 -114
data/doc/created.rid DELETED
@@ -1,25 +0,0 @@
1
- Wed, 06 Nov 2013 11:32:26 +0630
2
- README.rdoc Thu, 17 May 2012 16:15:08 +0630
3
- lib/shenanigans.rb Sun, 15 Jul 2012 04:23:13 +0630
4
- lib/shenanigans/array.rb Thu, 28 Jun 2012 13:30:29 +0630
5
- lib/shenanigans/array/caret.rb Thu, 28 Jun 2012 13:45:50 +0630
6
- lib/shenanigans/array/random_subarray.rb Thu, 17 May 2012 04:33:23 +0630
7
- lib/shenanigans/array/zip_with.rb Wed, 20 Jun 2012 01:53:27 +0630
8
- lib/shenanigans/fixnum.rb Sun, 15 Jul 2012 04:19:59 +0630
9
- lib/shenanigans/fixnum/string_length.rb Sun, 15 Jul 2012 04:30:21 +0630
10
- lib/shenanigans/hash.rb Thu, 09 Aug 2012 23:02:30 +0630
11
- lib/shenanigans/hash/extract.rb Thu, 09 Aug 2012 23:17:48 +0630
12
- lib/shenanigans/hash/has_shape_pred.rb Wed, 20 Jun 2012 01:55:03 +0630
13
- lib/shenanigans/hash/to_ostruct.rb Thu, 10 Oct 2013 23:47:27 +0630
14
- lib/shenanigans/kernel.rb Wed, 06 Nov 2013 10:47:33 +0630
15
- lib/shenanigans/kernel/fn.rb Wed, 06 Nov 2013 10:54:54 +0630
16
- lib/shenanigans/kernel/prompt.rb Wed, 06 Nov 2013 10:55:11 +0630
17
- lib/shenanigans/kernel/require_optional.rb Wed, 06 Nov 2013 10:54:41 +0630
18
- lib/shenanigans/kernel/with.rb Wed, 06 Nov 2013 10:56:14 +0630
19
- lib/shenanigans/module.rb Thu, 10 Oct 2013 21:59:25 +0630
20
- lib/shenanigans/module/private_accessor.rb Wed, 06 Nov 2013 11:23:15 +0630
21
- lib/shenanigans/object.rb Thu, 28 Jun 2012 13:40:12 +0630
22
- lib/shenanigans/object/display.rb Fri, 25 May 2012 21:59:45 +0630
23
- lib/shenanigans/object/it.rb Thu, 28 Jun 2012 13:37:56 +0630
24
- lib/shenanigans/string.rb Mon, 20 Aug 2012 22:59:46 +0630
25
- lib/shenanigans/string/in_groups_of.rb Mon, 20 Aug 2012 23:23:19 +0630
data/doc/images/add.png DELETED
Binary file
Binary file
data/doc/images/brick.png DELETED
Binary file
Binary file
data/doc/images/bug.png DELETED
Binary file
Binary file
Binary file
Binary file
data/doc/images/date.png DELETED
Binary file
Binary file
data/doc/images/find.png DELETED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/doc/images/ruby.png DELETED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/doc/images/zoom.png DELETED
Binary file
data/doc/js/darkfish.js DELETED
@@ -1,155 +0,0 @@
1
- /**
2
- *
3
- * Darkfish Page Functions
4
- * $Id: darkfish.js 53 2009-01-07 02:52:03Z deveiant $
5
- *
6
- * Author: Michael Granger <mgranger@laika.com>
7
- *
8
- */
9
-
10
- /* Provide console simulation for firebug-less environments */
11
- if (!("console" in window) || !("firebug" in console)) {
12
- var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
13
- "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
14
-
15
- window.console = {};
16
- for (var i = 0; i < names.length; ++i)
17
- window.console[names[i]] = function() {};
18
- };
19
-
20
-
21
- /**
22
- * Unwrap the first element that matches the given @expr@ from the targets and return them.
23
- */
24
- $.fn.unwrap = function( expr ) {
25
- return this.each( function() {
26
- $(this).parents( expr ).eq( 0 ).after( this ).remove();
27
- });
28
- };
29
-
30
-
31
- function showSource( e ) {
32
- var target = e.target;
33
- var codeSections = $(target).
34
- parents('.method-detail').
35
- find('.method-source-code');
36
-
37
- $(target).
38
- parents('.method-detail').
39
- find('.method-source-code').
40
- slideToggle();
41
- };
42
-
43
- function hookSourceViews() {
44
- $('.method-heading').click( showSource );
45
- };
46
-
47
- function toggleDebuggingSection() {
48
- $('.debugging-section').slideToggle();
49
- };
50
-
51
- function hookDebuggingToggle() {
52
- $('#debugging-toggle img').click( toggleDebuggingSection );
53
- };
54
-
55
- function hookTableOfContentsToggle() {
56
- $('.indexpage li .toc-toggle').each( function() {
57
- $(this).click( function() {
58
- $(this).toggleClass('open');
59
- });
60
-
61
- var section = $(this).next();
62
-
63
- $(this).click( function() {
64
- section.slideToggle();
65
- });
66
- });
67
- }
68
-
69
- function hookSearch() {
70
- var input = $('#search-field').eq(0);
71
- var result = $('#search-results').eq(0);
72
- $(result).show();
73
-
74
- var search_section = $('#search-section').get(0);
75
- $(search_section).show();
76
-
77
- var search = new Search(search_data, input, result);
78
-
79
- search.renderItem = function(result) {
80
- var li = document.createElement('li');
81
- var html = '';
82
-
83
- // TODO add relative path to <script> per-page
84
- html += '<p class="search-match"><a href="' + rdoc_rel_prefix + result.path + '">' + this.hlt(result.title);
85
- if (result.params)
86
- html += '<span class="params">' + result.params + '</span>';
87
- html += '</a>';
88
-
89
-
90
- if (result.namespace)
91
- html += '<p class="search-namespace">' + this.hlt(result.namespace);
92
-
93
- if (result.snippet)
94
- html += '<div class="search-snippet">' + result.snippet + '</div>';
95
-
96
- li.innerHTML = html;
97
-
98
- return li;
99
- }
100
-
101
- search.select = function(result) {
102
- var result_element = result.get(0);
103
- window.location.href = result_element.firstChild.firstChild.href;
104
- }
105
-
106
- search.scrollIntoView = search.scrollInWindow;
107
- };
108
-
109
- function highlightTarget( anchor ) {
110
- console.debug( "Highlighting target '%s'.", anchor );
111
-
112
- $("a[name]").each( function() {
113
- if ( $(this).attr("name") == anchor ) {
114
- if ( !$(this).parent().parent().hasClass('target-section') ) {
115
- console.debug( "Wrapping the target-section" );
116
- $('div.method-detail').unwrap( 'div.target-section' );
117
- $(this).parent().wrap( '<div class="target-section"></div>' );
118
- } else {
119
- console.debug( "Already wrapped." );
120
- }
121
- }
122
- });
123
- };
124
-
125
- function highlightLocationTarget() {
126
- console.debug( "Location hash: %s", window.location.hash );
127
- if ( ! window.location.hash || window.location.hash.length == 0 ) return;
128
-
129
- var anchor = window.location.hash.substring(1);
130
- console.debug( "Found anchor: %s; matching %s", anchor, "a[name=" + anchor + "]" );
131
-
132
- highlightTarget( anchor );
133
- };
134
-
135
- function highlightClickTarget( event ) {
136
- console.debug( "Highlighting click target for event %o", event.target );
137
- try {
138
- var anchor = $(event.target).attr( 'href' ).substring(1);
139
- console.debug( "Found target anchor: %s", anchor );
140
- highlightTarget( anchor );
141
- } catch ( err ) {
142
- console.error( "Exception while highlighting: %o", err );
143
- };
144
- };
145
-
146
-
147
- $(document).ready( function() {
148
- hookSourceViews();
149
- hookDebuggingToggle();
150
- hookSearch();
151
- highlightLocationTarget();
152
- hookTableOfContentsToggle();
153
-
154
- $('ul.link-list a').bind( "click", highlightClickTarget );
155
- });
data/doc/js/navigation.js DELETED
@@ -1,142 +0,0 @@
1
- /*
2
- * Navigation allows movement using the arrow keys through the search results.
3
- *
4
- * When using this library you will need to set scrollIntoView to the
5
- * appropriate function for your layout. Use scrollInWindow if the container
6
- * is not scrollable and scrollInElement if the container is a separate
7
- * scrolling region.
8
- */
9
- Navigation = new function() {
10
- this.initNavigation = function() {
11
- var _this = this;
12
-
13
- $(document).keydown(function(e) {
14
- _this.onkeydown(e);
15
- }).keyup(function(e) {
16
- _this.onkeyup(e);
17
- });
18
-
19
- this.navigationActive = true;
20
- }
21
-
22
- this.setNavigationActive = function(state) {
23
- this.navigationActive = state;
24
- this.clearMoveTimeout();
25
- }
26
-
27
- this.onkeyup = function(e) {
28
- if (!this.navigationActive) return;
29
-
30
- switch(e.keyCode) {
31
- case 37: //Event.KEY_LEFT:
32
- case 38: //Event.KEY_UP:
33
- case 39: //Event.KEY_RIGHT:
34
- case 40: //Event.KEY_DOWN:
35
- this.clearMoveTimeout();
36
- break;
37
- }
38
- }
39
-
40
- this.onkeydown = function(e) {
41
- if (!this.navigationActive) return;
42
- switch(e.keyCode) {
43
- case 37: //Event.KEY_LEFT:
44
- if (this.moveLeft()) e.preventDefault();
45
- break;
46
- case 38: //Event.KEY_UP:
47
- if (e.keyCode == 38 || e.ctrlKey) {
48
- if (this.moveUp()) e.preventDefault();
49
- this.startMoveTimeout(false);
50
- }
51
- break;
52
- case 39: //Event.KEY_RIGHT:
53
- if (this.moveRight()) e.preventDefault();
54
- break;
55
- case 40: //Event.KEY_DOWN:
56
- if (e.keyCode == 40 || e.ctrlKey) {
57
- if (this.moveDown()) e.preventDefault();
58
- this.startMoveTimeout(true);
59
- }
60
- break;
61
- case 13: //Event.KEY_RETURN:
62
- if (this.$current)
63
- e.preventDefault();
64
- this.select(this.$current);
65
- break;
66
- }
67
- if (e.ctrlKey && e.shiftKey) this.select(this.$current);
68
- }
69
-
70
- this.clearMoveTimeout = function() {
71
- clearTimeout(this.moveTimeout);
72
- this.moveTimeout = null;
73
- }
74
-
75
- this.startMoveTimeout = function(isDown) {
76
- if (!$.browser.mozilla && !$.browser.opera) return;
77
- if (this.moveTimeout) this.clearMoveTimeout();
78
- var _this = this;
79
-
80
- var go = function() {
81
- if (!_this.moveTimeout) return;
82
- _this[isDown ? 'moveDown' : 'moveUp']();
83
- _this.moveTimout = setTimeout(go, 100);
84
- }
85
- this.moveTimeout = setTimeout(go, 200);
86
- }
87
-
88
- this.moveRight = function() {
89
- }
90
-
91
- this.moveLeft = function() {
92
- }
93
-
94
- this.move = function(isDown) {
95
- }
96
-
97
- this.moveUp = function() {
98
- return this.move(false);
99
- }
100
-
101
- this.moveDown = function() {
102
- return this.move(true);
103
- }
104
-
105
- /*
106
- * Scrolls to the given element in the scrollable element view.
107
- */
108
- this.scrollInElement = function(element, view) {
109
- var offset, viewHeight, viewScroll, height;
110
- offset = element.offsetTop;
111
- height = element.offsetHeight;
112
- viewHeight = view.offsetHeight;
113
- viewScroll = view.scrollTop;
114
-
115
- if (offset - viewScroll + height > viewHeight) {
116
- view.scrollTop = offset - viewHeight + height;
117
- }
118
- if (offset < viewScroll) {
119
- view.scrollTop = offset;
120
- }
121
- }
122
-
123
- /*
124
- * Scrolls to the given element in the window. The second argument is
125
- * ignored
126
- */
127
- this.scrollInWindow = function(element, ignored) {
128
- var offset, viewHeight, viewScroll, height;
129
- offset = element.offsetTop;
130
- height = element.offsetHeight;
131
- viewHeight = window.innerHeight;
132
- viewScroll = window.scrollY;
133
-
134
- if (offset - viewScroll + height > viewHeight) {
135
- window.scrollTo(window.scrollX, offset - viewHeight + height);
136
- }
137
- if (offset < viewScroll) {
138
- window.scrollTo(window.scrollX, offset);
139
- }
140
- }
141
- }
142
-
data/doc/js/search.js DELETED
@@ -1,94 +0,0 @@
1
- Search = function(data, input, result) {
2
- this.data = data;
3
- this.$input = $(input);
4
- this.$result = $(result);
5
-
6
- this.$current = null;
7
- this.$view = this.$result.parent();
8
- this.searcher = new Searcher(data.index);
9
- this.init();
10
- }
11
-
12
- Search.prototype = $.extend({}, Navigation, new function() {
13
- var suid = 1;
14
-
15
- this.init = function() {
16
- var _this = this;
17
- var observer = function() {
18
- _this.search(_this.$input[0].value);
19
- };
20
- this.$input.keyup(observer);
21
- this.$input.click(observer); // mac's clear field
22
-
23
- this.searcher.ready(function(results, isLast) {
24
- _this.addResults(results, isLast);
25
- })
26
-
27
- this.initNavigation();
28
- this.setNavigationActive(false);
29
- }
30
-
31
- this.search = function(value, selectFirstMatch) {
32
- value = jQuery.trim(value).toLowerCase();
33
- if (value) {
34
- this.setNavigationActive(true);
35
- } else {
36
- this.setNavigationActive(false);
37
- }
38
-
39
- if (value == '') {
40
- this.lastQuery = value;
41
- this.$result.empty();
42
- this.setNavigationActive(false);
43
- } else if (value != this.lastQuery) {
44
- this.lastQuery = value;
45
- this.firstRun = true;
46
- this.searcher.find(value);
47
- }
48
- }
49
-
50
- this.addResults = function(results, isLast) {
51
- var target = this.$result.get(0);
52
- if (this.firstRun && (results.length > 0 || isLast)) {
53
- this.$current = null;
54
- this.$result.empty();
55
- }
56
-
57
- for (var i=0, l = results.length; i < l; i++) {
58
- target.appendChild(this.renderItem.call(this, results[i]));
59
- };
60
-
61
- if (this.firstRun && results.length > 0) {
62
- this.firstRun = false;
63
- this.$current = $(target.firstChild);
64
- this.$current.addClass('current');
65
- }
66
- if (jQuery.browser.msie) this.$element[0].className += '';
67
- }
68
-
69
- this.move = function(isDown) {
70
- if (!this.$current) return;
71
- var $next = this.$current[isDown ? 'next' : 'prev']();
72
- if ($next.length) {
73
- this.$current.removeClass('current');
74
- $next.addClass('current');
75
- this.scrollIntoView($next[0], this.$view[0]);
76
- this.$current = $next;
77
- }
78
- return true;
79
- }
80
-
81
- this.hlt = function(html) {
82
- return this.escapeHTML(html).
83
- replace(/\u0001/g, '<em>').
84
- replace(/\u0002/g, '</em>');
85
- }
86
-
87
- this.escapeHTML = function(html) {
88
- return html.replace(/[&<>]/g, function(c) {
89
- return '&#' + c.charCodeAt(0) + ';';
90
- });
91
- }
92
-
93
- });
94
-