https://github.com/cyrilluce/ranges.js
javascript ranges calculate library / JavaScript区间计算库
https://github.com/cyrilluce/ranges.js
Last synced: about 1 month ago
JSON representation
javascript ranges calculate library / JavaScript区间计算库
- Host: GitHub
- URL: https://github.com/cyrilluce/ranges.js
- Owner: cyrilluce
- Created: 2015-07-07T14:17:59.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2015-07-09T03:58:25.000Z (almost 10 years ago)
- Last Synced: 2024-02-22T18:21:33.154Z (over 1 year ago)
- Language: JavaScript
- Size: 117 KB
- Stars: 4
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
JavaScript区间计算库
JavaScript ranges calculate library[](https://travis-ci.org/cyrilluce/Ranges.js)
[](https://coveralls.io/r/cyrilluce/Ranges.js?branch=master)## 用法/Usage
可参照test/test.js中的测试代码
Refer to test code in `test/test.js`
## 示例/Sample
标准用法/Standard usage
```js
var Ranges = require('range-calculator');
var ranges = new Ranges(1,10);
ranges.add([21, 30]); // ranges.ranges = [ [1,10], [21,30] ]
ranges.isConflict([11, 20]); // false
ranges.isConflict([25, 45]); // true
ranges.add([11, 20]); // ranges.ranges = [ [1,30] ]
ranges.sub([1,5]); // ranges.ranges = [ [6,30] ]
ranges.sub([15,25]); // ranges.ranges = [ [6,14], [26,30] ]
ranges.isContain(12); // true
```用于IPv4冲突判断/Use as IPv4 conflict detect
```js
var ipToNumber = function(dot){
var d = dot.split('.');
return ((((((+d[0])*256)+(+d[1]))*256)+(+d[2]))*256)+(+d[3]);
};
var ranges = new Ranges(ipToNumber('192.168.1.100'), ipToNumber('192.168.1.199'));
ranges.isConflict([ipToNumber('192.168.0.1'), ipToNumber('192.168.2.1')]); // true
ranges.isContain(ipToNumber('192.168.1.125')); // true
```用于IPv6冲突判断(字串对比)Use as IPv6 conflict detect(string range)
```js
// [JS] Expand Abbreviated IPv6 Addresses
// by Christopher Miller
// http://forrst.com/posts/JS_Expand_Abbreviated_IPv6_Addresses-1OR
// Modified to work with embedded IPv4 addresses
// https://gist.github.com/Mottie/7018157
function expand(address)
{
var fullAddress = "";
var expandedAddress = "";
var validGroupCount = 8;
var validGroupSize = 4;
if(address.indexOf("::") == -1) // All eight groups are present.
fullAddress = address;
else // Consecutive groups of zeroes have been collapsed with "::".
{
var sides = address.split("::");
var groupsPresent = 0;
for(var i=0; i