Socket
Socket
Sign inDemoInstall

line-counter

Package Overview
Dependencies
0
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    line-counter

A simple class that allows to count lines while iterating over a string


Version published
Maintainers
1
Install size
18.4 kB
Created

Changelog

Source

v1.1.0 - 2015-06-05

Add

  • Added .locate(charIndex) to return line- and column-index of the char-index location

Readme

Source

line-counter NPM version Build Status Coverage Status

A simple class that allows to count lines while iterating over a string

This module helps you when you want to output the line-number of certain locations in a string while iterating over the string otherwise. For example, if you want to

Example

Suppose, we want to extract all occurences of 'sed' and 'ipsum' from the following text:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et
accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing
elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed
diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd
gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

We can easily match all the occurences with a regex, but we only get the char-index of each match. Using the line-counter module, we can print line-numbers as well:

var regex = /sed|ipsum/g;
var text = require("fs").readFileSync("example.txt");

var LineCounter = require("line-counter");
var counter = new LineCounter(text);

var match;
while ((match = regex.exec(text)) !== null) {
    // Example for .countUpTo()
    console.log(
        "Found '" + match[0] + "'",
        "at index", match.index,
        "which is in line ", counter.countUpTo(match.index)
    );
    // Example for .locate()
    console.log(
        "Found '" + match[0] + "'",
        "at index", match.index,
        "which is at location", counter.locate(match.index)
    );
}

API

LineCounter

Create a new LineCounter instance counting lines in a given string. The class provides a method countUpTo that pushes an internal counter to the line of a specified char-index in the string.

Example:

Params

  • contents {string}: the string that is parsed (i.e. file contents)

Example

var LineCounter = require('line-counter');
var lc = new LineCounter('abc\ncde\nefg');
lc.countUpTo(0); // == 1
lc.countUpTo(8); // == 3

.countUpTo

Returns the line-number of a given char-index within the string.

Params

  • upTo {number}: a char-index within the contents-string. This char-index must be greater or equal to the line-start of the last char-index passed to the previous call to countUpTo
  • returns {number}: the line-number of this char-index.

.locate

Returns the location (line-nr and column-nr) of a char index within the string.

  • returns {{column: number, line: number}: line- and column-index (based off 1)

Running tests

Install dev dependencies:

$ npm i -d && npm test

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue

Author

Nils Knappmeier

License

Released under the MIT license.

Change Log

This project adheres to Semantic Versioning.

Upcoming

Add

  • Added .locate(charIndex) to return line- and column-index of the char-index location

v1.0.3 - 2015-05-11

Fix

  • Issue #1: Endless-Loop calling .upTo(content.length) for contents that end with a new-line.

v1.0.2 - 2015-05-10

Added

  • Initial version of the line-counter module

FAQs

Last updated on 05 Jun 2015

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc