Skip to content

Instantly share code, notes, and snippets.

@doorgan
Last active June 3, 2020 04:19
Show Gist options
  • Save doorgan/389ab8d08f64e9ec590268f00a42b124 to your computer and use it in GitHub Desktop.
Save doorgan/389ab8d08f64e9ec590268f00a42b124 to your computer and use it in GitHub Desktop.
myers difference to git format
# Account settings
- put("/account/meta", MetaController, :update)
- post("/account/avatar", MetaController, :upload_avatar)
post("/account/cover", MetaController, :upload_cover)
+ put("/account/settings", SettingController, :update)
+ post("/account/reset_pass", UserController, :reset_pass)
# Mod specific routes
# TODO move to an admin protected scope
post("/moderation/ban", ModerationController, :ban_user)
post("/moderation/post/update_tags", ModerationController, :update_tags)
+
+
post("/friends", FriendController, :create)
- delete("/friends/:id", FriendController, :destroy)
- delete("/friends/name/:name", FriendController, :destroy_by_name)
+ post("/friends/name", FriendController, :create_by_name)
original = """
# Account settings
put("/account/meta", MetaController, :update)
post("/account/avatar", MetaController, :upload_avatar)
post("/account/cover", MetaController, :upload_cover)
# Mod specific routes
# TODO move to an admin protected scope
post("/moderation/ban", ModerationController, :ban_user)
post("/moderation/post/update_tags", ModerationController, :update_tags)
post("/friends", FriendController, :create)
delete("/friends/:id", FriendController, :destroy)
delete("/friends/name/:name", FriendController, :destroy_by_name)
"""
modified = """
# Account settings
post("/account/cover", MetaController, :upload_cover)
put("/account/settings", SettingController, :update)
post("/account/reset_pass", UserController, :reset_pass)
# Mod specific routes
# TODO move to an admin protected scope
post("/moderation/ban", ModerationController, :ban_user)
post("/moderation/post/update_tags", ModerationController, :update_tags)
post("/friends", FriendController, :create)
post("/friends/name", FriendController, :create_by_name)
"""
split_text = fn text -> String.split(text, "\n") end
rebuild_text = fn diff ->
Enum.reduce(diff, "", fn {type, lines}, text ->
case type do
:eq -> text <> "\n " <> Enum.join(lines, "\n ")
:ins -> text <> "\n+ " <> Enum.join(lines, "\n+ ")
:del -> text <> "\n- " <> Enum.join(lines, "\n- ")
end
end)
end
List.myers_difference(split_text.(original), split_text.(modified))
|> rebuild_text.()
|> IO.puts()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment