An open API service indexing awesome lists of open source software.

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区间计算库

Awesome Lists containing this project

README

        

JavaScript区间计算库
JavaScript ranges calculate library

[![Build Status](https://travis-ci.org/cyrilluce/Ranges.js.svg?branch=master)](https://travis-ci.org/cyrilluce/Ranges.js)
[![Test Coverage](https://img.shields.io/coveralls/cyrilluce/Ranges.js/master.svg)](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