code_ownership 2.1.2 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. checksums.yaml +4 -4
  2. data/.cargo/config +2 -2
  3. data/Cargo.lock +9 -2
  4. data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/.cargo-checksum.json +1 -1
  5. data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/Cargo.lock +8 -1
  6. data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/Cargo.toml +2 -1
  7. data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/file_generator.rs +119 -9
  8. data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/validator.rs +77 -15
  9. data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/executable_name_config_test.rs +25 -4
  10. data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_executable_name/.github/CODEOWNERS +1 -1
  11. data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/default_executable_name/.github/CODEOWNERS +1 -1
  12. data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/invalid_project_test.rs +30 -0
  13. data/ext/cargo-vendor/similar-2.7.0/.cargo/config.toml +2 -0
  14. data/ext/cargo-vendor/similar-2.7.0/.cargo-checksum.json +1 -0
  15. data/ext/cargo-vendor/similar-2.7.0/.cargo_vcs_info.json +6 -0
  16. data/ext/cargo-vendor/similar-2.7.0/.github/FUNDING.yml +1 -0
  17. data/ext/cargo-vendor/similar-2.7.0/.github/workflows/clippy.yml +16 -0
  18. data/ext/cargo-vendor/similar-2.7.0/.github/workflows/rustfmt.yml +16 -0
  19. data/ext/cargo-vendor/similar-2.7.0/.github/workflows/tests.yml +49 -0
  20. data/ext/cargo-vendor/similar-2.7.0/.vscode/settings.json +5 -0
  21. data/ext/cargo-vendor/similar-2.7.0/CHANGELOG.md +132 -0
  22. data/ext/cargo-vendor/similar-2.7.0/Cargo.lock +373 -0
  23. data/ext/cargo-vendor/similar-2.7.0/Cargo.lock.msrv +266 -0
  24. data/ext/cargo-vendor/similar-2.7.0/Cargo.toml +149 -0
  25. data/ext/cargo-vendor/similar-2.7.0/Cargo.toml.orig +73 -0
  26. data/ext/cargo-vendor/similar-2.7.0/LICENSE +201 -0
  27. data/ext/cargo-vendor/similar-2.7.0/Makefile +31 -0
  28. data/ext/cargo-vendor/similar-2.7.0/README.md +59 -0
  29. data/ext/cargo-vendor/similar-2.7.0/clippy.toml +1 -0
  30. data/ext/cargo-vendor/similar-2.7.0/examples/close-matches.rs +15 -0
  31. data/ext/cargo-vendor/similar-2.7.0/examples/large.rs +8 -0
  32. data/ext/cargo-vendor/similar-2.7.0/examples/nonstring.rs +13 -0
  33. data/ext/cargo-vendor/similar-2.7.0/examples/original-slices.rs +11 -0
  34. data/ext/cargo-vendor/similar-2.7.0/examples/patience.rs +48 -0
  35. data/ext/cargo-vendor/similar-2.7.0/examples/serde.rs +15 -0
  36. data/ext/cargo-vendor/similar-2.7.0/examples/terminal-inline.rs +60 -0
  37. data/ext/cargo-vendor/similar-2.7.0/examples/terminal.rs +20 -0
  38. data/ext/cargo-vendor/similar-2.7.0/examples/udiff.rs +24 -0
  39. data/ext/cargo-vendor/similar-2.7.0/scripts/wasmtime-wrapper.sh +4 -0
  40. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/capture.rs +117 -0
  41. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/compact.rs +351 -0
  42. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/hook.rs +178 -0
  43. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/lcs.rs +294 -0
  44. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/mod.rs +134 -0
  45. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/myers.rs +442 -0
  46. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/patience.rs +198 -0
  47. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/replace.rs +221 -0
  48. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__capture__capture_hook_grouping-2.snap +60 -0
  49. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__capture__capture_hook_grouping.snap +64 -0
  50. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__lcs__contiguous.snap +28 -0
  51. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__lcs__diff.snap +22 -0
  52. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__lcs__pat.snap +31 -0
  53. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__lcs__same.snap +12 -0
  54. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__myers__contiguous.snap +28 -0
  55. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__myers__deadline_reached.snap +22 -0
  56. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__myers__diff.snap +22 -0
  57. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__myers__pat.snap +31 -0
  58. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__patience__patience.snap +45 -0
  59. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/snapshots/similar__algorithms__patience__patience_out_of_bounds_bug.snap +16 -0
  60. data/ext/cargo-vendor/similar-2.7.0/src/algorithms/utils.rs +379 -0
  61. data/ext/cargo-vendor/similar-2.7.0/src/common.rs +185 -0
  62. data/ext/cargo-vendor/similar-2.7.0/src/deadline_support.rs +37 -0
  63. data/ext/cargo-vendor/similar-2.7.0/src/iter.rs +195 -0
  64. data/ext/cargo-vendor/similar-2.7.0/src/lib.rs +176 -0
  65. data/ext/cargo-vendor/similar-2.7.0/src/snapshots/similar__udiff__unified_diff.snap +25 -0
  66. data/ext/cargo-vendor/similar-2.7.0/src/snapshots/similar__udiff__unified_diff_newline_hint-2.snap +10 -0
  67. data/ext/cargo-vendor/similar-2.7.0/src/snapshots/similar__udiff__unified_diff_newline_hint.snap +11 -0
  68. data/ext/cargo-vendor/similar-2.7.0/src/text/abstraction.rs +446 -0
  69. data/ext/cargo-vendor/similar-2.7.0/src/text/inline.rs +342 -0
  70. data/ext/cargo-vendor/similar-2.7.0/src/text/mod.rs +792 -0
  71. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__captured_ops.snap +22 -0
  72. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__captured_word_ops.snap +202 -0
  73. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__char_diff.snap +39 -0
  74. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__inline__line_ops_inline.snap +126 -0
  75. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__inline__serde.snap +107 -0
  76. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__lifetimes_on_iter.snap +42 -0
  77. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__line_ops.snap +42 -0
  78. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__serde.snap +55 -0
  79. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__serde_ops.snap +38 -0
  80. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__unified_diff.snap +12 -0
  81. data/ext/cargo-vendor/similar-2.7.0/src/text/snapshots/similar__text__virtual_newlines.snap +32 -0
  82. data/ext/cargo-vendor/similar-2.7.0/src/text/utils.rs +55 -0
  83. data/ext/cargo-vendor/similar-2.7.0/src/types.rs +502 -0
  84. data/ext/cargo-vendor/similar-2.7.0/src/udiff.rs +359 -0
  85. data/ext/cargo-vendor/similar-2.7.0/src/utils.rs +412 -0
  86. data/ext/code_ownership/Cargo.toml +1 -1
  87. data/lib/code_ownership/version.rb +1 -1
  88. metadata +252 -178
  89. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/.github/CODEOWNERS +0 -0
  90. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/.github/workflows/audit.yml +0 -0
  91. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/.github/workflows/ci.yml +0 -0
  92. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/.github/workflows/dotslash-config.json +0 -0
  93. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/.rustfmt.toml +0 -0
  94. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/.rusty-hook.toml +0 -0
  95. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/AGENTS.md +0 -0
  96. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/CLAUDE.md +0 -0
  97. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/README.md +0 -0
  98. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/dev/run_benchmarks_for_file.sh +0 -0
  99. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/dev/run_benchmarks_for_gv.sh +0 -0
  100. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/rust-toolchain.toml +0 -0
  101. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/cache/file.rs +0 -0
  102. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/cache/mod.rs +0 -0
  103. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/cache/noop.rs +0 -0
  104. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/cli.rs +0 -0
  105. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/common_test.rs +0 -0
  106. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/config.rs +0 -0
  107. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/crosscheck.rs +0 -0
  108. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/lib.rs +0 -0
  109. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/main.rs +0 -0
  110. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/codeowners_file_parser.rs +0 -0
  111. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/codeowners_query.rs +0 -0
  112. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/file_owner_finder.rs +0 -0
  113. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/file_owner_resolver.rs +0 -0
  114. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/mapper/annotated_file_mapper.rs +0 -0
  115. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/mapper/directory_mapper.rs +0 -0
  116. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/mapper/escaper.rs +0 -0
  117. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/mapper/package_mapper.rs +0 -0
  118. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/mapper/team_gem_mapper.rs +0 -0
  119. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/mapper/team_glob_mapper.rs +0 -0
  120. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/mapper/team_yml_mapper.rs +0 -0
  121. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership/mapper.rs +0 -0
  122. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/ownership.rs +0 -0
  123. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/path_utils.rs +0 -0
  124. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/project.rs +0 -0
  125. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/project_builder.rs +0 -0
  126. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/project_file_builder.rs +0 -0
  127. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/runner/api.rs +0 -0
  128. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/runner/types.rs +0 -0
  129. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/runner.rs +0 -0
  130. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/src/tracked_files.rs +0 -0
  131. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/cache_test.rs +0 -0
  132. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/codeowners_path_test.rs +0 -0
  133. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/common/mod.rs +0 -0
  134. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/crosscheck_owners_test.rs +0 -0
  135. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_codeowners_path/config/code_ownership.yml +0 -0
  136. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_codeowners_path/config/teams/test_team.yml +0 -0
  137. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_codeowners_path/docs/CODEOWNERS +0 -0
  138. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_codeowners_path/expected/CODEOWNERS +0 -0
  139. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_codeowners_path/ruby/app/models/test.rb +0 -0
  140. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_executable_name/app/foo.rb +0 -0
  141. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_executable_name/config/code_ownership.yml +0 -0
  142. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_executable_name/config/teams/foo.yml +0 -0
  143. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_executable_name/config/teams/payments.yml +0 -0
  144. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/custom_executable_name/ruby/app/payments/foo.rb +0 -0
  145. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/default_executable_name/app/bar.rb +0 -0
  146. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/default_executable_name/config/code_ownership.yml +0 -0
  147. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/default_executable_name/config/teams/bar.yml +0 -0
  148. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/.github/CODEOWNERS +0 -0
  149. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/config/code_ownership.yml +0 -0
  150. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/config/teams/payments.yml +0 -0
  151. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/config/teams/payroll.yml +0 -0
  152. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/gems/payroll_calculator/calculator.rb +0 -0
  153. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/models/bank_account.rb +0 -0
  154. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/models/blockchain.rb +0 -0
  155. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/models/payroll.rb +0 -0
  156. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/payments/nacha.rb +0 -0
  157. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/services/.codeowner +0 -0
  158. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/services/multi_owned.rb +0 -0
  159. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/app/unowned.rb +0 -0
  160. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/invalid_project/ruby/packages/payroll_flow/package.yml +0 -0
  161. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/.github/CODEOWNERS +0 -0
  162. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/.keep +0 -0
  163. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/config/code_ownership.yml +0 -0
  164. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/config/teams/design.yml +0 -0
  165. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/config/teams/frontend.yml +0 -0
  166. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/apps/public/index.tsx +0 -0
  167. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/packages/dashboard/package.json +0 -0
  168. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/packages/dashboard/src/index.tsx +0 -0
  169. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/.codeowner +0 -0
  170. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/src/button.tsx +0 -0
  171. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/missing_github_team/.github/CODEOWNERS +0 -0
  172. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/missing_github_team/config/code_ownership.yml +0 -0
  173. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/missing_github_team/config/teams/bad_team.yml +0 -0
  174. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/missing_github_team/config/teams/good.yml +0 -0
  175. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/missing_github_team/gems/pets/dog.rb +0 -0
  176. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/.github/CODEOWNERS +0 -0
  177. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/consumers/.codeowner +0 -0
  178. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/consumers/deep/nesting/nestdir/deep_file.rb +0 -0
  179. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/consumers/one_owner.rb +0 -0
  180. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/services/.codeowner +0 -0
  181. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/services/exciting/.codeowner +0 -0
  182. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/app/services/exciting/some_other_file.rb +0 -0
  183. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/config/code_ownership.yml +0 -0
  184. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/config/teams/bar.yml +0 -0
  185. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/multiple-directory-owners/config/teams/foo.yml +0 -0
  186. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/.github/CODEOWNERS +0 -0
  187. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/.ignore +0 -0
  188. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/config/code_ownership.yml +0 -0
  189. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/config/teams/payments.yml +0 -0
  190. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/config/teams/payroll.yml +0 -0
  191. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/config/teams/ux.yml +0 -0
  192. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/gems/payroll_calculator/calculator.rb +0 -0
  193. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/gems/pets/dog.rb +0 -0
  194. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/index.tsx +0 -0
  195. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/package.json +0 -0
  196. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/items/(special)/.codeowner +0 -0
  197. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/items/(special)/pay.ts +0 -0
  198. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/items/.codeowner +0 -0
  199. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/items/item.ts +0 -0
  200. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/javascript/packages/list/page-admin.tsx +0 -0
  201. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/models/bank_account.rb +0 -0
  202. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/models/payroll.rb +0 -0
  203. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payments/foo/.codeowner +0 -0
  204. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payments/foo/ownedby_payroll.rb +0 -0
  205. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payments/nacha.rb +0 -0
  206. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payroll/.codeowner +0 -0
  207. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/payroll/payroll.rb +0 -0
  208. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/views/foos/edit.erb +0 -0
  209. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/views/foos/index.html.erb +0 -0
  210. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/app/views/foos/new.html.erb +0 -0
  211. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/ignored_files/git_ignored.rb +0 -0
  212. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/ruby/packages/payroll_flow/package.yml +0 -0
  213. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project/should_be_ignored/an_ignored_file.rb +0 -0
  214. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/.github/CODEOWNERS +0 -0
  215. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/code_ownership.yml +0 -0
  216. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/teams/brewers.yml +0 -0
  217. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/teams/cubs.yml +0 -0
  218. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/teams/giants.yml +0 -0
  219. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/config/teams/rockies.yml +0 -0
  220. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/package.json +0 -0
  221. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/src/picks/dp.tsx +0 -0
  222. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/package.json +0 -0
  223. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/src/item.tsx +0 -0
  224. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/package.json +0 -0
  225. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/field.tsx +0 -0
  226. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/fields/small.tsx +0 -0
  227. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/gems/apollo/lib/apollo.rb +0 -0
  228. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/gems/ivy/lib/ivy.rb +0 -0
  229. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/gems/lager/lib/lager.rb +0 -0
  230. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/gems/summit/lib/summit.rb +0 -0
  231. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/games/app/services/stats.rb +0 -0
  232. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/games/package.yml +0 -0
  233. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/locations/app/services/capacity.rb +0 -0
  234. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/locations/package.yml +0 -0
  235. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/schedule/app/services/date.rb +0 -0
  236. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/packs/schedule/package.yml +0 -0
  237. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/lib/util.rb +0 -0
  238. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/services/play.rb +0 -0
  239. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/.codeowner +0 -0
  240. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/.codeowner +0 -0
  241. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/db/price.rb +0 -0
  242. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/entertainment.rb +0 -0
  243. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/play.rb +0 -0
  244. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/giants/services/play.rb +0 -0
  245. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/fixtures/valid_project_with_overrides/ruby/app/rockies/services/play.rb +0 -0
  246. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/git_stage_test.rs +0 -0
  247. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/invalid_project_structure_test.rs +0 -0
  248. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/missing_github_team_test.rs +0 -0
  249. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/multiple_directory_owners_test.rs +0 -0
  250. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/run_config_executable_override_test.rs +0 -0
  251. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/runner_api.rs +0 -0
  252. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/untracked_files_test.rs +0 -0
  253. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/valid_project_test.rs +0 -0
  254. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/valid_project_with_overrides_test.rs +0 -0
  255. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tests/validate_files_test.rs +0 -0
  256. /data/ext/cargo-vendor/{codeowners-0.3.2 → codeowners-0.3.3}/tmp/.gitkeep +0 -0
@@ -0,0 +1,342 @@
1
+ use std::borrow::Cow;
2
+ use std::fmt;
3
+
4
+ use crate::deadline_support::Instant;
5
+ use crate::text::{DiffableStr, TextDiff};
6
+ use crate::types::{Algorithm, Change, ChangeTag, DiffOp, DiffTag};
7
+ use crate::{capture_diff_deadline, get_diff_ratio};
8
+
9
+ use std::ops::Index;
10
+
11
+ use super::utils::upper_seq_ratio;
12
+
13
+ struct MultiLookup<'bufs, 's, T: DiffableStr + ?Sized> {
14
+ strings: &'bufs [&'s T],
15
+ seqs: Vec<(&'s T, usize, usize)>,
16
+ }
17
+
18
+ impl<'bufs, 's, T: DiffableStr + ?Sized> MultiLookup<'bufs, 's, T> {
19
+ fn new(strings: &'bufs [&'s T]) -> MultiLookup<'bufs, 's, T> {
20
+ let mut seqs = Vec::new();
21
+ for (string_idx, string) in strings.iter().enumerate() {
22
+ let mut offset = 0;
23
+ let iter = {
24
+ #[cfg(feature = "unicode")]
25
+ {
26
+ string.tokenize_unicode_words()
27
+ }
28
+ #[cfg(not(feature = "unicode"))]
29
+ {
30
+ string.tokenize_words()
31
+ }
32
+ };
33
+ for word in iter {
34
+ seqs.push((word, string_idx, offset));
35
+ offset += word.len();
36
+ }
37
+ }
38
+ MultiLookup { strings, seqs }
39
+ }
40
+
41
+ pub fn len(&self) -> usize {
42
+ self.seqs.len()
43
+ }
44
+
45
+ fn get_original_slices(&self, idx: usize, len: usize) -> Vec<(usize, &'s T)> {
46
+ let mut last = None;
47
+ let mut rv = Vec::new();
48
+
49
+ for offset in 0..len {
50
+ let (s, str_idx, char_idx) = self.seqs[idx + offset];
51
+ last = match last {
52
+ None => Some((str_idx, char_idx, s.len())),
53
+ Some((last_str_idx, start_char_idx, last_len)) => {
54
+ if last_str_idx == str_idx {
55
+ Some((str_idx, start_char_idx, last_len + s.len()))
56
+ } else {
57
+ rv.push((
58
+ last_str_idx,
59
+ self.strings[last_str_idx]
60
+ .slice(start_char_idx..start_char_idx + last_len),
61
+ ));
62
+ Some((str_idx, char_idx, s.len()))
63
+ }
64
+ }
65
+ };
66
+ }
67
+
68
+ if let Some((str_idx, start_char_idx, len)) = last {
69
+ rv.push((
70
+ str_idx,
71
+ self.strings[str_idx].slice(start_char_idx..start_char_idx + len),
72
+ ));
73
+ }
74
+
75
+ rv
76
+ }
77
+ }
78
+
79
+ impl<T: DiffableStr + ?Sized> Index<usize> for MultiLookup<'_, '_, T> {
80
+ type Output = T;
81
+
82
+ fn index(&self, index: usize) -> &Self::Output {
83
+ self.seqs[index].0
84
+ }
85
+ }
86
+
87
+ fn push_values<'s, T: DiffableStr + ?Sized>(
88
+ v: &mut Vec<Vec<(bool, &'s T)>>,
89
+ idx: usize,
90
+ emphasized: bool,
91
+ s: &'s T,
92
+ ) {
93
+ v.resize_with(v.len().max(idx + 1), Vec::new);
94
+ // newlines cause all kinds of wacky stuff if they end up highlighted.
95
+ // because of this we want to unemphasize all newlines we encounter.
96
+ if emphasized {
97
+ for seg in s.tokenize_lines_and_newlines() {
98
+ v[idx].push((!seg.ends_with_newline(), seg));
99
+ }
100
+ } else {
101
+ v[idx].push((false, s));
102
+ }
103
+ }
104
+
105
+ /// Represents the expanded textual change with inline highlights.
106
+ ///
107
+ /// This is like [`Change`] but with inline highlight info.
108
+ #[derive(Debug, PartialEq, Eq, Hash, Clone, Ord, PartialOrd)]
109
+ #[cfg_attr(feature = "serde", derive(serde::Serialize))]
110
+ pub struct InlineChange<'s, T: DiffableStr + ?Sized> {
111
+ tag: ChangeTag,
112
+ old_index: Option<usize>,
113
+ new_index: Option<usize>,
114
+ values: Vec<(bool, &'s T)>,
115
+ }
116
+
117
+ impl<'s, T: DiffableStr + ?Sized> InlineChange<'s, T> {
118
+ /// Returns the change tag.
119
+ pub fn tag(&self) -> ChangeTag {
120
+ self.tag
121
+ }
122
+
123
+ /// Returns the old index if available.
124
+ pub fn old_index(&self) -> Option<usize> {
125
+ self.old_index
126
+ }
127
+
128
+ /// Returns the new index if available.
129
+ pub fn new_index(&self) -> Option<usize> {
130
+ self.new_index
131
+ }
132
+
133
+ /// Returns the changed values.
134
+ ///
135
+ /// Each item is a tuple in the form `(emphasized, value)` where `emphasized`
136
+ /// is true if it should be highlighted as an inline diff.
137
+ ///
138
+ /// Depending on the type of the underlying [`DiffableStr`] this value is
139
+ /// more or less useful. If you always want to have a utf-8 string it's
140
+ /// better to use the [`InlineChange::iter_strings_lossy`] method.
141
+ pub fn values(&self) -> &[(bool, &'s T)] {
142
+ &self.values
143
+ }
144
+
145
+ /// Iterates over all (potentially lossy) utf-8 decoded values.
146
+ ///
147
+ /// Each item is a tuple in the form `(emphasized, value)` where `emphasized`
148
+ /// is true if it should be highlighted as an inline diff.
149
+ ///
150
+ /// By default, words are split by whitespace, which results in coarser diff.
151
+ /// For example: `"f(x) y"` is tokenized as `["f(x)", "y"]`.
152
+ ///
153
+ /// If you want it to be tokenized instead as `["f(", "x", ")"]`,
154
+ /// you should enable the `"unicode"` flag.
155
+ pub fn iter_strings_lossy(&self) -> impl Iterator<Item = (bool, Cow<'_, str>)> {
156
+ self.values()
157
+ .iter()
158
+ .map(|(emphasized, raw_value)| (*emphasized, raw_value.to_string_lossy()))
159
+ }
160
+
161
+ /// Returns `true` if this change does not end in a newline and must be
162
+ /// followed up by one if line based diffs are used.
163
+ pub fn missing_newline(&self) -> bool {
164
+ !self.values.last().map_or(true, |x| x.1.ends_with_newline())
165
+ }
166
+ }
167
+
168
+ impl<'s, T: DiffableStr + ?Sized> From<Change<&'s T>> for InlineChange<'s, T> {
169
+ fn from(change: Change<&'s T>) -> InlineChange<'s, T> {
170
+ InlineChange {
171
+ tag: change.tag(),
172
+ old_index: change.old_index(),
173
+ new_index: change.new_index(),
174
+ values: vec![(false, change.value())],
175
+ }
176
+ }
177
+ }
178
+
179
+ impl<T: DiffableStr + ?Sized> fmt::Display for InlineChange<'_, T> {
180
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
181
+ for (emphasized, value) in self.iter_strings_lossy() {
182
+ let marker = match (emphasized, self.tag) {
183
+ (false, _) | (true, ChangeTag::Equal) => "",
184
+ (true, ChangeTag::Delete) => "-",
185
+ (true, ChangeTag::Insert) => "+",
186
+ };
187
+ write!(f, "{}{}{}", marker, value, marker)?;
188
+ }
189
+ if self.missing_newline() {
190
+ writeln!(f)?;
191
+ }
192
+ Ok(())
193
+ }
194
+ }
195
+
196
+ const MIN_RATIO: f32 = 0.5;
197
+
198
+ pub(crate) fn iter_inline_changes<'x, 'diff, 'old, 'new, 'bufs, T>(
199
+ diff: &'diff TextDiff<'old, 'new, 'bufs, T>,
200
+ op: &DiffOp,
201
+ deadline: Option<Instant>,
202
+ ) -> impl Iterator<Item = InlineChange<'x, T>> + 'diff
203
+ where
204
+ T: DiffableStr + ?Sized,
205
+ 'x: 'diff,
206
+ 'old: 'x,
207
+ 'new: 'x,
208
+ {
209
+ let (tag, old_range, new_range) = op.as_tag_tuple();
210
+
211
+ if let DiffTag::Equal | DiffTag::Insert | DiffTag::Delete = tag {
212
+ return Box::new(diff.iter_changes(op).map(|x| x.into())) as Box<dyn Iterator<Item = _>>;
213
+ }
214
+
215
+ let mut old_index = old_range.start;
216
+ let mut new_index = new_range.start;
217
+ let old_slices = &diff.old_slices()[old_range];
218
+ let new_slices = &diff.new_slices()[new_range];
219
+
220
+ if upper_seq_ratio(old_slices, new_slices) < MIN_RATIO {
221
+ return Box::new(diff.iter_changes(op).map(|x| x.into())) as Box<dyn Iterator<Item = _>>;
222
+ }
223
+
224
+ let old_lookup = MultiLookup::new(old_slices);
225
+ let new_lookup = MultiLookup::new(new_slices);
226
+
227
+ let ops = capture_diff_deadline(
228
+ Algorithm::Patience,
229
+ &old_lookup,
230
+ 0..old_lookup.len(),
231
+ &new_lookup,
232
+ 0..new_lookup.len(),
233
+ deadline,
234
+ );
235
+
236
+ if get_diff_ratio(&ops, old_lookup.len(), new_lookup.len()) < MIN_RATIO {
237
+ return Box::new(diff.iter_changes(op).map(|x| x.into())) as Box<dyn Iterator<Item = _>>;
238
+ }
239
+
240
+ let mut old_values = Vec::<Vec<_>>::new();
241
+ let mut new_values = Vec::<Vec<_>>::new();
242
+
243
+ for op in ops {
244
+ match op {
245
+ DiffOp::Equal {
246
+ old_index,
247
+ len,
248
+ new_index,
249
+ } => {
250
+ for (idx, slice) in old_lookup.get_original_slices(old_index, len) {
251
+ push_values(&mut old_values, idx, false, slice);
252
+ }
253
+ for (idx, slice) in new_lookup.get_original_slices(new_index, len) {
254
+ push_values(&mut new_values, idx, false, slice);
255
+ }
256
+ }
257
+ DiffOp::Delete {
258
+ old_index, old_len, ..
259
+ } => {
260
+ for (idx, slice) in old_lookup.get_original_slices(old_index, old_len) {
261
+ push_values(&mut old_values, idx, true, slice);
262
+ }
263
+ }
264
+ DiffOp::Insert {
265
+ new_index, new_len, ..
266
+ } => {
267
+ for (idx, slice) in new_lookup.get_original_slices(new_index, new_len) {
268
+ push_values(&mut new_values, idx, true, slice);
269
+ }
270
+ }
271
+ DiffOp::Replace {
272
+ old_index,
273
+ old_len,
274
+ new_index,
275
+ new_len,
276
+ } => {
277
+ for (idx, slice) in old_lookup.get_original_slices(old_index, old_len) {
278
+ push_values(&mut old_values, idx, true, slice);
279
+ }
280
+ for (idx, slice) in new_lookup.get_original_slices(new_index, new_len) {
281
+ push_values(&mut new_values, idx, true, slice);
282
+ }
283
+ }
284
+ }
285
+ }
286
+
287
+ let mut rv = Vec::new();
288
+
289
+ for values in old_values {
290
+ rv.push(InlineChange {
291
+ tag: ChangeTag::Delete,
292
+ old_index: Some(old_index),
293
+ new_index: None,
294
+ values,
295
+ });
296
+ old_index += 1;
297
+ }
298
+
299
+ for values in new_values {
300
+ rv.push(InlineChange {
301
+ tag: ChangeTag::Insert,
302
+ old_index: None,
303
+ new_index: Some(new_index),
304
+ values,
305
+ });
306
+ new_index += 1;
307
+ }
308
+
309
+ Box::new(rv.into_iter()) as Box<dyn Iterator<Item = _>>
310
+ }
311
+
312
+ #[test]
313
+ fn test_line_ops_inline() {
314
+ let diff = TextDiff::from_lines(
315
+ "Hello World\nsome stuff here\nsome more stuff here\n\nAha stuff here\nand more stuff",
316
+ "Stuff\nHello World\nsome amazing stuff here\nsome more stuff here\n",
317
+ );
318
+ assert!(diff.newline_terminated());
319
+ let changes = diff
320
+ .ops()
321
+ .iter()
322
+ .flat_map(|op| diff.iter_inline_changes(op))
323
+ .collect::<Vec<_>>();
324
+ insta::assert_debug_snapshot!(&changes);
325
+ }
326
+
327
+ #[test]
328
+ #[cfg(feature = "serde")]
329
+ fn test_serde() {
330
+ let diff = TextDiff::from_lines(
331
+ "Hello World\nsome stuff here\nsome more stuff here\n\nAha stuff here\nand more stuff",
332
+ "Stuff\nHello World\nsome amazing stuff here\nsome more stuff here\n",
333
+ );
334
+ assert!(diff.newline_terminated());
335
+ let changes = diff
336
+ .ops()
337
+ .iter()
338
+ .flat_map(|op| diff.iter_inline_changes(op))
339
+ .collect::<Vec<_>>();
340
+ let json = serde_json::to_string_pretty(&changes).unwrap();
341
+ insta::assert_snapshot!(&json);
342
+ }