{"id":18524789,"url":"https://github.com/iminside/diffing","last_synced_at":"2025-06-23T21:34:39.152Z","repository":{"id":35861157,"uuid":"40146200","full_name":"iminside/Diffing","owner":"iminside","description":"Gem for calculating two strings difference","archived":false,"fork":false,"pushed_at":"2020-09-18T12:10:09.000Z","size":26,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-29T04:42:51.036Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/iminside.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-03T20:24:07.000Z","updated_at":"2025-02-20T20:27:50.000Z","dependencies_parsed_at":"2022-08-17T23:00:59.187Z","dependency_job_id":null,"html_url":"https://github.com/iminside/Diffing","commit_stats":null,"previous_names":["4urbanoff/diffing"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/iminside/Diffing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iminside%2FDiffing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iminside%2FDiffing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iminside%2FDiffing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iminside%2FDiffing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iminside","download_url":"https://codeload.github.com/iminside/Diffing/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iminside%2FDiffing/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261559371,"owners_count":23177184,"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","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-06T17:43:19.280Z","updated_at":"2025-06-23T21:34:39.111Z","avatar_url":"https://github.com/iminside.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Diffing\n\n[![Build Status](https://travis-ci.org/denis-churbanov/Diffing.svg?branch=master)](https://travis-ci.org/denis-churbanov/Diffing)\n\n## Installation\n\n```\nsudo gem install diffing\n```\n\n## Usage\n\n```ruby\nrequire 'diffing'\n\nfrom = \"Hello! I am string for diffing test\"\nto   = \"Hi! I am two string for diffing\"\n```\n\n#### By chars\n```ruby\ndiff = Diffing.by_chars( from, to )\n\ndiff.as_ascii\n# =\u003e H{`ello`\u003e\u003e`i`}! I am{+` two`} string for diffing{-` test`}\ndiff.as_html\n# =\u003e H\u003cdel\u003eello\u003c/del\u003e\u003cins\u003ei\u003c/ins\u003e! I am\u003cins\u003e two\u003c/ins\u003e string for diffing\u003cdel\u003e test\u003c/del\u003e\n```\n\n#### By words\n```ruby\ndiff = Diffing.by_words( from, to )\n\ndiff.as_ascii\n# =\u003e {`Hello!`\u003e\u003e`Hi!`} I am{+` two`} string for diffing{-` test`}\ndiff.as_html\n# =\u003e \u003cdel\u003eHello!\u003c/del\u003e\u003cins\u003eHi!\u003c/ins\u003e I am\u003cins\u003e two\u003c/ins\u003e string for diffing\u003cdel\u003e test\u003c/del\u003e\n```\n\n#### By lines\n```ruby\ndiff = Diffing.by_lines( from, to )\n\ndiff.as_ascii\n# =\u003e {`Hello! I am string for diffing test`\u003e\u003e`Hi! I am two string for diffing`}\ndiff.as_html\n# =\u003e \u003cdel\u003eHello! I am string for diffing test\u003c/del\u003e\u003cins\u003eHi! I am two string for diffing\u003c/ins\u003e\n```\n\n## Custom format\n\n```ruby\nmodule CustomFormat\n  class \u003c\u003c self\n\n    def source( value )\n      value\n    end\n\n    def insert( value )\n      \"(++#{ value })\"\n    end\n\n    def remove( value )\n      \"(--#{ value })\"\n    end\n\n    def change( from, to )\n      \"(#{ from } =\u003e #{ to })\"\n    end\n\n  end\nend\n\n\nDiffing.by_chars( from, to ).format( CustomFormat )\n# =\u003e H(ello =\u003e i)! I am(++ two) string for diffing(-- test)\nDiffing.by_words( from, to ).format( CustomFormat )\n# =\u003e (Hello! =\u003e Hi!) I am(++ two) string for diffing(-- test)\nDiffing.by_lines( from, to ).format( CustomFormat )\n# =\u003e (Hello! I am string for diffing test =\u003e Hi! I am two string for diffing)\n\n```\n\n\n## Custom use separated parts\n\n```ruby\nDiffing.by_words( from, to ).parts.map { |part|\n  \n  result = ''\n  result \u003c\u003c \"\u003csource:#{ part.source }\u003e\" if part.source?\n  result \u003c\u003c \"\u003cinsert:#{ part.insert }\u003e\" if part.insert?\n  result \u003c\u003c \"\u003cremove:#{ part.remove }\u003e\" if part.remove?\n  result\n  \n}.join \n# =\u003e \u003cinsert:Hi!\u003e\u003cremove:Hello!\u003e\u003csource: I am\u003e\u003cinsert: two\u003e\u003csource: string for diffing\u003e\u003cremove: test\u003e\n```\n\n\n## Custom pattern of parts\n\n```ruby\nDiffing::Diff.new( from, to, /.{,3}\\s?/ ).as_ascii\n# =\u003e {`Hello! `\u003e\u003e`Hi! `}I a{`m string `\u003e\u003e`m two string `}for diffin{`g test`\u003e\u003e`g`}\n```\n\n\n## Copyright\n\nCopyright © 2015 Denis Churbanov\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiminside%2Fdiffing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiminside%2Fdiffing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiminside%2Fdiffing/lists"}