{"id":36428311,"url":"https://github.com/adambanaszkiewicz/semver-converter","last_synced_at":"2026-01-11T18:26:00.568Z","repository":{"id":12461604,"uuid":"71884434","full_name":"adambanaszkiewicz/semver-converter","owner":"adambanaszkiewicz","description":"Converts SemVer version (like Composer packages) into integer version with operators. Helps managing versions: store, compare, sort and retrive by conditions.","archived":false,"fork":false,"pushed_at":"2022-08-10T15:28:29.000Z","size":44,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-22T13:30:15.503Z","etag":null,"topics":["converter","converts-semver","semver","semver-format"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adambanaszkiewicz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-25T10:08:07.000Z","updated_at":"2025-03-26T21:31:07.000Z","dependencies_parsed_at":"2022-07-24T20:32:20.091Z","dependency_job_id":null,"html_url":"https://github.com/adambanaszkiewicz/semver-converter","commit_stats":null,"previous_names":["adambanaszkiewicz/semver-converter","requtize/semver-converter"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/adambanaszkiewicz/semver-converter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adambanaszkiewicz%2Fsemver-converter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adambanaszkiewicz%2Fsemver-converter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adambanaszkiewicz%2Fsemver-converter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adambanaszkiewicz%2Fsemver-converter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adambanaszkiewicz","download_url":"https://codeload.github.com/adambanaszkiewicz/semver-converter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adambanaszkiewicz%2Fsemver-converter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28317702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T14:58:17.114Z","status":"ssl_error","status_checked_at":"2026-01-11T14:55:53.580Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["converter","converts-semver","semver","semver-format"],"created_at":"2026-01-11T18:25:59.738Z","updated_at":"2026-01-11T18:26:00.563Z","avatar_url":"https://github.com/adambanaszkiewicz.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SemVer Converter\n\nConverts SemVer version (like Composer packages) into integer version with operators. Helps managing versions: store, compare, sort and retrive by conditions.\n\nConverter accepts the same versions as Composer, so You can use it with any package manager that accepts [Semantic Versioning](http://semver.org/).\n\n# How it works?\n\nFor each version it uses Composer SemVer parser to parse version and normalize it. And then, for each version, converter creates array exploded by dot values. Each value pads with zeros and create from it long string which is converted to integer. And for each version we have big integer.\n\n### Sample:\n\n1. Version **1.0.5**\n2. Normalize with SemVer: **1.0.5**\n3. Explode: **[ 1, 0, 5 ]**\n4. Converts to strings and pad zeros: **[ '001', '000', '005' ]**\n5. Concatenate all strings: **'001' + '000' + '005'**\n6. Converts to integer: **(int) '1000005'**\n\nResult: **'1.0.5' == 1000005**\n\n# Examples\n\n### Simple version\n\n```php\n$result = (new SemVerConverter)-\u003econvert('0.1.0');\n\n// Result\narray (size=1)\n  0 =\u003e \n    array (size=2)\n      'from' =\u003e \n        array (size=2)\n          0 =\u003e int 1000000\n          1 =\u003e string '==' (length=2)\n      'to' =\u003e \n        array (size=2)\n          0 =\u003e int 1000000\n          1 =\u003e string '==' (length=2)\n```\n\n### Version between\n\n```php\n$result = (new SemVerConverter)-\u003econvert('\u003e= 1.3.0 \u003c 1.7.0');\n\n// Result\narray (size=1)\n  0 =\u003e \n    array (size=2)\n      'from' =\u003e \n        array (size=2)\n          0 =\u003e int 1003000\n          1 =\u003e string '\u003e=' (length=2)\n      'to' =\u003e \n        array (size=2)\n          0 =\u003e int 1007000\n          1 =\u003e string '\u003c' (length=1)\n```\n\n### Tilde operator\n\n```php\n$result = (new SemVerConverter)-\u003econvert('~1.3');\n\n// Result\narray (size=1)\n  0 =\u003e \n    array (size=2)\n      'from' =\u003e \n        array (size=2)\n          0 =\u003e int 1003000\n          1 =\u003e string '\u003e=' (length=2)\n      'to' =\u003e \n        array (size=2)\n          0 =\u003e int 2000000\n          1 =\u003e string '\u003c' (length=1)\n```\n\n### Version or\n\n```php\n$result = (new SemVerConverter)-\u003econvert('^1.9 || 3.0.*');\n\n// Result\narray (size=2)\n  0 =\u003e \n    array (size=2)\n      'from' =\u003e \n        array (size=2)\n          0 =\u003e int 1009000\n          1 =\u003e string '\u003e=' (length=2)\n      'to' =\u003e \n        array (size=2)\n          0 =\u003e int 2000000\n          1 =\u003e string '\u003c' (length=1)\n  1 =\u003e \n    array (size=2)\n      'from' =\u003e \n        array (size=2)\n          0 =\u003e int 3000000\n          1 =\u003e string '\u003e=' (length=2)\n      'to' =\u003e \n        array (size=2)\n          0 =\u003e int 3001000\n          1 =\u003e string '\u003c' (length=1)\n```\n\n# Settings\n\n```php\nnew SemVerConverter($zeros, $sections);\n```\n\n### $zeros\n\nDefines how meny zeros need to pad for each section of versions. It allows to define how long should be result.\n\n### $sections\n\nDefines how many sections need to be generated from input. Default is 3, Composer SemVer generates 4. This also have an impact for result.\n\n# Licence\n\nThis code is licensed under MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadambanaszkiewicz%2Fsemver-converter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadambanaszkiewicz%2Fsemver-converter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadambanaszkiewicz%2Fsemver-converter/lists"}