1.2.4 • Published 6 months ago

git-similarity-index v1.2.4

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

git-similarity-index

cli-available node version npm version downloads count size license github-ci

🔨 This simple tool calculates the similarity index between two files.

Motivation

I would like to calculate the similarity between two files. Unfortunately, but Git does not provide a command that would count the ‘similarity index’. Therefore, I decided to write such a tool myself that counts this index.

npm.io

CLI

npm install -g git-similarity-index

git-similarity-index mocks/file1.txt mocks/file2.txt
# or
git-similarity-index mocks/file1.txt mocks/file2.txt --use-git

Usage

import {
  getSimilarityIndex,
  getLinesBytes,
  getSimilarityIndexForText,
  getSimilarityIndexForFiles
} from "git-similarity-index";

// getSimilarityIndex + getLinesBytes
(function () {
  const toBytes = (text) => Buffer.from(text).toJSON().data;

  const firstPattern = "a\n";
  const secondPattern = "a\nb";
  const similarityIndex = getSimilarityIndex(
    getLinesBytes(toBytes(firstPattern)),
    getLinesBytes(toBytes(secondPattern)),
    toBytes(secondPattern).length,
  );
  console.log(similarityIndex); // 66.67
})();

// getSimilarityIndexForText
(function () {
  const firstPattern = "a\nb\nc\n";
  const secondPattern = "a\nb\nc\nd";
  const similarityIndex = getSimilarityIndexForText(
    firstPattern,
    secondPattern,
  );
  console.log(similarityIndex); // 85.71
})();

// getSimilarityIndexForFiles
(async function () {
  const similarityIndex = await getSimilarityIndexForFiles(
    "mocks/file1.txt",
    "mocks/file2.txt",
  );
  console.log(similarityIndex); // 46.34
})();

// getSimilarityIndexForFiles + useGit
(async function () {
  const similarityIndex = await getSimilarityIndexForFiles(
    "mocks/file1.txt",
    "mocks/file2.txt",
    { useGit: true },
  );
  console.log(similarityIndex); // 46.34
})();

Debug

The tool itself uses the debug library. You can enable debugging by setting the DEBUG environment variable.

# to display all logs
DEBUG=git-similarity-index:* git-similarity-index mocks/file1.txt mocks/file2.txt

# focus only of bytes
DEBUG=git-similarity-index:bytes git-similarity-index mocks/file1.txt mocks/file2.txt

# focus only of text
DEBUG=git-similarity-index:text git-similarity-index mocks/file1.txt mocks/file2.txt

# focus only of files
DEBUG=git-similarity-index:files git-similarity-index mocks/file1.txt mocks/file2.txt

License

The MIT License @ 2024

1.2.4

6 months ago

1.2.3

6 months ago

1.2.2

8 months ago

1.2.1

8 months ago

1.2.0

8 months ago

1.1.0

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago