djlint 1.28.0 → 1.30.0

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 (368) hide show
  1. package/.coveragerc +9 -0
  2. package/.editorconfig +21 -0
  3. package/.flake8 +0 -0
  4. package/.github/FUNDING.yml +2 -0
  5. package/.github/ISSUE_TEMPLATE/config.yml +6 -0
  6. package/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  7. package/.github/ISSUE_TEMPLATE/formatter_but_report.md +30 -0
  8. package/.github/ISSUE_TEMPLATE/linter_bug_report.md +34 -0
  9. package/.github/ISSUE_TEMPLATE/translation.md +14 -0
  10. package/.github/config.yml +4 -0
  11. package/.github/pull_request_template.md +10 -0
  12. package/.github/workflows/cancel.yml +17 -0
  13. package/.github/workflows/demo.yml +98 -0
  14. package/.github/workflows/issues.yml +23 -0
  15. package/.github/workflows/linkcheck.yaml +21 -0
  16. package/.github/workflows/lint.yml +25 -0
  17. package/.github/workflows/release.yml +57 -0
  18. package/.github/workflows/test.yml +85 -0
  19. package/.pre-commit-config.yaml +45 -0
  20. package/.pre-commit-hooks.yaml +71 -0
  21. package/.prettierignore +7 -0
  22. package/.prettierrc +11 -0
  23. package/.releaserc +16 -0
  24. package/CHANGELOG.md +13 -0
  25. package/MANIFEST.in +2 -0
  26. package/build_demo.sh +17 -0
  27. package/docs/.eleventy.js +425 -0
  28. package/docs/.eleventyignore +2 -0
  29. package/docs/.prettierignore +3 -0
  30. package/docs/.prettierrc +11 -0
  31. package/docs/package.json +73 -0
  32. package/docs/readme.md +17 -0
  33. package/docs/src/_data/configuration.json +646 -0
  34. package/docs/src/_data/eleventyComputed.js +22 -0
  35. package/docs/src/_data/i18n/index.js +159 -0
  36. package/docs/src/_data/js.js +7 -0
  37. package/docs/src/_data/locales.js +17 -0
  38. package/docs/src/_data/site.json +8 -0
  39. package/docs/src/_includes/demo.njk +157 -0
  40. package/docs/src/_includes/docs_layout.njk +34 -0
  41. package/docs/src/_includes/foot.njk +26 -0
  42. package/docs/src/_includes/index.njk +187 -0
  43. package/docs/src/_includes/languages_layout.njk +11 -0
  44. package/docs/src/_includes/layout.njk +111 -0
  45. package/docs/src/_includes/nav.njk +85 -0
  46. package/docs/src/_utils/minify-html.js +14 -0
  47. package/docs/src/_utils/rollupper.js +91 -0
  48. package/docs/src/_utils/scripts.11ty.js +27 -0
  49. package/docs/src/demo.njk +4 -0
  50. package/docs/src/docs/best-practices.md +78 -0
  51. package/docs/src/docs/changelog.md +452 -0
  52. package/docs/src/docs/configuration.md +145 -0
  53. package/docs/src/docs/docs.json +4 -0
  54. package/docs/src/docs/formatter.md +82 -0
  55. package/docs/src/docs/getting-started.md +126 -0
  56. package/docs/src/docs/ignoring-code.md +75 -0
  57. package/docs/src/docs/integrations.md +120 -0
  58. package/docs/src/docs/languages/angular.md +31 -0
  59. package/docs/src/docs/languages/django.md +40 -0
  60. package/docs/src/docs/languages/golang.md +31 -0
  61. package/docs/src/docs/languages/handlebars.md +31 -0
  62. package/docs/src/docs/languages/jinja.md +39 -0
  63. package/docs/src/docs/languages/languages.json +3 -0
  64. package/docs/src/docs/languages/mustache.md +31 -0
  65. package/docs/src/docs/languages/nunjucks.md +39 -0
  66. package/docs/src/docs/languages/twig.md +41 -0
  67. package/docs/src/docs/linter.md +199 -0
  68. package/docs/src/fr/demo.njk +4 -0
  69. package/docs/src/fr/docs/best-practices.md +78 -0
  70. package/docs/src/fr/docs/changelog.md +452 -0
  71. package/docs/src/fr/docs/configuration.md +144 -0
  72. package/docs/src/fr/docs/docs.json +3 -0
  73. package/docs/src/fr/docs/formatter.md +83 -0
  74. package/docs/src/fr/docs/getting-started.md +127 -0
  75. package/docs/src/fr/docs/ignoring-code.md +75 -0
  76. package/docs/src/fr/docs/integrations.md +100 -0
  77. package/docs/src/fr/docs/languages/angular.md +31 -0
  78. package/docs/src/fr/docs/languages/django.md +31 -0
  79. package/docs/src/fr/docs/languages/golang.md +31 -0
  80. package/docs/src/fr/docs/languages/handlebars.md +31 -0
  81. package/docs/src/fr/docs/languages/jinja.md +31 -0
  82. package/docs/src/fr/docs/languages/languages.json +3 -0
  83. package/docs/src/fr/docs/languages/mustache.md +31 -0
  84. package/docs/src/fr/docs/languages/nunjucks.md +31 -0
  85. package/docs/src/fr/docs/languages/twig.md +31 -0
  86. package/docs/src/fr/docs/linter.md +207 -0
  87. package/docs/src/fr/fr.json +4 -0
  88. package/docs/src/fr/index.njk +4 -0
  89. package/docs/src/index.njk +4 -0
  90. package/docs/src/lib/generate-content-hash.js +13 -0
  91. package/docs/src/robots.txt +4 -0
  92. package/docs/src/ru/demo.njk +4 -0
  93. package/docs/src/ru/docs/best-practices.md +78 -0
  94. package/docs/src/ru/docs/changelog.md +453 -0
  95. package/docs/src/ru/docs/configuration.md +142 -0
  96. package/docs/src/ru/docs/docs.json +3 -0
  97. package/docs/src/ru/docs/formatter.md +82 -0
  98. package/docs/src/ru/docs/getting-started.md +127 -0
  99. package/docs/src/ru/docs/ignoring-code.md +75 -0
  100. package/docs/src/ru/docs/integrations.md +100 -0
  101. package/docs/src/ru/docs/languages/angular.md +31 -0
  102. package/docs/src/ru/docs/languages/django.md +31 -0
  103. package/docs/src/ru/docs/languages/golang.md +31 -0
  104. package/docs/src/ru/docs/languages/handlebars.md +31 -0
  105. package/docs/src/ru/docs/languages/jinja.md +31 -0
  106. package/docs/src/ru/docs/languages/languages.json +3 -0
  107. package/docs/src/ru/docs/languages/mustache.md +31 -0
  108. package/docs/src/ru/docs/languages/nunjucks.md +31 -0
  109. package/docs/src/ru/docs/languages/twig.md +31 -0
  110. package/docs/src/ru/docs/linter.md +126 -0
  111. package/docs/src/ru/index.njk +4 -0
  112. package/docs/src/ru/ru.json +4 -0
  113. package/docs/src/sitemap.njk +16 -0
  114. package/docs/src/static/css/site.scss +467 -0
  115. package/docs/src/static/font/fontawesome/stylesheet.scss +78 -0
  116. package/docs/src/static/img/apple-touch-icon.png +0 -0
  117. package/docs/src/static/img/demo-min.gif +0 -0
  118. package/docs/src/static/img/demo.gif +0 -0
  119. package/docs/src/static/img/demo.webm +0 -0
  120. package/docs/src/static/img/favicon-16x16.png +0 -0
  121. package/docs/src/static/img/favicon-32x32.png +0 -0
  122. package/docs/src/static/img/favicon.ico +0 -0
  123. package/docs/src/static/img/icon-square.indd +0 -0
  124. package/docs/src/static/img/icon-square.png +0 -0
  125. package/docs/src/static/img/icon.png +0 -0
  126. package/docs/src/static/img/logo-192x192.png +0 -0
  127. package/docs/src/static/img/logo-512x512.png +0 -0
  128. package/docs/src/static/img/logos/angular.png +0 -0
  129. package/docs/src/static/img/logos/django.png +0 -0
  130. package/docs/src/static/img/logos/golang.png +0 -0
  131. package/docs/src/static/img/logos/handlebars.png +0 -0
  132. package/docs/src/static/img/logos/jinja.png +0 -0
  133. package/docs/src/static/img/logos/mustache.png +0 -0
  134. package/docs/src/static/img/logos/nunjucks.png +0 -0
  135. package/docs/src/static/img/logos/twig.png +0 -0
  136. package/docs/src/static/img/old_demo.gif +0 -0
  137. package/docs/src/static/img/style.css +122 -0
  138. package/docs/src/static/js/animate.js +69 -0
  139. package/docs/src/static/js/editor.js +171 -0
  140. package/docs/src/static/js/hamburger.js +19 -0
  141. package/docs/src/static/js/modal.js +47 -0
  142. package/docs/src/static/js/worker.js +142 -0
  143. package/docs/src/static/py/EditorConfig-99-py3-none-any.whl +0 -0
  144. package/docs/src/static/py/PyYAML-99-py3-none-any.whl +0 -0
  145. package/docs/src/static/py/click-99-py3-none-any.whl +0 -0
  146. package/docs/src/static/py/colorama-99-py3-none-any.whl +0 -0
  147. package/docs/src/static/py/cssbeautifier-99-py3-none-any.whl +0 -0
  148. package/docs/src/static/py/djlint-99-py3-none-any.whl +0 -0
  149. package/docs/src/static/py/html_tag_names-99-py3-none-any.whl +0 -0
  150. package/docs/src/static/py/html_void_elements-99-py3-none-any.whl +0 -0
  151. package/docs/src/static/py/jsbeautifier-99-py3-none-any.whl +0 -0
  152. package/docs/src/static/py/json5-99-py3-none-any.whl +0 -0
  153. package/docs/src/static/py/pathspec-99-py3-none-any.whl +0 -0
  154. package/docs/src/static/py/regex-2023.5.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +0 -0
  155. package/docs/src/static/py/six-1.16.0-py2.py3-none-any.whl +0 -0
  156. package/docs/src/static/py/tomli-2.0.1-py3-none-any.whl +0 -0
  157. package/docs/src/static/py/tqdm-4.65.0-py3-none-any.whl +0 -0
  158. package/icon.xcf +0 -0
  159. package/package.json +4 -33
  160. package/poetry.lock +835 -0
  161. package/pyproject.toml +100 -0
  162. package/renovate.json +44 -0
  163. package/scripts/updateVersion.js +16 -0
  164. package/src/djlint/__init__.py +451 -0
  165. package/src/djlint/__main__.py +4 -0
  166. package/src/djlint/formatter/__init__.py +1 -0
  167. package/src/djlint/formatter/attributes.py +212 -0
  168. package/src/djlint/formatter/compress.py +64 -0
  169. package/src/djlint/formatter/condense.py +221 -0
  170. package/src/djlint/formatter/css.py +60 -0
  171. package/src/djlint/formatter/expand.py +111 -0
  172. package/src/djlint/formatter/indent.py +418 -0
  173. package/src/djlint/formatter/js.py +58 -0
  174. package/src/djlint/helpers.py +321 -0
  175. package/src/djlint/lint.py +128 -0
  176. package/src/djlint/output.py +220 -0
  177. package/src/djlint/reformat.py +63 -0
  178. package/src/djlint/rules/H025.py +65 -0
  179. package/src/djlint/rules.yaml +279 -0
  180. package/src/djlint/settings.py +969 -0
  181. package/src/djlint/src.py +91 -0
  182. package/tests/__init__.py +0 -0
  183. package/tests/conftest.py +239 -0
  184. package/tests/test_cli.py +71 -0
  185. package/tests/test_config/__init__.py +0 -0
  186. package/tests/test_config/test_blank_line_after_tag.py +135 -0
  187. package/tests/test_config/test_blank_line_before_tag.py +141 -0
  188. package/tests/test_config/test_close_void_tags.py +31 -0
  189. package/tests/test_config/test_custom_blocks.py +56 -0
  190. package/tests/test_config/test_custom_html.py +45 -0
  191. package/tests/test_config/test_djlintrc/.djlintrc +38 -0
  192. package/tests/test_config/test_djlintrc/__init__.py +0 -0
  193. package/tests/test_config/test_djlintrc/test_config.py +44 -0
  194. package/tests/test_config/test_djlintrc_custom/.djlint-cust +38 -0
  195. package/tests/test_config/test_djlintrc_custom/.djlintrc +2 -0
  196. package/tests/test_config/test_djlintrc_custom/__init__.py +0 -0
  197. package/tests/test_config/test_djlintrc_custom/test_config.py +48 -0
  198. package/tests/test_config/test_excludes/__init__.py +0 -0
  199. package/tests/test_config/test_excludes/excluded.html +1 -0
  200. package/tests/test_config/test_excludes/foo/excluded.html +1 -0
  201. package/tests/test_config/test_excludes/html.html +1 -0
  202. package/tests/test_config/test_excludes/pyproject.toml +3 -0
  203. package/tests/test_config/test_excludes/test_config.py +30 -0
  204. package/tests/test_config/test_extension/__init__.py +0 -0
  205. package/tests/test_config/test_extension/html.test +1 -0
  206. package/tests/test_config/test_extension/pyproject.toml +3 -0
  207. package/tests/test_config/test_extension/test_config.py +27 -0
  208. package/tests/test_config/test_files/.djlintrc_global +9 -0
  209. package/tests/test_config/test_files/test.html +3 -0
  210. package/tests/test_config/test_files/test_config.py +123 -0
  211. package/tests/test_config/test_files/test_two.html +1 -0
  212. package/tests/test_config/test_format_attribute_template_tags.py +280 -0
  213. package/tests/test_config/test_format_css.py +197 -0
  214. package/tests/test_config/test_format_js.py +220 -0
  215. package/tests/test_config/test_gitignore/__init__.py +0 -0
  216. package/tests/test_config/test_gitignore/html_one.html +1 -0
  217. package/tests/test_config/test_gitignore/html_two.html +1 -0
  218. package/tests/test_config/test_gitignore/test_config.py +142 -0
  219. package/tests/test_config/test_ignore/__init__.py +0 -0
  220. package/tests/test_config/test_ignore/html.html +1 -0
  221. package/tests/test_config/test_ignore/html_two.html +12 -0
  222. package/tests/test_config/test_ignore/pyproject.toml +3 -0
  223. package/tests/test_config/test_ignore/test_config.py +32 -0
  224. package/tests/test_config/test_ignore_blocks.py +45 -0
  225. package/tests/test_config/test_ignore_case.py +39 -0
  226. package/tests/test_config/test_indent.py +63 -0
  227. package/tests/test_config/test_linter_output_format/__init__.py +0 -0
  228. package/tests/test_config/test_linter_output_format/html-one.html +1 -0
  229. package/tests/test_config/test_linter_output_format/html-two.html +1 -0
  230. package/tests/test_config/test_linter_output_format/pyproject.toml +3 -0
  231. package/tests/test_config/test_linter_output_format/test_config.py +34 -0
  232. package/tests/test_config/test_max_attribute_length.py +100 -0
  233. package/tests/test_config/test_max_line_length.py +94 -0
  234. package/tests/test_config/test_per_file_ignores/__init__.py +0 -0
  235. package/tests/test_config/test_per_file_ignores/html.html +2 -0
  236. package/tests/test_config/test_per_file_ignores/pyproject.toml +2 -0
  237. package/tests/test_config/test_per_file_ignores/test_config.py +25 -0
  238. package/tests/test_config/test_pragmas/__init__.py +0 -0
  239. package/tests/test_config/test_pragmas/html_five.html +2 -0
  240. package/tests/test_config/test_pragmas/html_four.html +5 -0
  241. package/tests/test_config/test_pragmas/html_one.html +1 -0
  242. package/tests/test_config/test_pragmas/html_six.html +2 -0
  243. package/tests/test_config/test_pragmas/html_three.html +4 -0
  244. package/tests/test_config/test_pragmas/html_two.html +2 -0
  245. package/tests/test_config/test_pragmas/pyproject.toml +3 -0
  246. package/tests/test_config/test_pragmas/test_config.py +142 -0
  247. package/tests/test_config/test_preserve_blank_lines.py +109 -0
  248. package/tests/test_config/test_preserve_leading_space.py +159 -0
  249. package/tests/test_config/test_profile/__init__.py +0 -0
  250. package/tests/test_config/test_profile/html.html +2 -0
  251. package/tests/test_config/test_profile/pyproject.toml +3 -0
  252. package/tests/test_config/test_profile/test_config.py +64 -0
  253. package/tests/test_config/test_pyproject/__init__.py +0 -0
  254. package/tests/test_config/test_pyproject/blank.html +0 -0
  255. package/tests/test_config/test_pyproject/pyproject.toml +36 -0
  256. package/tests/test_config/test_pyproject/test_config.py +44 -0
  257. package/tests/test_django/__init__.py +0 -0
  258. package/tests/test_django/test_asset.py +32 -0
  259. package/tests/test_django/test_autoescape.py +25 -0
  260. package/tests/test_django/test_block.py +29 -0
  261. package/tests/test_django/test_blocktrans.py +236 -0
  262. package/tests/test_django/test_blocktrans_trimmed.py +283 -0
  263. package/tests/test_django/test_comments.py +164 -0
  264. package/tests/test_django/test_filter.py +30 -0
  265. package/tests/test_django/test_for.py +34 -0
  266. package/tests/test_django/test_if.py +34 -0
  267. package/tests/test_django/test_ifchanged.py +37 -0
  268. package/tests/test_django/test_include.py +24 -0
  269. package/tests/test_django/test_load.py +24 -0
  270. package/tests/test_django/test_quoted.py +34 -0
  271. package/tests/test_django/test_spaceless.py +30 -0
  272. package/tests/test_django/test_tag_spaces.py +35 -0
  273. package/tests/test_django/test_templatetag.py +40 -0
  274. package/tests/test_django/test_verbatim.py +24 -0
  275. package/tests/test_django/test_with.py +32 -0
  276. package/tests/test_djlint/-.html +1 -0
  277. package/tests/test_djlint/__init__.py +0 -0
  278. package/tests/test_djlint/bad.html +6 -0
  279. package/tests/test_djlint/bad.html.dj +23 -0
  280. package/tests/test_djlint/bad.html.dj2 +2 -0
  281. package/tests/test_djlint/multiple_files/a/a.html +1 -0
  282. package/tests/test_djlint/multiple_files/b/b1.html +1 -0
  283. package/tests/test_djlint/multiple_files/b/b2.html +1 -0
  284. package/tests/test_djlint/test_djlint.py +242 -0
  285. package/tests/test_golang/__init__.py +0 -0
  286. package/tests/test_golang/test_if.py +24 -0
  287. package/tests/test_golang/test_range.py +24 -0
  288. package/tests/test_handlebars/__init__.py +0 -0
  289. package/tests/test_handlebars/test_each.py +34 -0
  290. package/tests/test_handlebars/test_else.py +24 -0
  291. package/tests/test_handlebars/test_with.py +24 -0
  292. package/tests/test_html/__init__.py +0 -0
  293. package/tests/test_html/test_alpinejs.py +65 -0
  294. package/tests/test_html/test_attributes.py +935 -0
  295. package/tests/test_html/test_aurelia.py +24 -0
  296. package/tests/test_html/test_basics.py +905 -0
  297. package/tests/test_html/test_bracket_same_line.py +177 -0
  298. package/tests/test_html/test_case.py +81 -0
  299. package/tests/test_html/test_cdata.py +34 -0
  300. package/tests/test_html/test_comments.py +333 -0
  301. package/tests/test_html/test_css.py +193 -0
  302. package/tests/test_html/test_doctype_declarations.py +202 -0
  303. package/tests/test_html/test_ignored.py +193 -0
  304. package/tests/test_html/test_interpolation.py +56 -0
  305. package/tests/test_html/test_line_break_after_multiline_tag.py +95 -0
  306. package/tests/test_html/test_next_line_empty.py +53 -0
  307. package/tests/test_html/test_selfclosing.py +55 -0
  308. package/tests/test_html/test_single_attribute_per_line.py +87 -0
  309. package/tests/test_html/test_srcset.py +43 -0
  310. package/tests/test_html/test_svg.py +104 -0
  311. package/tests/test_html/test_symbol_entities.py +34 -0
  312. package/tests/test_html/test_tag_code.py +24 -0
  313. package/tests/test_html/test_tag_dd.py +24 -0
  314. package/tests/test_html/test_tag_details_summary.py +24 -0
  315. package/tests/test_html/test_tag_dt.py +24 -0
  316. package/tests/test_html/test_tag_fig_caption.py +29 -0
  317. package/tests/test_html/test_tag_hr.py +29 -0
  318. package/tests/test_html/test_tag_picture.py +32 -0
  319. package/tests/test_html/test_tag_pre.py +45 -0
  320. package/tests/test_html/test_tag_script.py +516 -0
  321. package/tests/test_html/test_tag_small.py +24 -0
  322. package/tests/test_html/test_tag_span.py +119 -0
  323. package/tests/test_html/test_tag_textarea.py +82 -0
  324. package/tests/test_html/test_tags.py +842 -0
  325. package/tests/test_html/test_text.py +34 -0
  326. package/tests/test_html/test_whitespace.py +477 -0
  327. package/tests/test_html/test_yaml.py +156 -0
  328. package/tests/test_jinja/__init__.py +0 -0
  329. package/tests/test_jinja/test_call.py +34 -0
  330. package/tests/test_jinja/test_parenthesis.py +24 -0
  331. package/tests/test_linter/__init__.py +0 -0
  332. package/tests/test_linter/test_custom_rules/.djlint_rules.yaml +6 -0
  333. package/tests/test_linter/test_custom_rules/__init__.py +0 -0
  334. package/tests/test_linter/test_custom_rules/html.html +1 -0
  335. package/tests/test_linter/test_custom_rules/pyproject.toml +1 -0
  336. package/tests/test_linter/test_custom_rules/test_linter.py +29 -0
  337. package/tests/test_linter/test_custom_rules_bad/.djlint_rules.yaml +24 -0
  338. package/tests/test_linter/test_custom_rules_bad/__init__.py +0 -0
  339. package/tests/test_linter/test_custom_rules_bad/html.html +1 -0
  340. package/tests/test_linter/test_custom_rules_bad/pyproject.toml +1 -0
  341. package/tests/test_linter/test_custom_rules_bad/test_linter.py +29 -0
  342. package/tests/test_linter/test_django_linter.py +476 -0
  343. package/tests/test_linter/test_h005.py +45 -0
  344. package/tests/test_linter/test_h006.py +81 -0
  345. package/tests/test_linter/test_h007.py +45 -0
  346. package/tests/test_linter/test_h008.py +60 -0
  347. package/tests/test_linter/test_h009.py +45 -0
  348. package/tests/test_linter/test_h010.py +44 -0
  349. package/tests/test_linter/test_h037.py +150 -0
  350. package/tests/test_linter/test_ignore_rules.py +45 -0
  351. package/tests/test_linter/test_jinja_linter.py +227 -0
  352. package/tests/test_linter/test_linter.py +691 -0
  353. package/tests/test_linter/test_nunjucks_linter.py +59 -0
  354. package/tests/test_linter/test_python_module_rules/.djlint_rules.yaml +4 -0
  355. package/tests/test_linter/test_python_module_rules/__init__.py +0 -0
  356. package/tests/test_linter/test_python_module_rules/html_bad.html +3 -0
  357. package/tests/test_linter/test_python_module_rules/html_ok.html +3 -0
  358. package/tests/test_linter/test_python_module_rules/my_module.py +32 -0
  359. package/tests/test_linter/test_python_module_rules/pyproject.toml +1 -0
  360. package/tests/test_linter/test_python_module_rules/test_linter.py +26 -0
  361. package/tests/test_nunjucks/__init__.py +0 -0
  362. package/tests/test_nunjucks/test_functions.py +94 -0
  363. package/tests/test_nunjucks/test_macros.py +41 -0
  364. package/tests/test_nunjucks/test_set.py +206 -0
  365. package/tests/test_nunjucks/test_spaceless.py +24 -0
  366. package/tests/test_twig/__init__.py +0 -0
  367. package/tests/test_twig/test_comments.py +51 -0
  368. package/tox.ini +48 -0
@@ -0,0 +1,453 @@
1
+ ---
2
+ description: djLint Изменения. Ознакомьтесь с обновлениями последних релизов и узнайте, какие функции вы можете ожидать при следующем обновлении.
3
+ title: Изменения
4
+ keywords: облицовка шаблонов, форматер шаблонов, djLint, HTML, шаблоны, форматер, линтер, использование, Изменения
5
+ ---
6
+
7
+ {% raw %}
8
+
9
+ # Изменения
10
+
11
+ Изменения теперь включен в [релиз](https://github.com/Riverside-Healthcare/djLint/releases).
12
+
13
+ <!--## {{ "next_release" i18n }}-->
14
+
15
+ ## 1.0.2
16
+
17
+ ::: content
18
+
19
+ - Исправления ошибок [#240](https://github.com/Riverside-Healthcare/djLint/issues/240)
20
+ :::
21
+
22
+ ## 1.0.1
23
+
24
+ ::: content
25
+
26
+ - Исправления ошибок [#236](https://github.com/Riverside-Healthcare/djLint/issues/236)
27
+ :::
28
+
29
+ ## 1.0.0
30
+
31
+ ::: content
32
+
33
+ - Исправления ошибок [#224](https://github.com/Riverside-Healthcare/djLint/issues/224)
34
+ :::
35
+
36
+ ## 0.7.6
37
+
38
+ ::: content
39
+
40
+ - Исправления ошибок [#189](https://github.com/Riverside-Healthcare/djLint/issues/189), [#197](https://github.com/Riverside-Healthcare/djLint/issues/189)
41
+ - Добавлен флаг `--warn` для возврата ошибок в виде предупреждений.
42
+ :::
43
+
44
+ ## 0.7.5
45
+
46
+ ::: content
47
+
48
+ - Исправления ошибок [#187](https://github.com/Riverside-Healthcare/djLint/issues/187)
49
+ - Добавлена улучшенная поддержка `yaml` front matter в файлах шаблонов
50
+ - Добавлено правило T032 для [#123](https://github.com/Riverside-Healthcare/djLint/issues/123)
51
+ - Добавлено правило H033 для [#124](https://github.com/Riverside-Healthcare/djLint/issues/124)
52
+ - Изменены профили линтеров, чтобы они были инклюзивными, а не эксклюзивными для [#178](https://github.com/Riverside-Healthcare/djLint/issues/178)
53
+ - Добавлена альтернативная опция файла конфигурации `.djlintrc` для [#188](https://github.com/Riverside-Healthcare/djLint/issues/188)
54
+ :::
55
+
56
+ ## 0.7.4
57
+
58
+ ::: content
59
+
60
+ - Исправления ошибок [#177](https://github.com/Riverside-Healthcare/djLint/issues/177)
61
+ :::
62
+
63
+ ## 0.7.3
64
+
65
+ ::: content
66
+
67
+ - Исправления ошибок [#173](https://github.com/Riverside-Healthcare/djLint/issues/173), [#174](https://github.com/Riverside-Healthcare/djLint/issues/174)
68
+ - Упал Py3.6 с сайта `pyproject.toml`.
69
+ :::
70
+
71
+ ## 0.7.2
72
+
73
+ ::: content
74
+
75
+ - Исправления ошибок [#167](https://github.com/Riverside-Healthcare/djLint/issues/167), [#166](https://github.com/Riverside-Healthcare/djLint/issues/166), [#171](https://github.com/Riverside-Healthcare/djLint/issues/171), [#169](https://github.com/Riverside-Healthcare/djLint/issues/169)
76
+ :::
77
+
78
+ ## 0.7.1
79
+
80
+ ::: content
81
+
82
+ - Исправления ошибок [#166](https://github.com/Riverside-Healthcare/djLint/issues/166)
83
+ :::
84
+
85
+ ## 0.7.0
86
+
87
+ ::: content
88
+
89
+ - Добавлена настройка для пользовательских HTML-тегов
90
+ - Исправления ошибок
91
+ :::
92
+
93
+ ## 0.6.9
94
+
95
+ ::: content
96
+
97
+ - Добавлены профили HTML и Angular
98
+ - Разрешены некоторые сущности в правиле #H023
99
+ - Исправления ошибок
100
+ :::
101
+
102
+ ## 0.6.8
103
+
104
+ ::: content
105
+
106
+ - Исправления ошибок
107
+ - Обновленные документы
108
+ :::
109
+
110
+ ## 0.6.7
111
+
112
+ ::: content
113
+
114
+ - Добавлена опция конфигурации `format_attribute_template_tags` как опция для форматирования тегов шаблонов внутри атрибутов
115
+ - Добавлена опция конфигурации `linter_output_format` для настройки порядка переменных сообщений линтера
116
+ - Добавлены правила H030 и H031 для проверки мета-тегов
117
+ :::
118
+
119
+ ## 0.6.6
120
+
121
+ ::: content
122
+
123
+ - Большие исправления
124
+ :::
125
+
126
+ ## 0.6.5
127
+
128
+ ::: content
129
+
130
+ - Обновлены пути вывода, чтобы они были относительными к корню проекта
131
+ - Исправления ошибок
132
+ :::
133
+
134
+ ## 0.6.4
135
+
136
+ ::: content
137
+
138
+ - Исправления ошибок
139
+ :::
140
+
141
+ ## 0.6.3
142
+
143
+ ::: content
144
+
145
+ - Добавлена поддержка тега django `blocktrans`.
146
+ - Исправления ошибок
147
+ :::
148
+
149
+ ## 0.6.2
150
+
151
+ ::: content
152
+
153
+ - Исправления ошибок
154
+ :::
155
+
156
+ ## 0.6.1
157
+
158
+ ::: content
159
+
160
+ - Исправления ошибок
161
+ - Сделать правило T028 более строгим с более четким посланием
162
+ :::
163
+
164
+ ## 0.6.0
165
+
166
+ ::: content
167
+
168
+ - Добавлено правило T027 для проверки наличия незакрытых тегов в синтаксисе шаблона
169
+ - Добавлено правило T028 для проверки отсутствия пробельных тегов в атрибутах
170
+ - Добавлено правило H029 для проверки метода формы в нижнем регистре
171
+ - Игнорируются теги djagno blocktranslate, которые не имеют "trimmed" от форматера
172
+ - Исправления ошибок
173
+ :::
174
+
175
+ ## 0.5.9a
176
+
177
+ ::: content
178
+
179
+ - Добавлена поддержка тестирования для python 3.10
180
+ - Добавлен крючок предварительного коммита
181
+ :::
182
+
183
+ ## 0.5.9
184
+
185
+ ::: content
186
+
187
+ - Добавлена опция `--use-gitignore` для расширения исключений
188
+ - Изменено сопоставление исключений по умолчанию
189
+ - Исправлены пути исключения окон
190
+ - Исправлено форматирование тегов `{%...%}` в атрибутах
191
+ - Исправлено форматирование циклов for и вложенных условий в атрибутах
192
+ :::
193
+
194
+ ## 0.5.8
195
+
196
+ ::: content
197
+
198
+ - Добавлена опция require_pragma
199
+ - Обновлен DJ018 для перехвата `data-src` и `action` на входах
200
+ - Исправлен синтаксис игнорирования строк
201
+ - Добавлена опция `--lint` в качестве заполнителя для использования по умолчанию
202
+ - Исправления ошибок
203
+ :::
204
+
205
+ ## 0.5.7
206
+
207
+ ::: content
208
+
209
+ - Исправления ошибок
210
+ :::
211
+
212
+ ## 0.5.6
213
+
214
+ ::: content
215
+
216
+ - Добавлено правило H026 для поиска пустых тегов id и class
217
+ - Исправления ошибок
218
+ :::
219
+
220
+ ## 0.5.5
221
+
222
+ ::: content
223
+
224
+ - Консолидированные настройки и сокращенный код
225
+ - Исправления ошибок
226
+ :::
227
+
228
+ ## 0.5.4
229
+
230
+ ::: content
231
+
232
+ - Добавлено правило H020 для поиска пустых пар тегов
233
+ - Добавлено правило H021 для поиска инлайн-стилей
234
+ - Добавлено правило H022 для поиска http-ссылок
235
+ - Добавлено правило H023 для поиска ссылок на сущности
236
+ - Добавлено правило H024 для поиска типов в скриптах и стилях
237
+ - Добавлено правило H025 для проверки сиротских тегов. Благодаря https://stackoverflow.com/a/1736801/10265880
238
+ - Улучшено форматирование атрибутов
239
+ - Обновлена опция `blank_line_after_tag` для добавления новой строки независимо от местоположения
240
+ - Исправлено форматирование тегов django `trans`
241
+ - Добавлено форматирование для встроенных стилей
242
+ - Добавлено форматирование для условий шаблона внутри атрибутов
243
+ - Добавлен srcset как возможное местоположение url в правилах линтера
244
+ - Ускорено форматирование
245
+ - Особая благодарность [jayvdb](https://github.com/jayvdb>)
246
+ :::
247
+
248
+ ## 0.5.3
249
+
250
+ ::: content
251
+
252
+ - Измените stdout для опций `--reformat/check`, чтобы выводить новый html только при использовании stdin в качестве входа
253
+ :::
254
+
255
+ ## 0.5.2
256
+
257
+ ::: content
258
+
259
+ - Разделите требование `alt` с H006 на H013
260
+ - Добавлен необязательный файл пользовательских правил
261
+ - Добавлен `golang` в качестве опции профиля
262
+ - Исправлено форматирование игнорируемых блоков, содержащих встроенные комментарии
263
+ - Добавлен текст по умолчанию для опций `--indent` и `-e`
264
+ - Обновлены правила url для принятия #
265
+ - Исправлена кодировка файлов в ОС Windows
266
+ - Исправлен регекс для однострочных тегов шаблонов
267
+ - Исправление `blank_line_after_tag` для тегов с пробелами в начале строки
268
+
269
+ :::
270
+
271
+ ## 0.5.1
272
+
273
+ ::: content
274
+
275
+ - Добавлено правило H019
276
+ - Исправлены ошибки в DJ018 и H012
277
+ :::
278
+
279
+ ## 0.5.0
280
+
281
+ ::: content
282
+
283
+ - Исправлено несколько ошибок регекс-сопоставления в правилах linter
284
+ - Запрещено возвращать ошибки в игнорируемых блоках
285
+ - Добавлена возможность игнорировать блок кода из linter/formatter с тегами `{% djlint:off %}...{% djlint:on %}`.
286
+ :::
287
+
288
+ ## 0.4.9
289
+
290
+ ::: content
291
+
292
+ - Исправлена ошибка [#35](https://github.com/Riverside-Healthcare/djLint/issues/35)
293
+ :::
294
+
295
+ ## 0.4.8
296
+
297
+ ::: content
298
+
299
+ - Исправлена ошибка [#34](https://github.com/Riverside-Healthcare/djLint/issues/34)
300
+ :::
301
+
302
+ ## 0.4.7
303
+
304
+ ::: content
305
+
306
+ - Перемещение тега `source` в однострочные теги
307
+ :::
308
+
309
+ ## 0.4.6
310
+
311
+ ::: content
312
+
313
+ - Исправлена ошибка [#31](https://github.com/Riverside-Healthcare/djLint/issues/31)
314
+ :::
315
+
316
+ ## 0.4.5
317
+
318
+ ::: content
319
+
320
+ - Добавлены лучшие практики в документацию
321
+ - Добавлена опция `--profile` для установки правил linter/formatter по умолчанию
322
+ - Добавлены правила linter для шаблонов jinja url
323
+ :::
324
+
325
+ ## 0.4.4
326
+
327
+ ::: content
328
+
329
+ - Измените конфигурацию отступа со строки на int. `--indent 3`
330
+ :::
331
+
332
+ ## 0.4.3
333
+
334
+ ::: content
335
+
336
+ - Добавлена опция cli для интервала между отступами. `--indent=" "`.
337
+ :::
338
+
339
+ ## 0.4.2
340
+
341
+ ::: content
342
+
343
+ - Добавлена поддержка дополнительных пробелов после тегов с помощью опции `blank_line_after_tag`.
344
+ :::
345
+
346
+ ## 0.4.1
347
+
348
+ ::: content
349
+
350
+ - Добавлена поддержка одновременной обработки нескольких файлов или папок
351
+ :::
352
+
353
+ ## 0.4.0
354
+
355
+ ::: content
356
+
357
+ - Исправлено форматирование тегов django `{# ... #}` тегов
358
+ - Добавлена поддержка отступов для тегов figcaption, details и summary
359
+ - Добавлена поддержка переопределения или расширения списка исключенных путей в `pyproject.toml`.
360
+ :::
361
+
362
+ ## 0.3.9
363
+
364
+ ::: content
365
+
366
+ - Обновленная обработка атрибутов
367
+ :::
368
+
369
+ ## 0.3.8
370
+
371
+ ::: content
372
+
373
+ - Добавлена поддержка stdin
374
+ :::
375
+
376
+ ## 0.3.7
377
+
378
+ ::: content
379
+
380
+ - Исправлено форматирование тегов `small`, `dt` и `dd`.
381
+ :::
382
+
383
+ ## 0.3.6
384
+
385
+ ::: content
386
+
387
+ - Добавлена поддержка форматера для открывающих блоков Nunjucks `{%-`
388
+ :::
389
+
390
+ ## 0.3.5
391
+
392
+ ::: content
393
+
394
+ - Добавлена поддержка большего количества блоков Django
395
+ - Добавлена поддержка пользовательских блоков
396
+ - Добавлена поддержка конфигурации в `pyproject.toml`
397
+ :::
398
+
399
+ ## 0.3.4
400
+
401
+ ::: content
402
+
403
+ - Исправлен тег Nunjucks без пробелов в формате `-%}`
404
+ :::
405
+
406
+ ## 0.3.3
407
+
408
+ ::: content
409
+
410
+ - Позволяет коротким тегам `div` быть однострочными
411
+ :::
412
+
413
+ ## 0.3.2
414
+
415
+ ::: content
416
+
417
+ - Исправлено форматирование комментариев в Django
418
+ - Игнорирование форматирования текстовой области
419
+ :::
420
+
421
+ ## 0.3.1
422
+
423
+ ::: content
424
+
425
+ - Обновлен регекс форматирования атрибутов
426
+ - Обновлено правило притирки W010
427
+ :::
428
+
429
+ ## 0.3.0
430
+
431
+ ::: content
432
+
433
+ - Изменен код выхода на 1 в случае изменения форматирования
434
+ - Добавлена поддержка тегов `asset` в Jinja
435
+ :::
436
+
437
+ ## 0.2.9
438
+
439
+ ::: content
440
+
441
+ - Обновленный регекс W018
442
+ - Удалены дублирующиеся сообщения lint
443
+ - Обновлен E001 для Handlebars
444
+ :::
445
+
446
+ ## 0.2.8
447
+
448
+ ::: content
449
+
450
+ - Исправлена ошибка прогресс-бара для старой версии Click
451
+ :::
452
+
453
+ {% endraw %}
@@ -0,0 +1,142 @@
1
+ ---
2
+ description: Конфигурация djLint для линтинга и форматирования HTML-шаблонов. Воспользуйтесь многочисленными возможностями форматирования.
3
+ title: Конфигурация
4
+ keywords: облицовка шаблонов, форматер шаблонов, djLint, HTML, шаблоны, форматер, линтер, использование, configuration
5
+ ---
6
+
7
+ # {{ "configuration" | i18n }}
8
+
9
+ Конфигурация выполняется либо через файл `pyproject.toml` вашего проекта, либо через файл `.djlintrc`. Арги командной строки всегда будут переопределять любые настройки в `pyproject.toml`. Локальные настройки проекта всегда будут иметь приоритет над глобальными конфигурационными файлами.
10
+
11
+ ```ini
12
+ [tool.djlint]
13
+ <config options>
14
+ ```
15
+
16
+ Формат для `.djlintrc` - `json`.
17
+
18
+ ```json
19
+ {
20
+ "вариант": "значение"
21
+ }
22
+ ```
23
+
24
+ ## Опции
25
+
26
+ <div class="field">
27
+ <label class="label">Фильтр опций</label>
28
+ <div class="control">
29
+ <input id="filter" class="input" type="text" placeholder="тип для фильтрации опций..." />
30
+
31
+ </div>
32
+ </div>
33
+ <script>
34
+ const hideAll=() => {
35
+ (document.querySelectorAll('.option') || []).forEach((x) => {
36
+ x.classList.add('is-hidden')
37
+ })
38
+ }
39
+ const showAll=() => {
40
+ (document.querySelectorAll('.option') || []).forEach((x) => {
41
+ x.classList.remove('is-hidden')
42
+ })
43
+ }
44
+ var search_data = {{ configuration | dump | safe }};
45
+ document.querySelector('#filter').addEventListener('input', (event) => {
46
+ document.querySelector('#no-matches').classList.add('is-hidden');
47
+ if (event.target.value === ''){
48
+ showAll()
49
+ } else {
50
+ var regex = new RegExp(event.target.value.replaceAll(' ', '.*[ _-].*'), 'gmi'),
51
+ matches=[]
52
+ search_data.forEach((obj) => {
53
+ if (JSON.stringify(obj).match(regex)) {
54
+ matches.push(obj.name)
55
+ }
56
+ if(matches.length > 0){
57
+ document.querySelector('#no-matches').classList.add('is-hidden');
58
+ (document.querySelectorAll('.option') || []).forEach((x) => {
59
+ if (matches.includes(x.getAttribute('data-name'))){
60
+ x.classList.remove('is-hidden')
61
+ }
62
+ else {
63
+ x.classList.add('is-hidden')
64
+ }
65
+ })} else {
66
+ hideAll();
67
+ document.querySelector('#no-matches').classList.remove('is-hidden');
68
+ }
69
+ })
70
+ }
71
+ })
72
+ </script>
73
+ <hr />
74
+
75
+ {% for option in configuration | sort(false, false, "name") %}
76
+
77
+ <div class="option has-background-white-ter p-3 my-3 is-rounded" data-name="{{option.name}}">
78
+ <div class="is-flex is-justify-content-space-between">
79
+ <h3 class="title is-3">
80
+ <a class="link bn" href="#{{ option.name | slugify }}">∞</a> {{ option.name }}</h3>
81
+ <div class="tags is-inline-block">{% for tag in option.tags %}<span class="tag is-family-sans-serif is-link has-text-weight-medium">{{ tag }}</span>{% endfor %}</div></div>
82
+
83
+ <p>{{ option.description[locale or "en"] | markdown | safe }}</p>
84
+
85
+ <div class="tabs">
86
+ <ul>
87
+
88
+ {% for flag in option.usage %}
89
+
90
+ <li class="{% if loop.index == 1 %}is-active{% endif %}"><a tab="{{- flag.name | slugify -}}-tab">{{ flag.name }}</a></li>
91
+
92
+ {% endfor %}
93
+
94
+ </ul>
95
+ </div>
96
+
97
+ <div class="tab-container">
98
+ {% for flag in option.usage %}
99
+ <div class="tab {% if loop.index == 1 %}is-active{% endif %}"id="{{- flag.name | slugify -}}-tab">
100
+
101
+ ```{% if flag.name == "pyproject.toml" %}toml{% else %}json{% endif %}
102
+ {{ flag.value | safe }}
103
+ ```
104
+
105
+ </div>
106
+ {% endfor %}
107
+
108
+ </div></div>
109
+
110
+ {% endfor %}
111
+
112
+ <div id="no-matches" class="is-hidden mb-5">Ничего не найдено. Попробуйте другой поиск.</div>
113
+
114
+ <script>
115
+ document.addEventListener('click', function (e) {
116
+ if (
117
+ e.target.closest('.tabs li a') &&
118
+ e.target.closest('.tabs li a').hasAttribute('tab')
119
+ ) {
120
+ var tabLinks = document.querySelectorAll('.tabs li.is-active');
121
+ for (var l = 0; l < tabLinks.length; l++) {
122
+ tabLinks[l].classList.remove('is-active');
123
+ }
124
+
125
+ var tabs = document.querySelectorAll('.tab.is-active');
126
+
127
+ for (var i = 0; i < tabs.length; i++) {
128
+ tabs[i].classList.remove('is-active');
129
+ }
130
+
131
+ var activeBox = document.querySelectorAll('.tab#' + e.target.getAttribute('tab'))
132
+ for(var y= 0; y < activeBox.length; y++){
133
+ activeBox[y].classList.add('is-active');
134
+ }
135
+
136
+ var activeTab = document.querySelectorAll('a[tab="' + e.target.getAttribute('tab') + '"]')
137
+ for(var y= 0; y < activeTab.length; y++){
138
+ activeTab[y].parentElement.classList.add('is-active');
139
+ }
140
+ }
141
+ });
142
+ </script>
@@ -0,0 +1,3 @@
1
+ {
2
+ "layout": "docs_layout.njk"
3
+ }
@@ -0,0 +1,82 @@
1
+ ---
2
+ description: Форматируйте свои HTML-шаблоны с помощью djLint. Быстрый и точный вывод сделает ваши шаблоны блестящими.
3
+ title: Использование форматера
4
+ keywords: облицовка шаблонов, форматер шаблонов, djLint, HTML, шаблоны, форматер, линтер, использование, Использование форматера
5
+ ---
6
+
7
+ # Использование форматера
8
+
9
+ Форматировщик djLint возьмет неряшливые html-шаблоны и сделает форматирование последовательным и легким!
10
+
11
+ Форматировщик - это бета-версия инструмента. Прежде чем вносить изменения, проверьте результат.
12
+
13
+ Чтобы просмотреть, что может измениться в форматировании, выполните следующие действия:
14
+
15
+ ```bash
16
+ djlint . --check
17
+ ```
18
+
19
+ Для форматирования кода и обновления файлов выполните:
20
+
21
+ ```bash
22
+ djlint . --reformat
23
+
24
+ # как насчет скриптов и стилей форматирования?
25
+ djlint . --reformat --format-css --format-js
26
+ ```
27
+
28
+ <div class="box notification is-info is-light">
29
+ <span class="icon is-large"><i class="fas fa-2x fa-circle-arrow-right"></i></span><div class="my-auto ml-3 is-inline-block"><a href="/ru/docs/configuration/">Ознакомьтесь с руководством по настройке, чтобы узнать обо всех возможностях!</a></div>
30
+ </div>
31
+
32
+ {% admonition
33
+ "note",
34
+ "Note",
35
+ "Переформатирование не работает с длинными json/html, встроенными в данные атрибутов."
36
+ %}
37
+
38
+ {% admonition
39
+ "note",
40
+ "Note",
41
+ "djLint не является парсером html или синтаксическим валидатором."
42
+ %}
43
+
44
+ ## Вот пример!
45
+
46
+ ### До
47
+
48
+ Вот кусок HTML, который отчаянно нуждается во внимании -
49
+ {% raw %}
50
+
51
+ ```
52
+ {% load admin_list %}{% load i18n %}<p class="paginator">{% if pagination_required %}{% for i in page_range %}{% paginator_number cl i %}{% endfor %}{% endif %}{{ cl.result_count }}{% if cl.result_count == 1 %}{{ cl.opts.verbose_name }} {% else %}{{ cl.opts.verbose_name_plural }} {% endif %}{% if show_all_url %} <a href="{{ show_all_url }}" class="showall">{% translate 'Show all' %} </a> {% endif %}{% if cl.formset and cl.result_count %}<input type="submit" name="_save" class="default" value="{% translate 'Save' %}">{% endif %} </p>
53
+ ```
54
+
55
+ {% endraw %}
56
+
57
+ ### После
58
+
59
+ Теперь он выглядит немного лучше... мы можем его прочитать :)
60
+
61
+ {% raw %}
62
+
63
+ ```html
64
+ {% load admin_list %} {% load i18n %}
65
+ <p class="paginator">
66
+ {% if pagination_required %} {% for i in page_range %} {% paginator_number cl
67
+ i %} {% endfor %} {% endif %} {{ cl.result_count }} {% if cl.result_count == 1
68
+ %} {{ cl.opts.verbose_name }} {% else %} {{ cl.opts.verbose_name_plural }} {%
69
+ endif %} {% if show_all_url %}
70
+ <a href="{{ show_all_url }}" class="showall"> {% translate 'Show all' %} </a>
71
+ {% endif %} {% if cl.formset and cl.result_count %}
72
+ <input
73
+ type="submit"
74
+ name="_save"
75
+ class="default"
76
+ value="{% translate 'Save' %}"
77
+ />
78
+ {% endif %}
79
+ </p>
80
+ ```
81
+
82
+ {% endraw %}