rangops 1.0.0.beta1

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 (61) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +23 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +49 -0
  7. data/Rakefile +19 -0
  8. data/bin/console +11 -0
  9. data/bin/setup +8 -0
  10. data/docs/README_md.html +150 -0
  11. data/docs/Rangops/Set.html +719 -0
  12. data/docs/Rangops.html +105 -0
  13. data/docs/created.rid +3 -0
  14. data/docs/css/fonts.css +167 -0
  15. data/docs/css/rdoc.css +683 -0
  16. data/docs/fonts/Lato-Light.ttf +0 -0
  17. data/docs/fonts/Lato-LightItalic.ttf +0 -0
  18. data/docs/fonts/Lato-Regular.ttf +0 -0
  19. data/docs/fonts/Lato-RegularItalic.ttf +0 -0
  20. data/docs/fonts/SourceCodePro-Bold.ttf +0 -0
  21. data/docs/fonts/SourceCodePro-Regular.ttf +0 -0
  22. data/docs/images/add.png +0 -0
  23. data/docs/images/arrow_up.png +0 -0
  24. data/docs/images/brick.png +0 -0
  25. data/docs/images/brick_link.png +0 -0
  26. data/docs/images/bug.png +0 -0
  27. data/docs/images/bullet_black.png +0 -0
  28. data/docs/images/bullet_toggle_minus.png +0 -0
  29. data/docs/images/bullet_toggle_plus.png +0 -0
  30. data/docs/images/date.png +0 -0
  31. data/docs/images/delete.png +0 -0
  32. data/docs/images/find.png +0 -0
  33. data/docs/images/loadingAnimation.gif +0 -0
  34. data/docs/images/macFFBgHack.png +0 -0
  35. data/docs/images/package.png +0 -0
  36. data/docs/images/page_green.png +0 -0
  37. data/docs/images/page_white_text.png +0 -0
  38. data/docs/images/page_white_width.png +0 -0
  39. data/docs/images/plugin.png +0 -0
  40. data/docs/images/ruby.png +0 -0
  41. data/docs/images/tag_blue.png +0 -0
  42. data/docs/images/tag_green.png +0 -0
  43. data/docs/images/transparent.png +0 -0
  44. data/docs/images/wrench.png +0 -0
  45. data/docs/images/wrench_orange.png +0 -0
  46. data/docs/images/zoom.png +0 -0
  47. data/docs/index.html +159 -0
  48. data/docs/js/darkfish.js +120 -0
  49. data/docs/js/navigation.js +105 -0
  50. data/docs/js/navigation.js.gz +0 -0
  51. data/docs/js/search.js +110 -0
  52. data/docs/js/search_index.js +1 -0
  53. data/docs/js/search_index.js.gz +0 -0
  54. data/docs/js/searcher.js +229 -0
  55. data/docs/js/searcher.js.gz +0 -0
  56. data/docs/table_of_contents.html +190 -0
  57. data/lib/rangops/set.rb +183 -0
  58. data/lib/rangops/version.rb +3 -0
  59. data/lib/rangops.rb +9 -0
  60. data/rangops.gemspec +38 -0
  61. metadata +141 -0
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/docs/index.html ADDED
@@ -0,0 +1,159 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+
8
+ <title>Rangops</title>
9
+
10
+ <meta name="keywords" content="ruby,documentation,Rangops">
11
+
12
+
13
+ <meta name="description" content="Rangops: Rangops Rangops is a simple Ruby extension library that aims to treat Ranges as sets. It provides methods for elementary set related operations and p">
14
+
15
+
16
+ <script type="text/javascript">
17
+ var rdoc_rel_prefix = "./";
18
+ var index_rel_prefix = "./";
19
+ </script>
20
+
21
+ <script src="./js/navigation.js" defer></script>
22
+ <script src="./js/search.js" defer></script>
23
+ <script src="./js/search_index.js" defer></script>
24
+ <script src="./js/searcher.js" defer></script>
25
+ <script src="./js/darkfish.js" defer></script>
26
+
27
+ <link href="./css/fonts.css" rel="stylesheet">
28
+ <link href="./css/rdoc.css" rel="stylesheet">
29
+
30
+
31
+ <body id="top" role="document" class="file">
32
+ <div id="navigation-toggle" role="button" tabindex="0" aria-label="Toggle sidebar" aria-expanded="true" aria-controls="navigation">
33
+ <span aria-hidden="true">&#9776;</span>
34
+ </div>
35
+
36
+
37
+ <nav id="navigation" role="navigation">
38
+ <div id="project-navigation">
39
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
40
+ <h2>
41
+ <a href="./index.html" rel="home">Home</a>
42
+ </h2>
43
+
44
+ <div id="table-of-contents-navigation">
45
+ <a href="./table_of_contents.html#pages">Pages</a>
46
+ <a href="./table_of_contents.html#classes">Classes</a>
47
+ <a href="./table_of_contents.html#methods">Methods</a>
48
+ </div>
49
+ </div>
50
+
51
+ <div id="search-section" role="search" class="project-section initially-hidden">
52
+ <form action="#" method="get" accept-charset="utf-8">
53
+ <div id="search-field-wrapper">
54
+ <input id="search-field" role="combobox" aria-label="Search"
55
+ aria-autocomplete="list" aria-controls="search-results"
56
+ type="text" name="search" placeholder="Search (/) for a class, method, ..." spellcheck="false"
57
+ title="Type to search, Up and Down to navigate, Enter to load">
58
+ </div>
59
+
60
+ <ul id="search-results" aria-label="Search Results"
61
+ aria-busy="false" aria-expanded="false"
62
+ aria-atomic="false" class="initially-hidden"></ul>
63
+ </form>
64
+ </div>
65
+
66
+ </div>
67
+
68
+
69
+ <div class="nav-section">
70
+ <h3>Table of Contents</h3>
71
+
72
+
73
+
74
+ <ul class="link-list" role="directory">
75
+ <li>
76
+ <details open>
77
+ <summary> <a href="#label-Rangops">Rangops</a>
78
+ </summary>
79
+ <ul class="link-list" role="directory">
80
+ <li> <a href="#label-License">License</a>
81
+
82
+ </ul>
83
+ </details>
84
+ </li>
85
+
86
+ </ul>
87
+ </div>
88
+
89
+
90
+ <div id="fileindex-section" class="nav-section">
91
+ <h3>Pages</h3>
92
+
93
+ <ul class="link-list">
94
+ <li><a href="./README_md.html">README</a>
95
+ </ul>
96
+ </div>
97
+
98
+ <div id="classindex-section" class="nav-section">
99
+ <h3>Class and Module Index</h3>
100
+
101
+ <ul class="link-list"><li><details open><summary><code><a href="./Rangops.html">Rangops</a></code></summary><ul class="link-list"><li><code><a href="./Rangops/Set.html">Set</a></code></li></ul></details></li></ul>
102
+ </div>
103
+
104
+
105
+ <footer id="validator-badges" role="contentinfo">
106
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
107
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.14.2.
108
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
109
+ </footer>
110
+
111
+ </nav>
112
+
113
+ <main role="main">
114
+
115
+
116
+ <h1 id="label-Rangops"><a href="Rangops.html"><code>Rangops</code></a><span><a href="#label-Rangops">&para;</a> <a href="#top">&uarr;</a></span></h1>
117
+
118
+ <p><a href="Rangops.html"><code>Rangops</code></a> is a simple Ruby extension library that aims to treat Ranges as sets.</p>
119
+
120
+ <p>It provides methods for elementary set related operations and predicates.</p>
121
+
122
+ <pre class="ruby"> <span class="ruby-keyword">class</span> <span class="ruby-constant">Range</span>
123
+ <span class="ruby-identifier">include</span> <span class="ruby-constant">Rangops</span><span class="ruby-operator">::</span><span class="ruby-constant">Set</span>
124
+ <span class="ruby-keyword">end</span>
125
+ </pre>
126
+
127
+ <p>Union:</p>
128
+
129
+ <pre> (1..5).union(3..10)
130
+ =&gt; 1..10
131
+
132
+ (11..19) | (16..23)
133
+ =&gt; 11..23</pre>
134
+
135
+ <p>Intersection:</p>
136
+
137
+ <pre> (1..5).intersection(3..10)
138
+ =&gt; 3..5
139
+
140
+ (11..19) &amp; (16..23)
141
+ =&gt; 16..19</pre>
142
+
143
+ <p>Complement, difference operations and subset/superset checking is also available. For full list of methods, check <a href="https://bartpiet.github.io/rangops/">API docs</a>.</p>
144
+
145
+ <p>No mapping to arrays nor iterating on elements is performed, so operations on ranges of any size are possible without penalty on speed or memory usage. Ranges delimited with any type of Numerics can be operated.</p>
146
+
147
+ <pre> (1.0..10).union(Rational(20, 4)..Float::INFINITY)
148
+ =&gt; 1.0..Infinity</pre>
149
+
150
+ <p>It works equally well on string and date ranges, although some operations may be not available if they only make sense for numbers.</p>
151
+
152
+ <p>Library tries to adhere to conventions established in Ruby core and <code>Set</code> module from standard library. It only focuses on extending core Range class; only ranges or elements covered by them can be used as arguments. Due to the properties of Range class, most operations return meaningful results only for ranges of the same type.</p>
153
+
154
+ <h2 id="label-License">License<span><a href="#label-License">&para;</a> <a href="#top">&uarr;</a></span></h2>
155
+
156
+ <p>The gem is available as open source under the terms of the <a href="https://opensource.org/licenses/MIT">MIT License</a>.</p>
157
+
158
+ </main>
159
+
@@ -0,0 +1,120 @@
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
+ /*
12
+ if (!("console" in window) || !("firebug" in console)) {
13
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
14
+ "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
15
+
16
+ window.console = {};
17
+ for (var i = 0; i < names.length; ++i)
18
+ window.console[names[i]] = function() {};
19
+ };
20
+ */
21
+
22
+
23
+ function showSource( e ) {
24
+ var target = e.target;
25
+ while (!target.classList.contains('method-detail')) {
26
+ target = target.parentNode;
27
+ }
28
+ if (typeof target !== "undefined" && target !== null) {
29
+ target = target.querySelector('.method-source-code');
30
+ }
31
+ if (typeof target !== "undefined" && target !== null) {
32
+ target.classList.toggle('active-menu')
33
+ }
34
+ };
35
+
36
+ function hookSourceViews() {
37
+ document.querySelectorAll('.method-source-toggle').forEach(function (codeObject) {
38
+ codeObject.addEventListener('click', showSource);
39
+ });
40
+ };
41
+
42
+ function hookSearch() {
43
+ var input = document.querySelector('#search-field');
44
+ var result = document.querySelector('#search-results');
45
+ result.classList.remove("initially-hidden");
46
+
47
+ var search_section = document.querySelector('#search-section');
48
+ search_section.classList.remove("initially-hidden");
49
+
50
+ var search = new Search(search_data, input, result);
51
+
52
+ search.renderItem = function(result) {
53
+ var li = document.createElement('li');
54
+ var html = '';
55
+
56
+ // TODO add relative path to <script> per-page
57
+ html += '<p class="search-match"><a href="' + index_rel_prefix + this.escapeHTML(result.path) + '">' + this.hlt(result.title);
58
+ if (result.params)
59
+ html += '<span class="params">' + result.params + '</span>';
60
+ html += '</a>';
61
+
62
+
63
+ if (result.namespace)
64
+ html += '<p class="search-namespace">' + this.hlt(result.namespace);
65
+
66
+ if (result.snippet)
67
+ html += '<div class="search-snippet">' + result.snippet + '</div>';
68
+
69
+ li.innerHTML = html;
70
+
71
+ return li;
72
+ }
73
+
74
+ search.select = function(result) {
75
+ window.location.href = result.firstChild.firstChild.href;
76
+ }
77
+
78
+ search.scrollIntoView = search.scrollInWindow;
79
+ };
80
+
81
+ function hookFocus() {
82
+ document.addEventListener("keydown", (event) => {
83
+ if (document.activeElement.tagName === 'INPUT') {
84
+ return;
85
+ }
86
+ if (event.key === "/") {
87
+ event.preventDefault();
88
+ document.querySelector('#search-field').focus();
89
+ }
90
+ });
91
+ }
92
+
93
+ function hookSidebar() {
94
+ var navigation = document.querySelector('#navigation');
95
+ var navigationToggle = document.querySelector('#navigation-toggle');
96
+
97
+ navigationToggle.addEventListener('click', function() {
98
+ navigation.hidden = !navigation.hidden;
99
+ navigationToggle.ariaExpanded = navigationToggle.ariaExpanded !== 'true';
100
+ });
101
+
102
+ var isSmallViewport = window.matchMedia("(max-width: 1023px)").matches;
103
+ if (isSmallViewport) {
104
+ navigation.hidden = true;
105
+ navigationToggle.ariaExpanded = false;
106
+ document.addEventListener('click', (e) => {
107
+ if (e.target.closest('#navigation a')) {
108
+ navigation.hidden = true;
109
+ navigationToggle.ariaExpanded = false;
110
+ }
111
+ });
112
+ }
113
+ }
114
+
115
+ document.addEventListener('DOMContentLoaded', function() {
116
+ hookSourceViews();
117
+ hookSearch();
118
+ hookFocus();
119
+ hookSidebar();
120
+ });
@@ -0,0 +1,105 @@
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.addEventListener('keydown', function(e) {
14
+ _this.onkeydown(e);
15
+ });
16
+
17
+ this.navigationActive = true;
18
+ }
19
+
20
+ this.setNavigationActive = function(state) {
21
+ this.navigationActive = state;
22
+ }
23
+
24
+ this.onkeydown = function(e) {
25
+ if (!this.navigationActive) return;
26
+ switch(e.key) {
27
+ case 'ArrowLeft':
28
+ if (this.moveLeft()) e.preventDefault();
29
+ break;
30
+ case 'ArrowUp':
31
+ if (e.key == 'ArrowUp' || e.ctrlKey) {
32
+ if (this.moveUp()) e.preventDefault();
33
+ }
34
+ break;
35
+ case 'ArrowRight':
36
+ if (this.moveRight()) e.preventDefault();
37
+ break;
38
+ case 'ArrowDown':
39
+ if (e.key == 'ArrowDown' || e.ctrlKey) {
40
+ if (this.moveDown()) e.preventDefault();
41
+ }
42
+ break;
43
+ case 'Enter':
44
+ if (this.current) e.preventDefault();
45
+ this.select(this.current);
46
+ break;
47
+ }
48
+ if (e.ctrlKey && e.shiftKey) this.select(this.current);
49
+ }
50
+
51
+ this.moveRight = function() {
52
+ }
53
+
54
+ this.moveLeft = function() {
55
+ }
56
+
57
+ this.move = function(isDown) {
58
+ }
59
+
60
+ this.moveUp = function() {
61
+ return this.move(false);
62
+ }
63
+
64
+ this.moveDown = function() {
65
+ return this.move(true);
66
+ }
67
+
68
+ /*
69
+ * Scrolls to the given element in the scrollable element view.
70
+ */
71
+ this.scrollInElement = function(element, view) {
72
+ var offset, viewHeight, viewScroll, height;
73
+ offset = element.offsetTop;
74
+ height = element.offsetHeight;
75
+ viewHeight = view.offsetHeight;
76
+ viewScroll = view.scrollTop;
77
+
78
+ if (offset - viewScroll + height > viewHeight) {
79
+ view.scrollTop = offset - viewHeight + height;
80
+ }
81
+ if (offset < viewScroll) {
82
+ view.scrollTop = offset;
83
+ }
84
+ }
85
+
86
+ /*
87
+ * Scrolls to the given element in the window. The second argument is
88
+ * ignored
89
+ */
90
+ this.scrollInWindow = function(element, ignored) {
91
+ var offset, viewHeight, viewScroll, height;
92
+ offset = element.offsetTop;
93
+ height = element.offsetHeight;
94
+ viewHeight = window.innerHeight;
95
+ viewScroll = window.scrollY;
96
+
97
+ if (offset - viewScroll + height > viewHeight) {
98
+ window.scrollTo(window.scrollX, offset - viewHeight + height);
99
+ }
100
+ if (offset < viewScroll) {
101
+ window.scrollTo(window.scrollX, offset);
102
+ }
103
+ }
104
+ }
105
+
Binary file
data/docs/js/search.js ADDED
@@ -0,0 +1,110 @@
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.parentNode;
8
+ this.searcher = new Searcher(data.index);
9
+ this.init();
10
+ }
11
+
12
+ Search.prototype = Object.assign({}, Navigation, new function() {
13
+ var suid = 1;
14
+
15
+ this.init = function() {
16
+ var _this = this;
17
+ var observer = function(e) {
18
+ switch(e.key) {
19
+ case 'ArrowUp':
20
+ case 'ArrowDown':
21
+ return;
22
+ }
23
+ _this.search(_this.input.value);
24
+ };
25
+ this.input.addEventListener('keyup', observer);
26
+ this.input.addEventListener('click', observer); // mac's clear field
27
+
28
+ this.searcher.ready(function(results, isLast) {
29
+ _this.addResults(results, isLast);
30
+ })
31
+
32
+ this.initNavigation();
33
+ this.setNavigationActive(false);
34
+ }
35
+
36
+ this.search = function(value, selectFirstMatch) {
37
+ value = value.trim().toLowerCase();
38
+ if (value) {
39
+ this.setNavigationActive(true);
40
+ } else {
41
+ this.setNavigationActive(false);
42
+ }
43
+
44
+ if (value == '') {
45
+ this.lastQuery = value;
46
+ this.result.innerHTML = '';
47
+ this.result.setAttribute('aria-expanded', 'false');
48
+ this.setNavigationActive(false);
49
+ } else if (value != this.lastQuery) {
50
+ this.lastQuery = value;
51
+ this.result.setAttribute('aria-busy', 'true');
52
+ this.result.setAttribute('aria-expanded', 'true');
53
+ this.firstRun = true;
54
+ this.searcher.find(value);
55
+ }
56
+ }
57
+
58
+ this.addResults = function(results, isLast) {
59
+ var target = this.result;
60
+ if (this.firstRun && (results.length > 0 || isLast)) {
61
+ this.current = null;
62
+ this.result.innerHTML = '';
63
+ }
64
+
65
+ for (var i=0, l = results.length; i < l; i++) {
66
+ var item = this.renderItem.call(this, results[i]);
67
+ item.setAttribute('id', 'search-result-' + target.childElementCount);
68
+ target.appendChild(item);
69
+ };
70
+
71
+ if (this.firstRun && results.length > 0) {
72
+ this.firstRun = false;
73
+ this.current = target.firstChild;
74
+ this.current.classList.add('search-selected');
75
+ }
76
+ //TODO: ECMAScript
77
+ //if (jQuery.browser.msie) this.$element[0].className += '';
78
+
79
+ if (isLast) this.result.setAttribute('aria-busy', 'false');
80
+ }
81
+
82
+ this.move = function(isDown) {
83
+ if (!this.current) return;
84
+ var next = isDown ? this.current.nextElementSibling : this.current.previousElementSibling;
85
+ if (next) {
86
+ this.current.classList.remove('search-selected');
87
+ next.classList.add('search-selected');
88
+ this.input.setAttribute('aria-activedescendant', next.getAttribute('id'));
89
+ this.scrollIntoView(next, this.view);
90
+ this.current = next;
91
+ this.input.value = next.firstChild.firstChild.text;
92
+ this.input.select();
93
+ }
94
+ return true;
95
+ }
96
+
97
+ this.hlt = function(html) {
98
+ return this.escapeHTML(html).
99
+ replace(/\u0001/g, '<em>').
100
+ replace(/\u0002/g, '</em>');
101
+ }
102
+
103
+ this.escapeHTML = function(html) {
104
+ return html.replace(/[&<>"`']/g, function(c) {
105
+ return '&#' + c.charCodeAt(0) + ';';
106
+ });
107
+ }
108
+
109
+ });
110
+
@@ -0,0 +1 @@
1
+ var search_data = {"index":{"searchIndex":["rangops","set","&()","+()","-()","complement()","contains?()","difference()","disjoint?()","intersect?()","intersection()","is_contained_by?()","proper_subset?()","proper_superset?()","sort_by_boundaries()","subset?()","superset?()","union()","|()","readme"],"longSearchIndex":["rangops","rangops::set","rangops::set#&()","rangops::set#+()","rangops::set#-()","rangops::set#complement()","rangops::set#contains?()","rangops::set#difference()","rangops::set#disjoint?()","rangops::set#intersect?()","rangops::set#intersection()","rangops::set#is_contained_by?()","rangops::set#proper_subset?()","rangops::set#proper_superset?()","rangops::set::sort_by_boundaries()","rangops::set#subset?()","rangops::set#superset?()","rangops::set#union()","rangops::set#|()",""],"info":[["Rangops","","Rangops.html","",""],["Rangops::Set","","Rangops/Set.html","","<p>Module defining basic set operations that can be performed\non ranges.\n<p>union\n<p>intersection\n"],["&","Rangops::Set","Rangops/Set.html#method-i-26","(other)",""],["+","Rangops::Set","Rangops/Set.html#method-i-2B","(other)",""],["-","Rangops::Set","Rangops/Set.html#method-i-2D","(other)",""],["complement","Rangops::Set","Rangops/Set.html#method-i-complement","(other)","<p>Relative complement of 2 ranges. Returns a range covering\nelements from <code>other</code> that are not covered by ...\n"],["contains?","Rangops::Set","Rangops/Set.html#method-i-contains-3F","(other)",""],["difference","Rangops::Set","Rangops/Set.html#method-i-difference","(other)","<p>Symmetric difference of 2 ranges. Returns ranges covering\nelements of both operands, excluding elements ...\n"],["disjoint?","Rangops::Set","Rangops/Set.html#method-i-disjoint-3F","(other)","<p>Opposite of ‘intersect?.\n"],["intersect?","Rangops::Set","Rangops/Set.html#method-i-intersect-3F","(other)","<p>Checks if 2 ranges have any common elements.\n\n<pre> (1..10).intersect?(8..15)\n =&gt; true\n\n (1..10).intersect?(11..15) ...</pre>\n"],["intersection","Rangops::Set","Rangops/Set.html#method-i-intersection","(other)","<p>Intersection of 2 ranges. Returns a range covering elements\ncommon to both ranges. Returns <code>nil</code> if ranges ...\n"],["is_contained_by?","Rangops::Set","Rangops/Set.html#method-i-is_contained_by-3F","(other)",""],["proper_subset?","Rangops::Set","Rangops/Set.html#method-i-proper_subset-3F","(other)","<p>Checks if <code>self</code> is proper subset of <code>other</code>,\ni.e. is subset and has elements not present\nin <code>other</code>.\n\n<pre class=\"ruby\">(<span class=\"ruby-value\">1</span><span class=\"ruby-operator\">..</span><span class=\"ruby-value\">10</span>).<span class=\"ruby-identifier\">proper_subset?</span>(<span class=\"ruby-value\">0</span><span class=\"ruby-operator\">..</span><span class=\"ruby-value\">12</span>) <span class=\"ruby-operator\">...</span>\n</pre>\n"],["proper_superset?","Rangops::Set","Rangops/Set.html#method-i-proper_superset-3F","(other)","<p>Checks if <code>self</code> is proper superset of <code>other</code>,\ni.e. is superset and has elements not present\nin <code>other</code>.\n\n<pre class=\"ruby\">(<span class=\"ruby-value\">1</span><span class=\"ruby-operator\">..</span><span class=\"ruby-value\">10</span>).<span class=\"ruby-identifier\">proper_superset?</span>(<span class=\"ruby-value\">2</span><span class=\"ruby-operator\">..</span><span class=\"ruby-value\">5</span>) <span class=\"ruby-operator\">...</span>\n</pre>\n"],["sort_by_boundaries","Rangops::Set","Rangops/Set.html#method-c-sort_by_boundaries","(a, b)","<p>Determine which range has lower begin, and which one higher end.\n"],["subset?","Rangops::Set","Rangops/Set.html#method-i-subset-3F","(other)","<p>Checks if <code>self</code> is subset of <code>other</code>, i.e. all\nelements of <code>self</code> fit within <code>other</code>.\n\n<pre class=\"ruby\">(<span class=\"ruby-value\">1</span><span class=\"ruby-operator\">..</span><span class=\"ruby-value\">10</span>).<span class=\"ruby-identifier\">subset?</span>(<span class=\"ruby-value\">0</span><span class=\"ruby-operator\">..</span><span class=\"ruby-value\">12</span>) <span class=\"ruby-operator\">...</span>\n</pre>\n"],["superset?","Rangops::Set","Rangops/Set.html#method-i-superset-3F","(other)","<p>Checks if <code>self</code> is superset of <code>other</code>, i.e. all\nelements of <code>other</code> fit within <code>self</code>.\n\n<pre class=\"ruby\">(<span class=\"ruby-value\">1</span><span class=\"ruby-operator\">..</span><span class=\"ruby-value\">10</span>).<span class=\"ruby-identifier\">superset?</span>(<span class=\"ruby-value\">2</span><span class=\"ruby-operator\">..</span><span class=\"ruby-value\">5</span>) <span class=\"ruby-operator\">...</span>\n</pre>\n"],["union","Rangops::Set","Rangops/Set.html#method-i-union","(other)","<p>Union of 2 ranges. Returns a range covering sum of all elements\nbelonging to both ranges. Returns <code>nil</code> ...\n"],["|","Rangops::Set","Rangops/Set.html#method-i-7C","(other)",""],["README","","README_md.html","","<p>Rangops\n<p>Rangops is a simple Ruby extension library that aims to treat Ranges as sets.\n<p>It provides methods …\n"]]}}
Binary file