{"id":20804436,"url":"https://github.com/sequencemedia/difference-engine","last_synced_at":"2025-08-12T00:33:01.339Z","repository":{"id":5475804,"uuid":"6672357","full_name":"sequencemedia/difference-engine","owner":"sequencemedia","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-06T03:03:09.000Z","size":4418,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-09T04:37:42.889Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sequencemedia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2012-11-13T15:02:27.000Z","updated_at":"2025-08-06T03:03:12.000Z","dependencies_parsed_at":"2024-04-15T05:28:52.141Z","dependency_job_id":"0fdc4785-bbb5-422d-a698-de62ee1e4b75","html_url":"https://github.com/sequencemedia/difference-engine","commit_stats":{"total_commits":1128,"total_committers":6,"mean_commits":188.0,"dds":"0.10815602836879434","last_synced_commit":"f15dc2532da751ae5972c2b34d90f1637959c6f2"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/sequencemedia/difference-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequencemedia%2Fdifference-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequencemedia%2Fdifference-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequencemedia%2Fdifference-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequencemedia%2Fdifference-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sequencemedia","download_url":"https://codeload.github.com/sequencemedia/difference-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sequencemedia%2Fdifference-engine/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269693593,"owners_count":24460248,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T19:09:22.260Z","updated_at":"2025-08-12T00:33:01.315Z","avatar_url":"https://github.com/sequencemedia.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## `difference-engine`\n\n# Difference Engine\n\n```sh\nnpm i -P difference-engine\n```\n\nFeatures are available as static methods on the class:\n\n```javascript\nimport DifferenceEngine from 'difference-engine'\n```\n\nAnd as functions exported from the module:\n\n```javascript\nimport {\n  inclusive,\n  exclusive\n} from 'difference-engine'\n```\n\nExamples use the _static_ form.\n\n### `inclusive`\n\nAccepts two arrays. Returns an array containing items which appear in both arrays.\n\n```javascript\nconst alpha = ['A', 'B', 'C']\nconst omega = ['C', 'D', 'E']\n\nconst array = DifferenceEngine.inclusive(alpha, omega) // returns ['C']\n```\n\n### `exclusive`\n\nAccepts two arrays. Returns an array containing items which appear in the first array but not the second.\n\n```javascript\nconst alpha = ['A', 'B', 'C']\nconst omega = ['C', 'D', 'E']\n\nconst array = DifferenceEngine.exclusive(alpha, omega) // returns ['A', 'B']\n```\n\n## ArrayEngine\n\nFeatures are available as static methods on the class:\n\n```javascript\nimport { ArrayEngine } from 'difference-engine'\n```\n\nAnd as functions exported from the module:\n\n```javascript\nimport ArrayEngine, {\n  indexOf,\n  iterateForward,\n  iterateReverse,\n  iterateBetween,\n  max,\n  min,\n  bite\n} from 'difference-engine/array-engine'\n```\n\nExamples use the _static_ form.\n\n### `indexOf`\n\n```javascript\nconst array = ['A', 'B', 'C', 'D', 'E']\n\nconst index = ArrayEngine.indexOf(array, 'E') // returns 4\n```\n\n### `bite`\n\nAccepts an array and two indexes. Returns a slice from the array.\n\n#### Positive\n\n```javascript\nconst alpha = ['A', 'B', 'C', 'D', 'E']\n\nconst omega = ArrayEngine.bite(alpha, 0, 0) // returns ['A']\n```\n\n```javascript\nconst alpha = ['A', 'B', 'C', 'D', 'E']\n\nconst omega = ArrayEngine.bite(alpha, 0, 4) // returns ['A', 'B', 'C', 'D', 'E']\n```\n\n```javascript\nconst alpha = ['A', 'B', 'C', 'D', 'E']\n\nconst omega = ArrayEngine.bite(alpha, 4, 0) // returns ['E', 'D', 'C', 'B', 'A']\n```\n\n```javascript\nconst alpha = ['A', 'B', 'C', 'D', 'E']\n\nconst omega = ArrayEngine.bite(alpha, 4, 4) // returns ['E']\n```\n\n#### Negative\n\n```javascript\nconst alpha = ['A', 'B', 'C', 'D', 'E']\n\nconst omega = ArrayEngine.bite(alpha, -4, 0) // returns ['A']\n```\n\n```javascript\nconst alpha = ['A', 'B', 'C', 'D', 'E']\n\nconst omega = ArrayEngine.bite(alpha, -4, 4) // returns ['A', 'B', 'C', 'D', 'E']\n```\n\n```javascript\nconst alpha = ['A', 'B', 'C', 'D', 'E']\n\nconst omega = ArrayEngine.bite(alpha, -4, -4) // returns ['E', 'D', 'C', 'B', 'A']\n```\n\n```javascript\nconst alpha = ['A', 'B', 'C', 'D', 'E']\n\nconst omega = ArrayEngine.bite(alpha, 4, -4) // returns ['E', 'D', 'C', 'B', 'A']\n```\n\n```javascript\nconst alpha = ['A', 'B', 'C', 'D', 'E']\n\nconst omega = ArrayEngine.bite(alpha, 0, -4) // returns ['A']\n```\n\n### `iterateForward`\n\nAccepts an array and a function. Iterates from start to end.\n\n```javascript\nconst array = ['A', 'B', 'C', 'D', 'E']\n\nArrayEngine.iterateForward(array, () =\u003e {})\n```\n\n### `iterateReverse`\n\nAccepts an array and a function. Iterates from end to start.\n\n```javascript\nconst array = ['A', 'B', 'C', 'D', 'E']\n\nArrayEngine.iterateReverse(array, () =\u003e {})\n```\n\n### `iterateBetween`\n\nAccepts an array, a start index, an end index, and a function.\n\nIf the first index is less than the second index, it behaves as `iterateForward`.\n\nIf the first index is greater than the second index, it behaves as `iterateReverse`.\n\n```javascript\nconst array = ['A', 'B', 'C', 'D', 'E']\n\nArrayEngine.iterateBetween(array, 1, 3, () =\u003e {})\n```\n\n### `max`\n\nAccepts an array. Returns the _largest_ item (when compared as a number).\n\n```javascript\nconst array = ['A', 'B', 'C', 'D', 'E']\n\nconst value = ArrayEngine.max(array) // returns 'E'\n```\n\n```javascript\nconst array = [1, 2, 3, 4, 5]\n\nconst value = ArrayEngine.max(array) // returns 5\n```\n\n### `min`\n\nAccepts an array. Returns the _smallest_ item (when compared as a number).\n\n```javascript\nconst array = ['A', 'B', 'C', 'D', 'E']\n\nconst value = ArrayEngine.min(array) // returns 'A'\n```\n\n```javascript\nconst array = [1, 2, 3, 4, 5]\n\nconst value = ArrayEngine.min(array) // returns 1\n```\n\n## NumberEngine\n\nFeatures are available as static methods on the class:\n\n```javascript\nimport { NumberEngine } from 'difference-engine'\n```\n\nAnd as functions exported from the module:\n\n```javascript\nimport NumberEngine, {\n  fibonacci,\n  haversine,\n  fromOctToDec,\n  fromHexToDec,\n  Weight,\n  Temperature,\n  Distance\n} from 'difference-engine/number-engine'\n```\n\nExamples use the _static_ form.\n\n### `fibonacci`\n\nAccepts an index. Returns the number in a Fibonacci sequence corresponding to the index.\n\n```javascript\nconst fibonacci = NumberEngine.fibonacci(0) // returns 0\n```\n\n```javascript\nconst fibonacci = NumberEngine.fibonacci(1) // returns 1\n```\n\n```javascript\nconst fibonacci = NumberEngine.fibonacci(2) // returns 1\n```\n\n```javascript\nconst fibonacci = NumberEngine.fibonacci(3) // returns 2\n```\n\n### `haversine`\n\nAccepts an object with fields describing latitude and longitude points `from` and `to`.\n\nReturns a value in kilometres or miles.\n\n```javascript\nconst points = { from: { lat: 51.4934, lng: 0.0098 }, to: { lat: 40.7128, lng: 74.0060 } }\n\nconst km = NumberEngine.haversine(points).km() // returns the distance in kilometres\nconst mi = NumberEngine.haversine(points).mi() // returns the distance in miles\n```\n\n### `fromOctToDec`\n\nAccepts a string representing an octal. Returns a decimal.\n\n```javascript\nconst dec = NumberEngine.fromOctToDec('20') // returns 16\n```\n\n### `fromHexToDec`\n\nAccepts a string representing a hexadecimal. Returns a decimal.\n\n```javascript\nconst dec = NumberEngine.fromHexToDec('10') // returns 16\n```\n\n### `Weight`\n\nConvert a number from one unit to another.\n\nAs static methods on the class:\n\n```javascript\nimport { NumberEngine: { Weight } } from 'difference-engine'\n```\n\nAnd as functions exported from the module:\n\n```javascript\nimport Weight, {\n  fromKgToGr,\n  fromKgToMg,\n  fromKgToOz,\n  fromKgToLb,\n  fromKgToSt,\n\n  fromGrToKg,\n  fromGrToMg,\n  fromGrToOz,\n  fromGrToLb,\n  fromGrToSt,\n\n  fromMgToKg,\n  fromMgToGr,\n  fromMgToOz,\n  fromMgToLb,\n  fromMgToSt,\n\n  fromOzToKg,\n  fromOzToGr,\n  fromOzToMg,\n  fromOzToLb,\n  fromOzToSt,\n\n  fromLbToKg,\n  fromLbToGr,\n  fromLbToMg,\n  fromLbToOz,\n  fromLbToSt,\n\n  fromStToKg,\n  fromStToGr,\n  fromStToMg,\n  fromStToLb,\n  fromStToOz,\n\n  convert\n} from 'difference-engine/number-engine/weight'\n```\n\nExamples use the _static_ form.\n\n#### Kilogram\n\n```javascript\nconst gr = Weight.fromKgToGr(10)\n```\n\n```javascript\nconst mg = Weight.fromKgToMg(10)\n```\n\n```javascript\nconst oz = Weight.fromKgToOz(10)\n```\n\n```javascript\nconst lb = Weight.fromKgToLb(10)\n```\n\n```javascript\nconst st = Weight.fromKgToSt(10)\n```\nOr, using `convert`.\n\n```javascript\nconst gr = Weight.convert(10).fromKg.toGr()\n```\n\n```javascript\nconst mg = Weight.convert(10).fromKg.toMg()\n```\n\n```javascript\nconst oz = Weight.convert(10).fromKg.toOz()\n```\n\n```javascript\nconst lb = Weight.convert(10).fromKg.toLb()\n```\n\n```javascript\nconst st = Weight.convert(10).fromKg.toSt()\n```\n\n#### Gram\n\n```javascript\nconst kg = Weight.fromGrToKg(10)\n```\n\n```javascript\nconst mg = Weight.fromGrToMg(10)\n```\n\n```javascript\nconst oz = Weight.fromGrToOz(10)\n```\n\n```javascript\nconst lb = Weight.fromGrToLb(10)\n```\n\n```javascript\nconst st = Weight.fromGrToSt(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst kg = Weight.convert(10).fromGr.toKg()\n```\n\n```javascript\nconst mg = Weight.convert(10).fromGr.toMg()\n```\n\n```javascript\nconst oz = Weight.convert(10).fromGr.toOz()\n```\n\n```javascript\nconst lb = Weight.convert(10).fromGr.toLb()\n```\n\n```javascript\nconst st = Weight.convert(10).fromGr.toSt()\n```\n\n#### Miligram\n\n```javascript\nconst kg = Weight.fromMgToKg(10)\n```\n\n```javascript\nconst gr = Weight.fromMgToGr(10)\n```\n\n```javascript\nconst oz = Weight.fromMgToOz(10)\n```\n\n```javascript\nconst lb = Weight.fromMgToLb(10)\n```\n\n```javascript\nconst st = Weight.fromMgToSt(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst kg = Weight.convert(10).fromMg.toKg()\n```\n\n```javascript\nconst gr = Weight.convert(10).fromMg.toGr()\n```\n\n```javascript\nconst oz = Weight.convert(10).fromMg.toOz()\n```\n\n```javascript\nconst lb = Weight.convert(10).fromMg.toLb()\n```\n\n```javascript\nconst st = Weight.convert(10).fromMg.toSt()\n```\n\n#### Ounce\n\n```javascript\nconst kg = Weight.fromOzToKg(10)\n```\n\n```javascript\nconst gr = Weight.fromOzToGr(10)\n```\n\n```javascript\nconst mg = Weight.fromOzToMg(10)\n```\n\n```javascript\nconst lb = Weight.fromOzToLb(10)\n```\n\n```javascript\nconst st = Weight.fromOzToSt(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst kg = Weight.convert(10).fromOz.toKg()\n```\n\n```javascript\nconst gr = Weight.convert(10).fromOz.toGr()\n```\n\n```javascript\nconst mg = Weight.convert(10).fromOz.toMg()\n```\n\n```javascript\nconst lb = Weight.convert(10).fromOz.toLb()\n```\n\n```javascript\nconst st = Weight.convert(10).fromOz.toSt()\n```\n\n#### Pound\n\n```javascript\nconst kg = Weight.fromLbToKg(10)\n```\n\n```javascript\nconst gr = Weight.fromLbToGr(10)\n```\n\n```javascript\nconst mg = Weight.fromLbToMg(10)\n```\n\n```javascript\nconst oz = Weight.fromLbToOz(10)\n```\n\n```javascript\nconst st = Weight.fromLbToSt(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst kg = Weight.convert(10).fromLb.toKg()\n```\n\n```javascript\nconst gr = Weight.convert(10).fromLb.toGr()\n```\n\n```javascript\nconst mg = Weight.convert(10).fromLb.toMg()\n```\n\n```javascript\nconst oz = Weight.convert(10).fromLb.toOz()\n```\n\n```javascript\nconst st = Weight.convert(10).fromLb.toSt()\n```\n\n#### Stone\n\n```javascript\nconst kg = Weight.fromStToKg(10)\n```\n\n```javascript\nconst gr = Weight.fromStToGr(10)\n```\n\n```javascript\nconst mg = Weight.fromStToMg(10)\n```\n\n```javascript\nconst lb = Weight.fromStToLb(10)\n```\n\n```javascript\nconst oz = Weight.fromStToOz(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst kg = Weight.convert(10).fromSt.toKg()\n```\n\n```javascript\nconst gr = Weight.convert(10).fromSt.toGr()\n```\n\n```javascript\nconst mg = Weight.convert(10).fromSt.toMg()\n```\n\n```javascript\nconst lb = Weight.convert(10).fromSt.toLb()\n```\n\n```javascript\nconst oz = Weight.convert(10).fromSt.toOz()\n```\n\n### `Temperature`\n\nConvert a number from one unit to another.\n\nAs static methods on the class:\n\n```javascript\nimport { NumberEngine: { Temperature } } from 'difference-engine'\n```\n\nAnd as functions exported from the module:\n\n```javascript\nimport Temperature, {\n  fromCToF,\n  fromFToC\n} from 'difference-engine/number-engine/temperature'\n```\n\nExamples use the _static_ form.\n\n```javascript\nconst value = Temperature.fromCToF(10)\n```\n\n```javascript\nconst value = Temperature.fromFToC(10)\n```\n\n### `Distance`\n\nConvert a number from one unit to another.\n\nAs static methods on the class:\n\n```javascript\nimport { NumberEngine: { Distance } } from 'difference-engine'\n```\n\nAnd as functions exported from the module:\n\n```javascript\nimport Distance, {\n  fromKmToMt,\n  fromKmToCm,\n  fromKmToMm,\n  fromKmToIn,\n  fromKmToFt,\n  fromKmToYd,\n  fromKmToMi,\n\n  fromMtToKm,\n  fromMtToCm,\n  fromMtToMm,\n  fromMtToIn,\n  fromMtToFt,\n  fromMtToYd,\n  fromMtToMi,\n\n  fromCmToKm,\n  fromCmToMt,\n  fromCmToMm,\n  fromCmToIn,\n  fromCmToFt,\n  fromCmToYd,\n  fromCmToMi,\n\n  fromMmToKm,\n  fromMmToMt,\n  fromMmToCm,\n  fromMmToIn,\n  fromMmToFt,\n  fromMmToYd,\n  fromMmToMi,\n\n  fromInToKm,\n  fromInToMt,\n  fromInToCm,\n  fromInToMm,\n  fromInToFt,\n  fromInToYd,\n  fromInToMi,\n\n  fromFtToKm,\n  fromFtToMt,\n  fromFtToCm,\n  fromFtToMm,\n  fromFtToIn,\n  fromFtToYd,\n  fromFtToMi,\n\n  fromYdToKm,\n  fromYdToMt,\n  fromYdToCm,\n  fromYdToMm,\n  fromYdToIn,\n  fromYdToFt,\n  fromYdToMi,\n\n  fromMiToKm,\n  fromMiToMt,\n  fromMiToCm,\n  fromMiToMm,\n  fromMiToIn,\n  fromMiToFt,\n  fromMiToYd,\n\n  convert\n} from 'difference-engine/number-engine/distance'\n```\n\nExamples use the _static_ form.\n\n#### Kilometre\n\n```javascript\nconst mt = Distance.fromKmToMt(10)\n```\n\n```javascript\nconst cm = Distance.fromKmToCm(10)\n```\n\n```javascript\nconst mm = Distance.fromKmToMm(10)\n```\n\n```javascript\nconst in = Distance.fromKmToIn(10)\n```\n\n```javascript\nconst ft = Distance.fromKmToFt(10)\n```\n\n```javascript\nconst yd = Distance.fromKmToYd(10)\n```\n\n```javascript\nconst mi = Distance.fromKmToMi(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst mt = Distance.convert(10).fromKm.toMt()\n```\n\n```javascript\nconst cm = Distance.convert(10).fromKm.toCm()\n```\n\n```javascript\nconst mm = Distance.convert(10).fromKm.toMm()\n```\n\n```javascript\nconst in = Distance.convert(10).fromKm.toIn()\n```\n\n```javascript\nconst ft = Distance.convert(10).fromKm.toFt()\n```\n\n```javascript\nconst yd = Distance.convert(10).fromKm.toYd()\n```\n\n```javascript\nconst mi = Distance.convert(10).fromKm.toMi()\n```\n\n#### Metre\n\n```javascript\nconst km = Distance.fromMtToKm(10)\n```\n\n```javascript\nconst cm = Distance.fromMtToCm(10)\n```\n\n```javascript\nconst mm = Distance.fromMtToMm(10)\n```\n\n```javascript\nconst in = Distance.fromMtToIn(10)\n```\n\n```javascript\nconst ft = Distance.fromMtToFt(10)\n```\n\n```javascript\nconst yd = Distance.fromMtToYd(10)\n```\n\n```javascript\nconst mi = Distance.fromMtToMi(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst km = Distance.convert(10).fromMt.toKm()\n```\n\n```javascript\nconst cm = Distance.convert(10).fromMt.toCm()\n```\n\n```javascript\nconst mm = Distance.convert(10).fromMt.toMm()\n```\n\n```javascript\nconst in = Distance.convert(10).fromMt.toIn()\n```\n\n```javascript\nconst ft = Distance.convert(10).fromMt.toFt()\n```\n\n```javascript\nconst yd = Distance.convert(10).fromMt.toYd()\n```\n\n```javascript\nconst mi = Distance.convert(10).fromMt.toMi()\n```\n\n#### Centimetre\n\n```javascript\nconst km = Distance.fromCmToKm(10)\n```\n\n```javascript\nconst mt = Distance.fromCmToMt(10)\n```\n\n```javascript\nconst mm = Distance.fromCmToMm(10)\n```\n\n```javascript\nconst in = Distance.fromCmToIn(10)\n```\n\n```javascript\nconst ft = Distance.fromCmToFt(10)\n```\n\n```javascript\nconst yd = Distance.fromCmToYd(10)\n```\n\n```javascript\nconst mi = Distance.fromCmToMi(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst km = Distance.convert(10).fromCm.toKm()\n```\n\n```javascript\nconst mt = Distance.convert(10).fromCm.toMt()\n```\n\n```javascript\nconst mm = Distance.convert(10).fromCm.toMm()\n```\n\n```javascript\nconst in = Distance.convert(10).fromCm.toIn()\n```\n\n```javascript\nconst ft = Distance.convert(10).fromCm.toFt()\n```\n\n```javascript\nconst yd = Distance.convert(10).fromCm.toYd()\n```\n\n```javascript\nconst mi = Distance.convert(10).fromCm.toMi()\n```\n\n#### Milimetre\n\n```javascript\nconst km = Distance.fromMmToKm(10)\n```\n\n```javascript\nconst mt = Distance.fromMmToMt(10)\n```\n\n```javascript\nconst cm = Distance.fromMmToCm(10)\n```\n\n```javascript\nconst in = Distance.fromMmToIn(10)\n```\n\n```javascript\nconst ft = Distance.fromMmToFt(10)\n```\n\n```javascript\nconst yd = Distance.fromMmToYd(10)\n```\n\n```javascript\nconst mi = Distance.fromMmToMi(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst km = Distance.convert(10).fromMm.toKm()\n```\n\n```javascript\nconst mt = Distance.convert(10).fromMm.toMt()\n```\n\n```javascript\nconst cm = Distance.convert(10).fromMm.toCm()\n```\n\n```javascript\nconst in = Distance.convert(10).fromMm.toIn()\n```\n\n```javascript\nconst ft = Distance.convert(10).fromMm.toFt()\n```\n\n```javascript\nconst yd = Distance.convert(10).fromMm.toYd()\n```\n\n```javascript\nconst mi = Distance.convert(10).fromMm.toMi()\n```\n\n#### Inch\n\n```javascript\nconst km = Distance.fromInToKm(10)\n```\n\n```javascript\nconst mt = Distance.fromInToMt(10)\n```\n\n```javascript\nconst cm = Distance.fromInToCm(10)\n```\n\n```javascript\nconst mm = Distance.fromInToMm(10)\n```\n\n```javascript\nconst ft = Distance.fromInToFt(10)\n```\n\n```javascript\nconst yd = Distance.fromInToYd(10)\n```\n\n```javascript\nconst mi = Distance.fromInToMi(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst km = Distance.convert(10).fromIn.toKm()\n```\n\n```javascript\nconst mt = Distance.convert(10).fromIn.toMt()\n```\n\n```javascript\nconst cm = Distance.convert(10).fromIn.toCm()\n```\n\n```javascript\nconst mm = Distance.convert(10).fromIn.toMm()\n```\n\n```javascript\nconst ft = Distance.convert(10).fromIn.toFt()\n```\n\n```javascript\nconst yd = Distance.convert(10).fromIn.toYd()\n```\n\n```javascript\nconst mi = Distance.convert(10).fromIn.toMi()\n```\n\n#### Feet\n\n```javascript\nconst km = Distance.fromFtToKm(10)\n```\n\n```javascript\nconst mt = Distance.fromFtToMt(10)\n```\n\n```javascript\nconst cm = Distance.fromFtToCm(10)\n```\n\n```javascript\nconst mm = Distance.fromFtToMm(10)\n```\n\n```javascript\nconst in = Distance.fromFtToIn(10)\n```\n\n```javascript\nconst yd = Distance.fromFtToYd(10)\n```\n\n```javascript\nconst mi = Distance.fromFtToMi(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst km = Distance.convert(10).fromFt.toKm()\n```\n\n```javascript\nconst mt = Distance.convert(10).fromFt.toMt()\n```\n\n```javascript\nconst cm = Distance.convert(10).fromFt.toCm()\n```\n\n```javascript\nconst mm = Distance.convert(10).fromFt.toMm()\n```\n\n```javascript\nconst in = Distance.convert(10).fromFt.toIn()\n```\n\n```javascript\nconst yd = Distance.convert(10).fromFt.toYd()\n```\n\n```javascript\nconst mi = Distance.convert(10).fromFt.toMi()\n```\n\n#### Yard\n\n```javascript\nconst km = Distance.fromYdToKm(10)\n```\n\n```javascript\nconst mt = Distance.fromYdToMt(10)\n```\n\n```javascript\nconst cm = Distance.fromYdToCm(10)\n```\n\n```javascript\nconst mm = Distance.fromYdToMm(10)\n```\n\n```javascript\nconst in = Distance.fromYdToIn(10)\n```\n\n```javascript\nconst ft = Distance.fromYdToFt(10)\n```\n\n```javascript\nconst mi = Distance.fromYdToMi(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst km = Distance.convert(10).fromYd.toKm()\n```\n\n```javascript\nconst mt = Distance.convert(10).fromYd.toMt()\n```\n\n```javascript\nconst cm = Distance.convert(10).fromYd.toCm()\n```\n\n```javascript\nconst mm = Distance.convert(10).fromYd.toMm()\n```\n\n```javascript\nconst in = Distance.convert(10).fromYd.toIn()\n```\n\n```javascript\nconst ft = Distance.convert(10).fromYd.toFt()\n```\n\n```javascript\nconst mi = Distance.convert(10).fromYd.toMi()\n```\n\n#### Mile\n\n```javascript\nconst km = Distance.fromMiToKm(10)\n```\n\n```javascript\nconst mt = Distance.fromMiToMt(10)\n```\n\n```javascript\nconst cm = Distance.fromMiToCm(10)\n```\n\n```javascript\nconst mm = Distance.fromMiToMm(10)\n```\n\n```javascript\nconst in = Distance.fromMiToIn(10)\n```\n\n```javascript\nconst ft = Distance.fromMiToFt(10)\n```\n\n```javascript\nconst yd = Distance.fromMiToYd(10)\n```\n\nOr, using `convert`.\n\n```javascript\nconst km = Distance.convert(10).fromMi.toKm()\n```\n\n```javascript\nconst mt = Distance.convert(10).fromMi.toMt()\n```\n\n```javascript\nconst cm = Distance.convert(10).fromMi.toCm()\n```\n\n```javascript\nconst mm = Distance.convert(10).fromMi.toMm()\n```\n\n```javascript\nconst in = Distance.convert(10).fromMi.toIn()\n```\n\n```javascript\nconst ft = Distance.convert(10).fromMi.toFt()\n```\n\n```javascript\nconst yd = Distance.convert(10).fromMi.toYd()\n```\n\n## StringEngine\n\n```javascript\nimport { StringEngine } from 'difference-engine'\n```\n\n### `charAt`\n\nAccepts a string and a number which is an index. Returns the character for the entity at the index.\n\n```javascript\nconst string = StringEngine.charAt('Hello\u0026#44; World', 5) // returns ','\n```\n\n```javascript\nconst string = StringEngine.charAt('Hello\u0026comma; World', 5) // returns ','\n```\n\n### `charCodeAt`\n\nAccepts a string and a number which is an index. Returns the character code for the entity at the index.\n\n```javascript\nconst number = StringEngine.charCodeAt('Hello\u0026#44; World', 5) // returns 44\n```\n\n```javascript\nconst number = StringEngine.charCodeAt('Hello\u0026comma; World', 5) // returns 44\n```\n\n### `charOf`\n\nAccepts a string which is an HTML entity. Returns the character for the entity.\n\n```javascript\nconst string = StringEngine.charOf('\u0026#44;') // returns ','\n```\n\n```javascript\nconst string = StringEngine.charOf('\u0026comma;') // returns ','\n```\n\n### `charCodeOf`\n\nAccepts a string which is an HTML entity. Returns the character code for the entity.\n\n```javascript\nconst number = StringEngine.charCodeOf('\u0026#44;') // returns 44\n```\n\n```javascript\nconst number = StringEngine.charCodeOf('\u0026comma;') // returns 44\n```\n\n### `entityAt`\n\nAccepts a string and a number which is an index.\n\nWhere the character at the index is an entity, it returns the entity.\n\n```javascript\nconst string = StringEngine.entityAt('Hello\u0026comma; World', 5) // returns '\u0026comma;'\n```\n\n```javascript\nconst string = StringEngine.entityAt('Hello,\u0026#32;World', 6) // returns '\u0026#32;'\n```\n\nWhere the character at the index has an entity name, it returns the entity name.\n\n```javascript\nconst string = StringEngine.entityAt('Hello, World', 5) // returns '\u0026comma;'\n```\n\nWhere the character at the index has an entity code, it returns the entity code.\n\n```javascript\nconst string = StringEngine.entityAt('Hello, World', 6) // returns '\u0026#32;'\n```\n\n### `entityCodeAt`\n\nAccepts a string and a number which is an index.\n\nWhere the character at the index has an entity code, it returns the entity code.\n\n```javascript\nconst string = StringEngine.entityCodeAt('Hello, World', 5) // returns '\u0026#44;'\n```\n\nWhere the character at the index _is_ an entity code, it returns the entity code.\n\n```javascript\nconst string = StringEngine.entityCodeAt('Hello\u0026#44; World', 5) // returns '\u0026#44;'\n```\n\nWhere the character at the index is an entity name, it returns the entity code for the char at the index.\n\n```javascript\nconst string = StringEngine.entityCodeAt('Hello\u0026comma; World', 5) // returns '\u0026#38;'\n```\n\n### `entityNameAt`\n\nAccepts a string and a number which is an index.\n\nWhere the character at the index has an entity name, it returns the entity name.\n\n```javascript\nconst string = StringEngine.entityNameAt('Hello, World', 5) // returns '\u0026comma;'\n```\n\nWhere the character at the index _is_ an entity name, it returns the entity name.\n\n```javascript\nconst string = StringEngine.entityNameAt('Hello\u0026comma; World', 5) // returns '\u0026comma;'\n```\n\nWhere the character at the index is an entity code, it returns the entity name for the char at the index.\n\n```javascript\nconst string = StringEngine.entityNameAt('Hello\u0026#44; World', 5) // returns '\u0026amp;'\n```\n\n### `entityOf`\n\nAccepts a string and a number which is an index.\n\nWhere the character at the index is an entity, it returns the entity.\n\n```javascript\nconst string = StringEngine.entityOf(',') // returns '\u0026comma;'\n```\n\n```javascript\nconst string = StringEngine.entityOf(' ') // returns '\u0026#32;'\n```\n\n### `fromCodePoint`\n\nAccepts a number which is a character code point. Returns the character for that code point.\n\n```javascript\nconst string = StringEngine.fromCodePoint(43) // returns '+'\n```\n\n### `charFromEntityCode`\n\nAccepts a string which is an HTML entity code. Returns the character for that entity.\n\n```javascript\nconst string = StringEngine.charFromEntityCode('\u0026#43;') // returns '+'\n```\n\n### `charFromEntityName`\n\nAccepts a string which is an HTML entity name. Returns the character for that entity.\n\n```javascript\nconst string = StringEngine.charFromEntityCode('\u0026plus;') // returns '+'\n```\n\n### `toEntityCode`\n\nAccepts a string. Returns a string replaced with the HTML entity code for each character.\n\n```javascript\nconst string = StringEngine.toEntityCode('Hello, World') // returns '\u0026#72;\u0026#101;\u0026#108;\u0026#108;\u0026#111;\u0026#44;\u0026#32;\u0026#87;\u0026#111;\u0026#114;\u0026#108;\u0026#100;'\n```\n\n### `toEntityName`\n\nAccepts a string. Returns a string replaced with the HTML entity name for each character where it is known, otherwise the character is not replaced.\n\n```javascript\nconst string = StringEngine.toEntityName('Hello, World') // returns 'Hello\u0026comma; World'\n```\n\n### `entityCodeFromChar`\n\nAccepts a single-character string. Returns a string representing the HTML entity code for that character.\n\n```javascript\nconst entityCode = StringEngine.entityCodeFromChar('+') // returns '\u0026#43;'\n```\n\nThe entity is computed from the character code point.\n\n### `entityNameFromChar`\n\nAccepts a single-character string. Returns a string representing the HTML entity code for that character.\n\n```javascript\nconst entityName = StringEngine.entityNameFromChar('+') // returns '\u0026plus;'\n```\n\nWhere the character has no entity or the entity is not known it returns the character.\n\n### `entityCodeOf`\n\nSee `entityCodeFromChar`.\n\n### `entityNameOf`\n\nSee `entityNameFromChar`.\n\n### `fromDecToOct`\n\nAccepts number. Returns a string representing an octal.\n\n```javascript\nconst oct = StringEngine.fromDecToOct(16) // returns '20'\n```\n\n### `fromDecToHex`\n\nAccepts number. Returns a string representing a hexadecimal.\n\n```javascript\nconst hex = StringEngine.fromDecToHex(16) // returns '10'\n```\n\n### `reverse`\n\nAccepts a string. Returns the string with characters in reverse order.\n\n```javascript\nconst string = StringEngine.reverse('ABCDE') // returns 'EDCBA'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsequencemedia%2Fdifference-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsequencemedia%2Fdifference-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsequencemedia%2Fdifference-engine/lists"}