blockwatch-cli 0.11.1__tar.gz → 0.11.2__tar.gz

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. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/CHANGELOG.md +12 -0
  2. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/Cargo.lock +28 -1
  3. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/Cargo.toml +3 -1
  4. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/PKG-INFO +1 -1
  5. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/README.md +5 -2
  6. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/ci.md +2 -2
  7. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/cli.md +3 -3
  8. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/setup.py +1 -1
  9. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/block_parser.rs +2 -2
  10. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/blocks.rs +16 -0
  11. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/javascript.rs +46 -0
  12. blockwatch_cli-0.11.2/src/language_parsers/lean.rs +495 -0
  13. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/markdown.rs +1 -1
  14. blockwatch_cli-0.11.2/src/language_parsers/mdx.rs +420 -0
  15. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/mod.rs +81 -49
  16. blockwatch_cli-0.11.2/src/language_parsers/ocaml.rs +136 -0
  17. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/tsx.rs +6 -6
  18. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.agents/.claude-plugin/plugin.json +0 -0
  19. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.agents/skills/blockwatch/SKILL.md +0 -0
  20. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.claude-plugin/marketplace.json +0 -0
  21. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.github/dependabot.yml +0 -0
  22. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.github/workflows/blockwatch.yml +0 -0
  23. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.github/workflows/codeql.yml +0 -0
  24. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.github/workflows/markdownlint.yml +0 -0
  25. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.github/workflows/pypi.yml +0 -0
  26. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.github/workflows/release.yml +0 -0
  27. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.github/workflows/rust.yml +0 -0
  28. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.github/workflows/trusted-checks.yml +0 -0
  29. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.gitignore +0 -0
  30. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.markdownlint-cli2.yaml +0 -0
  31. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.pre-commit-config.yaml +0 -0
  32. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/.pre-commit-hooks.yaml +0 -0
  33. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/AGENTS.md +0 -0
  34. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/CLAUDE.md +0 -0
  35. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/LICENSE +0 -0
  36. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/SECURITY.md +0 -0
  37. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/blockwatch.toml +0 -0
  38. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/clippy.toml +0 -0
  39. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/codecov.yml +0 -0
  40. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/demo.gif +0 -0
  41. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/dist-workspace.toml +0 -0
  42. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/agents.md +0 -0
  43. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/symbols.md +0 -0
  44. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/validators/README.md +0 -0
  45. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/validators/affects.md +0 -0
  46. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/validators/check-ai.md +0 -0
  47. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/validators/check-lua.md +0 -0
  48. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/validators/keep-sorted.md +0 -0
  49. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/validators/keep-unique.md +0 -0
  50. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/validators/line-count.md +0 -0
  51. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/validators/line-pattern.md +0 -0
  52. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/docs/validators/same-as.md +0 -0
  53. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/pypi/pyproject.toml +0 -0
  54. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/pyproject.toml +0 -0
  55. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/release.toml +0 -0
  56. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/scripts/check_latest_gpt_nano_model.lua +0 -0
  57. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/cli.rs +0 -0
  58. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/config.rs +0 -0
  59. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/diff_parser.rs +0 -0
  60. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/flags.rs +0 -0
  61. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/fs.rs +0 -0
  62. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/bash.rs +0 -0
  63. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/c.rs +0 -0
  64. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/c_sharp.rs +0 -0
  65. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/cmake.rs +0 -0
  66. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/cpp.rs +0 -0
  67. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/css.rs +0 -0
  68. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/dart.rs +0 -0
  69. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/dockerfile.rs +0 -0
  70. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/elixir.rs +0 -0
  71. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/go.rs +0 -0
  72. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/graphql.rs +0 -0
  73. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/groovy.rs +0 -0
  74. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/hcl.rs +0 -0
  75. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/html.rs +0 -0
  76. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/java.rs +0 -0
  77. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/json.rs +0 -0
  78. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/json.scm +0 -0
  79. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/kotlin.rs +0 -0
  80. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/lua.rs +0 -0
  81. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/makefile.rs +0 -0
  82. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/nix.rs +0 -0
  83. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/php.rs +0 -0
  84. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/proto.rs +0 -0
  85. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/python.rs +0 -0
  86. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/ruby.rs +0 -0
  87. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/rust.rs +0 -0
  88. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/scala.rs +0 -0
  89. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/sql.rs +0 -0
  90. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/starlark.rs +0 -0
  91. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/swift.rs +0 -0
  92. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/toml.rs +0 -0
  93. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/typescript.rs +0 -0
  94. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/xml.rs +0 -0
  95. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/language_parsers/yaml.rs +0 -0
  96. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/lib.rs +0 -0
  97. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/main.rs +0 -0
  98. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/path_arguments.rs +0 -0
  99. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/paths_glob.rs +0 -0
  100. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/repo_path.rs +0 -0
  101. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/report.rs +0 -0
  102. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/sarif.rs +0 -0
  103. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/settings.rs +0 -0
  104. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/skill.md +0 -0
  105. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/symbol_path.rs +0 -0
  106. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/symbols.rs +0 -0
  107. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/tag_parser.rs +0 -0
  108. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/validators/affects.rs +0 -0
  109. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/validators/check_ai.rs +0 -0
  110. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/validators/check_lua.rs +0 -0
  111. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/validators/keep_sorted.rs +0 -0
  112. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/validators/keep_unique.rs +0 -0
  113. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/validators/line_count.rs +0 -0
  114. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/validators/line_pattern.rs +0 -0
  115. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/validators/mod.rs +0 -0
  116. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/validators/same_as.rs +0 -0
  117. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/violation_address.rs +0 -0
  118. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/src/virtual_blocks.rs +0 -0
  119. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/affects.rs +0 -0
  120. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/check_ai.rs +0 -0
  121. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/check_lua.rs +0 -0
  122. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/common/empty.toml +0 -0
  123. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/common/mod.rs +0 -0
  124. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/config.rs +0 -0
  125. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/encoding.rs +0 -0
  126. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/general.rs +0 -0
  127. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/keep_sorted.rs +0 -0
  128. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/keep_unique.rs +0 -0
  129. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/line_count.rs +0 -0
  130. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/line_pattern.rs +0 -0
  131. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/list.rs +0 -0
  132. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/path_arguments.rs +0 -0
  133. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/repository_root.rs +0 -0
  134. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/same_as.rs +0 -0
  135. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/sarif.rs +0 -0
  136. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/skill.rs +0 -0
  137. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/suppressions.rs +0 -0
  138. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/symbol_references.rs +0 -0
  139. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/cross_file_source.rs +0 -0
  140. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/cross_file_target.md +0 -0
  141. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/custom_ext_source.javascript +0 -0
  142. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/custom_ext_target.javascript +0 -0
  143. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/dangling.md +0 -0
  144. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/missing_symbol.rs +0 -0
  145. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/more_added_than_deleted.py +0 -0
  146. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/multiline_tag_source.rs +0 -0
  147. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/multiline_tag_target.rs +0 -0
  148. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/nested_mapping_source.rs +0 -0
  149. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/nested_mapping_target.yaml +0 -0
  150. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/sibling.md +0 -0
  151. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/symbol_source.rs +0 -0
  152. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/symbol_target.json +0 -0
  153. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/table_source.rs +0 -0
  154. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/table_target.toml +0 -0
  155. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/tag_and_content_source.ts +0 -0
  156. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/tag_and_content_target.ts +0 -0
  157. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/whole_file_source.rs +0 -0
  158. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/affects/whole_file_target.json +0 -0
  159. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_ai/two_blocks.py +0 -0
  160. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/affects.lua +0 -0
  161. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/affects.py +0 -0
  162. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/affects_drift.py +0 -0
  163. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/blocking_io.lua +0 -0
  164. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/blocking_io.py +0 -0
  165. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/echo.lua +0 -0
  166. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/fail.lua +0 -0
  167. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/mode.py +0 -0
  168. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/os.lua +0 -0
  169. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/pathfmt/report_path.lua +0 -0
  170. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/pathfmt/source.py +0 -0
  171. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/pattern.py +0 -0
  172. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/pattern_many_matches.py +0 -0
  173. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/pattern_no_match.py +0 -0
  174. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/success.lua +0 -0
  175. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/check_lua/success_and_failure.py +0 -0
  176. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/config/glob_target/config.toml +0 -0
  177. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/config/glob_target/package.json +0 -0
  178. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/config/glob_target/plugins/blue/package.json +0 -0
  179. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/config/glob_target/plugins/green/package.json +0 -0
  180. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/config/glob_target/plugins/red/package.json +0 -0
  181. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/general/block_selection.py +0 -0
  182. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/general/custom_file_extension.javascript +0 -0
  183. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/general/custom_file_extension.python +0 -0
  184. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/general/disable_enable.py +0 -0
  185. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/general/paths/invalid.py +0 -0
  186. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/general/paths/subdir/nested_invalid.py +0 -0
  187. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/general/paths/valid.py +0 -0
  188. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/general/severity.py +0 -0
  189. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/hidden/.github/workflows/ci.yml +0 -0
  190. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/keep_sorted/orderings.py +0 -0
  191. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/keep_unique/basic_and_pattern.py +0 -0
  192. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/line_count/equality_and_greater_than.py +0 -0
  193. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/line_pattern/forbidden_text.py +0 -0
  194. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/line_pattern/hex_and_word_patterns.py +0 -0
  195. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/list/.hg/.gitkeep +0 -0
  196. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/list/a.py +0 -0
  197. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/list/b.py +0 -0
  198. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/positions/unicode_columns.py +0 -0
  199. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/custom_ext_source.javascript +0 -0
  200. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/custom_ext_target.javascript +0 -0
  201. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/package.json +0 -0
  202. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/paths/alpha/item.txt +0 -0
  203. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/paths/beta/item.txt +0 -0
  204. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/paths_and_block_source.md +0 -0
  205. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/paths_source.md +0 -0
  206. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/sibling.rs +0 -0
  207. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/source.rs +0 -0
  208. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/split_table_source.rs +0 -0
  209. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/split_table_target.toml +0 -0
  210. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/symbol_mismatch_source.rs +0 -0
  211. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/symbol_source.rs +0 -0
  212. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/target.md +0 -0
  213. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/whole_file_mismatch_source.rs +0 -0
  214. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/whole_file_source.rs +0 -0
  215. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/same_as/whole_file_target.json +0 -0
  216. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/sarif/advisory.py +0 -0
  217. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/sarif/clean.py +0 -0
  218. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/sarif/sorted.py +0 -0
  219. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/sarif/unnamed.py +0 -0
  220. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/commit_msg.txt +0 -0
  221. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/commit_msg_gone_a.txt +0 -0
  222. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/commit_msg_gone_b.txt +0 -0
  223. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/commit_msg_lowercase_trailer.txt +0 -0
  224. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/commit_msg_malformed.txt +0 -0
  225. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/commit_msg_with_noise.txt +0 -0
  226. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/dangling.py +0 -0
  227. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/sorted.py +0 -0
  228. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/symbol.py +0 -0
  229. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/symbol_target.json +0 -0
  230. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/two_rules.py +0 -0
  231. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/suppressions/unnamed.py +0 -0
  232. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/escapes_source.rs +0 -0
  233. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/escapes_target.json +0 -0
  234. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/filter_source.rs +0 -0
  235. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/filter_target.yaml +0 -0
  236. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/json_source.rs +0 -0
  237. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/json_target.json +0 -0
  238. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/jsonc_source.rs +0 -0
  239. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/jsonc_target.jsonc +0 -0
  240. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/mixed_list_source.rs +0 -0
  241. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/mixed_list_target.json +0 -0
  242. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/toml_source.rs +0 -0
  243. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/toml_target.toml +0 -0
  244. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/yaml_source.rs +0 -0
  245. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/yaml_target.yaml +0 -0
  246. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/yml_source.rs +0 -0
  247. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/symbol_references/yml_target.yml +0 -0
  248. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/verbosity/affects/pair.py +0 -0
  249. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/verbosity/clean/counted.py +0 -0
  250. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/verbosity/clean/noop.py +0 -0
  251. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/verbosity/clean/notes.txt +0 -0
  252. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/verbosity/clean/sorted.py +0 -0
  253. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/verbosity/diff/two_blocks.py +0 -0
  254. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/verbosity/failing/unsorted.py +0 -0
  255. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/testdata/verbosity/mixed/both_kinds.py +0 -0
  256. {blockwatch_cli-0.11.1 → blockwatch_cli-0.11.2}/tests/verbosity.rs +0 -0
@@ -12,6 +12,18 @@ Releases up to and including v0.3.11 predate this file. Their notes live on the
12
12
 
13
13
  ## [Unreleased] - ReleaseDate
14
14
 
15
+ ## [0.11.2] - 2026-10-15
16
+
17
+ ### Added
18
+
19
+ - blockwatch now supports Lean (`.lean`), OCaml (`.ml`, `.mli`) and MDX (`.mdx`) files. Before, it skipped them, so
20
+ their tags were never checked. In MDX, put tags in JavaScript comments, such as `{/* <block> */}`.
21
+
22
+ ### Fixed
23
+
24
+ - In JSX and TSX, the braces around a `{/* <block> */}` tag are no longer block content. Before, the `}` after a start
25
+ tag and the `{` before an end tag were part of the block, so e.g. `keep-sorted` reported a correctly sorted list.
26
+
15
27
  ## [0.11.1] - 2026-10-14
16
28
 
17
29
  ### Added
@@ -274,7 +274,7 @@ checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06"
274
274
 
275
275
  [[package]]
276
276
  name = "blockwatch"
277
- version = "0.11.1"
277
+ version = "0.11.2"
278
278
  dependencies = [
279
279
  "anyhow",
280
280
  "assert-json-diff",
@@ -289,6 +289,7 @@ dependencies = [
289
289
  "heck",
290
290
  "ignore",
291
291
  "libc",
292
+ "markdown",
292
293
  "mlua",
293
294
  "percent-encoding",
294
295
  "predicates",
@@ -328,6 +329,7 @@ dependencies = [
328
329
  "tree-sitter-make",
329
330
  "tree-sitter-md",
330
331
  "tree-sitter-nix",
332
+ "tree-sitter-ocaml",
331
333
  "tree-sitter-php",
332
334
  "tree-sitter-proto",
333
335
  "tree-sitter-python",
@@ -1268,6 +1270,15 @@ dependencies = [
1268
1270
  "which",
1269
1271
  ]
1270
1272
 
1273
+ [[package]]
1274
+ name = "markdown"
1275
+ version = "1.0.0"
1276
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1277
+ checksum = "a5cab8f2cadc416a82d2e783a1946388b31654d391d1c7d92cc1f03e295b1deb"
1278
+ dependencies = [
1279
+ "unicode-id",
1280
+ ]
1281
+
1271
1282
  [[package]]
1272
1283
  name = "matchit"
1273
1284
  version = "0.8.4"
@@ -2646,6 +2657,16 @@ dependencies = [
2646
2657
  "tree-sitter-language",
2647
2658
  ]
2648
2659
 
2660
+ [[package]]
2661
+ name = "tree-sitter-ocaml"
2662
+ version = "0.26.0"
2663
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2664
+ checksum = "43adb10fcccbcbbce0f4adc9dab7cd55f0a5eafc2d71bd4c03fcc5d6767066e0"
2665
+ dependencies = [
2666
+ "cc",
2667
+ "tree-sitter-language",
2668
+ ]
2669
+
2649
2670
  [[package]]
2650
2671
  name = "tree-sitter-php"
2651
2672
  version = "0.25.1"
@@ -2788,6 +2809,12 @@ version = "2.9.0"
2788
2809
  source = "registry+https://github.com/rust-lang/crates.io-index"
2789
2810
  checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
2790
2811
 
2812
+ [[package]]
2813
+ name = "unicode-id"
2814
+ version = "0.3.7"
2815
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2816
+ checksum = "65dd75ab2d9d379dbe86d4059e91d8b5a6e7054865eaba1ddbfc7a817ff96392"
2817
+
2791
2818
  [[package]]
2792
2819
  name = "unicode-ident"
2793
2820
  version = "1.0.24"
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "blockwatch"
3
3
  # <block name="crate-version" same-as="docs/cli.md:sarif-example" same-as-mode="subset" same-as-pattern='version = "(?P<value>\d+\.\d+\.\d+)"'>
4
- version = "0.11.1"
4
+ version = "0.11.2"
5
5
  # </block>
6
6
  edition = "2024"
7
7
  repository = "https://github.com/mennanov/blockwatch"
@@ -27,6 +27,7 @@ fnv = "1.0"
27
27
  globset = "0.4.18"
28
28
  heck = "0.5"
29
29
  ignore = "0.4"
30
+ markdown = "1.0.0"
30
31
  mlua = { version = "0.12.0", features = ["lua54", "vendored", "async", "send"] }
31
32
  percent-encoding = "2.3"
32
33
  regex = "1.12"
@@ -66,6 +67,7 @@ tree-sitter-lua = "0.5"
66
67
  tree-sitter-make = "1.1"
67
68
  tree-sitter-md = "0.5"
68
69
  tree-sitter-nix = "0.3.0"
70
+ tree-sitter-ocaml = "0.26"
69
71
  tree-sitter-php = "0.25"
70
72
  tree-sitter-proto = "0.6.0"
71
73
  tree-sitter-python = "0.25"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: blockwatch-cli
3
- Version: 0.11.1
3
+ Version: 0.11.2
4
4
  Summary: Language agnostic linter that keeps your code and documentation in sync and valid
5
5
  Keywords: linter,sync,drift,comments,agents
6
6
  Home-Page: https://github.com/mennanov/blockwatch
@@ -10,7 +10,7 @@ Some parts of a codebase have to change together: a function and its docs, or a
10
10
  blockwatch lets you write those rules in comments, right next to the code. If they fall out of sync, your pre-commit
11
11
  hook or CI run fails.
12
12
 
13
- Supports [34 languages](#supported-languages) and their common file names, such as `Gemfile` or `.mjs`.
13
+ Supports [37 languages](#supported-languages) and their common file names, such as `Gemfile` or `.mjs`.
14
14
 
15
15
  [//]: # (</block>)
16
16
 
@@ -215,7 +215,7 @@ exclusions, and custom extension mappings.
215
215
 
216
216
  ```yaml
217
217
  - repo: https://github.com/mennanov/blockwatch
218
- rev: v0.11.1 # Use latest release
218
+ rev: v0.11.2 # Use latest release
219
219
  hooks:
220
220
  - id: blockwatch
221
221
  ```
@@ -259,10 +259,13 @@ For plain git hooks, local pre-commit setups, and sandboxing untrusted Lua scrip
259
259
  - Java
260
260
  - JavaScript (with `.mjs` and `.cjs` support)
261
261
  - Kotlin
262
+ - Lean
262
263
  - Lua (with `.rockspec` support)
264
+ - MDX
263
265
  - Makefile (with `GNUmakefile` and `.mak` support)
264
266
  - Markdown
265
267
  - Nix
268
+ - OCaml (`.ml`, `.mli`)
266
269
  - PHP
267
270
  - Protocol Buffers (`.proto`)
268
271
  - Python (with `.pyi` and `.pyw` support)
@@ -20,7 +20,7 @@ To use [pre-commit](https://pre-commit.com), add the hook to `.pre-commit-config
20
20
 
21
21
  ```yaml
22
22
  - repo: https://github.com/mennanov/blockwatch
23
- rev: v0.11.1 # Use latest release
23
+ rev: v0.11.2 # Use latest release
24
24
  hooks:
25
25
  - id: blockwatch
26
26
  ```
@@ -61,7 +61,7 @@ The `blockwatch` hook runs before the commit message exists, so it cannot see a
61
61
 
62
62
  ```yaml
63
63
  - repo: https://github.com/mennanov/blockwatch
64
- rev: v0.11.1 # Use latest release
64
+ rev: v0.11.2 # Use latest release
65
65
  hooks:
66
66
  - id: blockwatch-commit-msg
67
67
  ```
@@ -546,15 +546,15 @@ Nothing else about the run changes: the same violations are found, and the exit
546
546
  "tool": {
547
547
  "driver": {
548
548
  "name": "blockwatch",
549
- "version": "0.11.1",
550
- "semanticVersion": "0.11.1",
549
+ "version": "0.11.2",
550
+ "semanticVersion": "0.11.2",
551
551
  "informationUri": "https://github.com/mennanov/blockwatch",
552
552
  "rules": [
553
553
  {
554
554
  "id": "keep-sorted",
555
555
  "name": "keep-sorted",
556
556
  "shortDescription": { "text": "Requires the lines of a block to stay in order." },
557
- "helpUri": "https://github.com/mennanov/blockwatch/blob/v0.11.1/docs/validators/keep-sorted.md"
557
+ "helpUri": "https://github.com/mennanov/blockwatch/blob/v0.11.2/docs/validators/keep-sorted.md"
558
558
  }
559
559
  ]
560
560
  }
@@ -6,7 +6,7 @@ setup(
6
6
  name='blockwatch-pre-commit-placeholder',
7
7
  version='0.0.0',
8
8
  # <block same-as="Cargo.toml:crate-version" same-as-pattern="blockwatch-cli==(?P<value>\d+\.\d+\.\d+)">
9
- install_requires=['blockwatch-cli==0.11.1'],
9
+ install_requires=['blockwatch-cli==0.11.2'],
10
10
  # </block>
11
11
  # Without it, setuptools takes the directories under src/ for Python packages.
12
12
  packages=[],
@@ -32,7 +32,7 @@ impl<C: CommentsParser> BlocksFromCommentsParser<C> {
32
32
  }
33
33
 
34
34
  /// Assembles [`Block`]s out of a comment stream.
35
- struct BlocksIterator<'source, I: Iterator<Item = Comment>> {
35
+ pub(crate) struct BlocksIterator<'source, I: Iterator<Item = Comment>> {
36
36
  partial_blocks: PartialBlocksIterator<'source, I>,
37
37
  /// Start tags still waiting for their end tag, outermost first.
38
38
  open_blocks: Vec<BlockStart>,
@@ -46,7 +46,7 @@ struct BlocksIterator<'source, I: Iterator<Item = Comment>> {
46
46
 
47
47
  impl<'source, I: Iterator<Item = Comment>> BlocksIterator<'source, I> {
48
48
  /// Starts the block stream over the comments of `contents`, which must be in source order.
49
- fn new(comments: I, contents: &'source str) -> Self {
49
+ pub(crate) fn new(comments: I, contents: &'source str) -> Self {
50
50
  Self {
51
51
  partial_blocks: PartialBlocksIterator::new(comments, contents),
52
52
  open_blocks: Vec::new(),
@@ -2982,6 +2982,10 @@ mod supported_languages_tests {
2982
2982
  "kts.kts".to_string(),
2983
2983
  "// <block>\nplugins { }\n// </block>".to_string(),
2984
2984
  ),
2985
+ (
2986
+ "lean.lean".to_string(),
2987
+ "-- <block>\ndef x := 1\n-- </block>".to_string(),
2988
+ ),
2985
2989
  (
2986
2990
  "lua.lua".to_string(),
2987
2991
  "-- <block>\nlocal x = 1\n-- </block>".to_string(),
@@ -3006,6 +3010,10 @@ mod supported_languages_tests {
3006
3010
  "md.md".to_string(),
3007
3011
  "<div>\n<!-- <block> -->\n## Heading\n<!-- </block> -->\n</div>".to_string(),
3008
3012
  ),
3013
+ (
3014
+ "mdx.mdx".to_string(),
3015
+ "{/* <block> */}\n## Heading\n{/* </block> */}".to_string(),
3016
+ ),
3009
3017
  (
3010
3018
  "mk.mk".to_string(),
3011
3019
  "# <block>\nall:\n\t@echo \"hello\"\n# </block>".to_string(),
@@ -3022,6 +3030,14 @@ mod supported_languages_tests {
3022
3030
  "nix.nix".to_string(),
3023
3031
  "# <block>\n{ pkgs = null; }\n# </block>".to_string(),
3024
3032
  ),
3033
+ (
3034
+ "ml.ml".to_string(),
3035
+ "(* <block> *)\nlet x = 1\n(* </block> *)".to_string(),
3036
+ ),
3037
+ (
3038
+ "mli.mli".to_string(),
3039
+ "(* <block> *)\nval x : int\n(* </block> *)".to_string(),
3040
+ ),
3025
3041
  (
3026
3042
  "php.php".to_string(),
3027
3043
  "<?php\n# <block>\necho 'hello';\n# </block>\n?>".to_string(),
@@ -100,4 +100,50 @@ let between = 2;
100
100
 
101
101
  Ok(())
102
102
  }
103
+
104
+ #[test]
105
+ fn jsx_expression_holding_only_a_comment_covers_its_braces() -> anyhow::Result<()> {
106
+ let mut comments_parser = comments_parser()?;
107
+
108
+ let comments: Vec<Comment> = comments_parser
109
+ .parse(
110
+ r#"const list = (
111
+ <ul>
112
+ {/* lone */}
113
+ {/* with code */ items}
114
+ { /* first */ /* second */ }
115
+ </ul>
116
+ );
117
+ "#,
118
+ )
119
+ .collect();
120
+
121
+ assert_eq!(
122
+ comments,
123
+ vec![
124
+ Comment {
125
+ position_range: Position::new(3, 5)..Position::new(3, 17),
126
+ source_range: 26..38,
127
+ comment_text: " lone ".to_string()
128
+ },
129
+ Comment {
130
+ position_range: Position::new(4, 6)..Position::new(4, 21),
131
+ source_range: 44..59,
132
+ comment_text: " with code ".to_string()
133
+ },
134
+ Comment {
135
+ position_range: Position::new(5, 7)..Position::new(5, 18),
136
+ source_range: 73..84,
137
+ comment_text: " first ".to_string()
138
+ },
139
+ Comment {
140
+ position_range: Position::new(5, 19)..Position::new(5, 31),
141
+ source_range: 85..97,
142
+ comment_text: " second ".to_string()
143
+ },
144
+ ]
145
+ );
146
+
147
+ Ok(())
148
+ }
103
149
  }