Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

rangegen

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rangegen

Generate a range between two numbers or letters. Examples: 1-100, a-z, A-Z, a-zz or even A-ZZZZZ.

  • 0.2.6
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
4
increased by300%
Maintainers
1
Weekly downloads
 
Created
Source

RangeGen (v0.2.6)

Install: npm install rangegen

This project is Unlicensed. In other words, I don't care what you do with it. However, if you make something interesting, I would like to check it out.

Information:

Generate a range between two numbers or letters. Examples: 1-100, a-z, A-Z, a-zz or even A-ZZZZZ. Example: http://louist.github.io/RangeGen/example.html

Usage:

*WARNING* Running range on a big letter gap causes MANY loops!
          For instance, a-zzzzz creates an array with 12,356,630
          indexes and does 73,645,526 while and for loops!

-- Array generator (See "examples.js" for usage) --
var array = RangeGen(<from>,<to>,[<step>[,<exceptions>[,<CB/filter>]]]);

    From         - The letter or number to start the range at. (Number, Float, Letters)
    To           - The letter or number to end on/near. (Number, Float, Letters)
    Step*        - The amount to increment or decrement by. Default, 1. (Boolean, Number, Float)
    Exceptions*  - Throw error messages. Default, return an empty array. (Boolean)
    CB/filter*   - Use a callback or filter results. (see example4.js)
                 * Optional.

-- Check to see if a number or letter is in a range. (Case sensitive, "AB" is not in "a..az". See "examples4.js" for usage) --
RangeGen.inRange(<str>,<from>,<to>[,<step>[,<exceptions>[,<callback>]]]);

    Str          - The number(s) or letter(s) to validate. (Number, Float, Letters)
    From         - The letter or number to start the range at. (Number, Float, Letters)
    To           - The letter or number to end on/near. (Number, Float, Letters)
    Step*        - The amount to increment or decrement by. Default, 1. (Boolean, Number, Float)
    Exceptions*  - Throw error messages. Default, return false. (Boolean)
    Callback*    - Use a callback instead of return.
                 * Optional.

-- Get the Nth value in a given range. (See "examples4.js" for usage) --
RangeGen.byIndex(<num>,<from>,<to>,[<step>[,<exceptions>[,<callback>]]]);

    Num          - The index number within the range. (Number)
    From         - The letter or number to start the range at. (Number, Float, Letters)
    To           - The letter or number to end on/near. (Number, Float, Letters)
    Step*        - The amount to increment or decrement by. Default, 1. (Boolean, Number, Float)
    Exceptions*  - Throw error messages. Default, return false. (Boolean)
    Callback*    - Use a callback instead of return.
                 * Optional.

-- Get the index by value in a given range. (See "examples4.js" for usage) --
RangeGen.byValue(<str>,<from>,<to>,[<step>[,<exceptions>[,<callback>]]]);

    Str          - The value within the range. (Number, Float, Letters)
    From         - The letter or number to start the range at. (Number, Float, Letters)
    To           - The letter or number to end on/near. (Number, Float, Letters)
    Step*        - The amount to increment or decrement by. Default, 1. (Boolean, Number, Float)
    Exceptions*  - Throw error messages. Default, return false. (Boolean)
    Callback*    - Use a callback instead of return.
                 * Optional.

-- Inject "range()" into the String prototype. (See "examples4.js" for usage) --
RangeGen.addPrototype();
RangeGen.addPro();

    Usage: "FROM..TO".range([<step>[,<exceptions>[,<callback>]]]);

    From         - The letter or number to start the range at. (Number, Float, Letters)
    To           - The letter or number to end on/near. (Number, Float, Letters)
    Step*        - The amount to increment or decrement by. Default, 1. (Boolean, Number, Float)
    Exceptions*  - Throw error messages. Default, return false. (Boolean)
    Callback*    - Use a callback instead of return.
                 * Optional.

-- Iterators (See "examples2.js" for usage) --
var iterator = RangeGen.iterator(<from>,<to>[,<step>[,<exceptions>]]);
               RangeGen.iter(<from>,<to>[,<step>[,<exceptions>]]);

    hasNext()    - Returns true if the iteration has more elements.
    next()       - Returns the next element in the iteration, or false if `exceptions` is not set.
                   Otherwise throws a `NoSuchElement` exception.
    length       - The total number of iterations.
    left         - The number of iterations left.

Examples:

var RangeGen = require('rangegen');
try {
   var a = RangeGen("a","z");
   console.log("[a-z] "+a.join(",")+"\n");
   var b = RangeGen("z","a");
   console.log("[z-a] "+b.join(",")+"\n");
   var c = RangeGen("A","ZZ",10);
   console.log("[A-ZZ,10] "+c.join(",")+"\n");
   var d = RangeGen("ZZ","A",10);
   console.log("[ZZ-A,10] "+d.join(",")+"\n");
   var e = RangeGen(0,100,10);
   console.log("[0-100,10] "+e.join(",")+"\n");
   var f = RangeGen(100,0,10);
   console.log("[100-0,10] "+f.join(",")+"\n");
   var g = RangeGen(0,1,0.1);
   console.log("[0-1,0.1] "+g.join(",")+"\n");
   var h = RangeGen(1,0,0.1);
   console.log("[1-0,0.1] "+h.join(",")+"\n");
   console.log("\n --- Floats with `map(function(x) { return x.toPrecision(2); })` ---");
   console.log("[0-1,0.1] "+g.map(function(x) { return x.toPrecision(2); }).join(",")+"\n");
   console.log("[1-0,0.1] "+h.map(function(x) { return x.toPrecision(2); }).join(',')+"\n");
 } catch (e) {
   console.log(e);
};
console.log("\n--- Throw errors! ---");
try {
   RangeGen("a",100,1,true);
 } catch (e) {
   console.log("[a-100] "+e+"\n");
};
try {
   RangeGen(100,"z",1,true);
 } catch (e) {
   console.log("[100-a] "+e+"\n");
};
try {
   console.log(RangeGen("@","!",1,true));
 } catch (e) {
   console.log("[@-!] "+e+"\n");
};
try {
   console.log(RangeGen("a","!",1,true));
 } catch (e) {
   console.log("[a-!] "+e+"\n");
};
console.log("\n--- Return empty arrays! ---");
console.log(RangeGen("a","100"));
console.log(RangeGen("100","z"));
console.log(RangeGen("@","!"));
console.log(RangeGen("a","!"));
var RangeGen = require('rangegen');
try {
   var iterator = RangeGen.iter(-30,30,1,true);
   console.log("Iterations: "+iterator.length);
   var range = [];
   while (iterator.hasNext()) {
         range.push(iterator.next());
   };
   console.log(range.join(','));
   var iterator = RangeGen.iter(0,1,0.1,true);
   console.log("Iterations: "+iterator.length);
   var range = [];
   while (iterator.hasNext()) {
         range.push(iterator.next());
   };
   console.log(range.join(','));
 } catch (e) {
   console.log(e);
};
console.log("\n--- Throw errors! ---");
try {
   console.log("- Invalid next() call. -");
   var iterator = RangeGen.iterator(-30,30,1,true);
   console.log("Iterations: "+iterator.length);
   var range = [];
   while (iterator.hasNext()) {
         range.push(iterator.next());
   };
   iterator.next();
 } catch (e) {
   console.log(e);
};
try {
   console.log("\n- Invalid range. [a-30] -");
   var iterator = RangeGen.iterator("a",30,1,true);
 } catch (e) {
   console.log(e);
};
console.log("\n--- Return false! ---");
try {
   var iterator = RangeGen.iterator("a",30,1);
   if (!iterator) {
      console.log("`iterator` is false!");
   }
 } catch (e) {
   console.log(e);
};
<html>
<head>
<title>RangeGen test</title>
<script src="./rangegen.js"></script>
<script>
window.onload = function () {
     try {
        var a = RangeGen("a","z");
        output("[a-z] "+a.join(",")+"\n");
        var b = RangeGen("z","a");
        output("[z-a] "+b.join(",")+"\n");
        var c = RangeGen("A","ZZ",10);
        output("[A-ZZ,10] "+c.join(",")+"\n");
        var d = RangeGen("ZZ","A",10);
        output("[ZZ-A,10] "+d.join(",")+"\n");
        var e = RangeGen(0,100,10);
        output("[0-100,10] "+e.join(",")+"\n");
        var f = RangeGen(100,0,10);
        output("[100-0,10] "+f.join(",")+"\n");
        var g = RangeGen(0,1,0.1);
        output("[0-1,0.1] "+g.join(",")+"\n");
        var h = RangeGen(1,0,0.1);
        output("[1-0,0.1] "+h.join(",")+"\n");
        output("<br /> --- Floats with `map(function(x) { return x.toPrecision(2); })` ---");
        output("[0-1,0.1] "+g.map(function(x) { return x.toPrecision(2); }).join(",")+"\n");
        output("[1-0,0.1] "+h.map(function(x) { return x.toPrecision(2); }).join(',')+"\n");
      } catch (e) {
        output(e);
     };
     try {
        var iterator = RangeGen.iter(-30,30,5,true);
        output("<br />Iterations: "+iterator.length);
        var range = [];
        while (iterator.hasNext()) {
              range.push(iterator.next());
        };
        output(range.join(','));
      } catch (e) {
        output(e);
     };
};
function output (x) {
         document.getElementById("output").innerHTML += x+"<br />";
};
</script>
</head>
<body>
<div id="output"></div>
</body>
</html>
var range = require('../');
try {
   console.log("--- As a callback ---");
   range(1,10,3,null,function (x) { console.log(x.join(',')) });
   console.log("\n--- As a filter ---");
   console.log(range(1,100,3,null,function (x) { return x.filter(function(y) { return y%4===0; }); }).join(','));
   console.log("\n-- inRange examples --");
   console.log("[c in a..z] "+range.inRange('c','a','z'));
   console.log("[aa in a..z] "+range.inRange('aa','a','z'));
   console.log("[ab in a..az] "+range.inRange('ab','a','az'));
   console.log("[ab in a..zz, 5] "+range.inRange('ab','a','az',5));
   console.log("[cjsr in a..zzzzzzz] "+range.inRange('cjsr','a','zzzzzzz'));
   console.log("[zzzzzzz in a..zzzzz] "+range.inRange('zzzzzzz','a','zzzzz'));
   console.log("\n-- byIndex examples --");
   console.log("[10 in a..z] "+range.byIndex(10,"a","z"));
   console.log("[100 in a..zz] "+range.byIndex(100,"a","zz"));
   console.log("[26 in a..z] "+range.byIndex(26,"a","z"));
   console.log("\n-- byValue examples --");
   console.log("[g in a..z] "+range.byValue("g","a","z"));
   console.log("[g in a..z, 2] "+range.byValue("g","a","z",2));
   console.log("[g in a..z, 5] "+range.byValue("g","a","z",5));
   console.log("\n-- String prototype examples --");
   range.addPro(); // Inject range();
   console.log("[\"a..z\".range()] "+"a..z".range());
   console.log("[\"z..a\".range()] "+"z..a".range());
   console.log("[\"a..zz\".range(40)] "+"a..zz".range(40));
   console.log("[\"0..100\".range(5)] "+"0..100".range(5));
   console.log("[\"-30..30\".range()] "+"-30..30".range(5));
 } catch (e) {
   console.log(e);
};

Keywords

FAQs

Package last updated on 15 Mar 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc