mdlint 0.1.0 → 0.2.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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/.pre-commit-hooks.yaml +6 -0
  3. data/CHANGELOG.md +33 -0
  4. data/README.md +136 -4
  5. data/Rakefile +14 -0
  6. data/Steepfile +17 -0
  7. data/action.yml +54 -0
  8. data/benchmark/compare.rb +49 -0
  9. data/benchmark/format.rb +29 -0
  10. data/lib/mdlint/cache_store.rb +85 -0
  11. data/lib/mdlint/cli/output_formatter.rb +150 -0
  12. data/lib/mdlint/cli.rb +268 -106
  13. data/lib/mdlint/config.rb +87 -1
  14. data/lib/mdlint/dialect.rb +53 -0
  15. data/lib/mdlint/linter/directive_filter.rb +91 -0
  16. data/lib/mdlint/linter/rule.rb +25 -5
  17. data/lib/mdlint/linter/rule_engine.rb +44 -7
  18. data/lib/mdlint/linter/rules/code_block_syntax.rb +128 -0
  19. data/lib/mdlint/linter/rules/first_line_heading.rb +10 -3
  20. data/lib/mdlint/linter/rules/heading_increment.rb +4 -3
  21. data/lib/mdlint/linter/rules/heading_style.rb +24 -2
  22. data/lib/mdlint/linter/rules/japanese.rb +201 -0
  23. data/lib/mdlint/linter/rules/line_length.rb +37 -0
  24. data/lib/mdlint/linter/rules/link_check.rb +151 -0
  25. data/lib/mdlint/linter/rules/no_multiple_blanks.rb +1 -0
  26. data/lib/mdlint/linter/rules/no_trailing_spaces.rb +1 -0
  27. data/lib/mdlint/linter/rules/source_style.rb +317 -0
  28. data/lib/mdlint/linter/violation.rb +16 -1
  29. data/lib/mdlint/linter.rb +9 -3
  30. data/lib/mdlint/lsp.rb +176 -0
  31. data/lib/mdlint/parallel_runner.rb +42 -0
  32. data/lib/mdlint/parser/block_parser.rb +627 -50
  33. data/lib/mdlint/parser/inline_parser.rb +259 -27
  34. data/lib/mdlint/parser/state.rb +21 -2
  35. data/lib/mdlint/parser.rb +5 -5
  36. data/lib/mdlint/plugin.rb +31 -0
  37. data/lib/mdlint/renderer/html_renderer.rb +346 -0
  38. data/lib/mdlint/renderer/md_renderer.rb +147 -11
  39. data/lib/mdlint/renderer.rb +5 -0
  40. data/lib/mdlint/text_width.rb +39 -0
  41. data/lib/mdlint/toc.rb +80 -0
  42. data/lib/mdlint/token.rb +3 -1
  43. data/lib/mdlint/version.rb +1 -1
  44. data/lib/mdlint.rb +25 -5
  45. data/script/commonmark_compatibility.rb +24 -0
  46. data/script/fetch_commonmark_spec.rb +14 -0
  47. data/sig/internal.rbs +405 -0
  48. data/sig/mdlint.rbs +107 -0
  49. metadata +26 -2
data/sig/mdlint.rbs ADDED
@@ -0,0 +1,107 @@
1
+ module Mdlint
2
+ class Error < StandardError
3
+ end
4
+
5
+ type options = Hash[Symbol, untyped]
6
+
7
+ def self.format: (String source, ?options options) -> String
8
+ def self.update_toc: (String source, ?options options) -> String
9
+ def self.html: (String source, ?options options) -> String
10
+ def self.parse: (String source, ?options options) -> Array[Token]
11
+ def self.fix: (String source, ?options options) -> String
12
+ def self.format_file: (String path, ?options options) -> (String | bool)
13
+ def self.lint: (String source, ?options options) -> Array[Linter::Violation]
14
+ def self.lint_file: (String path, ?options options) -> Array[Linter::Violation]
15
+
16
+ VERSION: String
17
+
18
+ class Dialect
19
+ attr_reader name: Symbol
20
+ attr_reader features: Array[Symbol]
21
+ def initialize: (?Symbol | String name, ?features: Array[Symbol]) -> void
22
+ def gfm?: () -> bool
23
+ def feature?: (Symbol feature) -> bool
24
+ def to_sym: () -> Symbol
25
+ def self.features: () -> Hash[Symbol, Array[Symbol]]
26
+ def self.resolve: (untyped value) -> Dialect
27
+ def self.register: (Symbol | String name, ?features: Array[Symbol]) -> Symbol
28
+ def self.registered: () -> Array[Symbol]
29
+ end
30
+
31
+ module Plugin
32
+ class Error < Mdlint::Error
33
+ end
34
+ def self.register_rule: (Class rule_class) -> Class
35
+ def self.register_dialect: (Symbol | String name, ?features: Array[Symbol]) -> Symbol
36
+ def self.unregister_rule: (Class rule_class) -> void
37
+ def self.load: (String path) -> untyped
38
+ end
39
+
40
+ module Parser
41
+ def self.parse: (String source, ?options options) -> Array[Token]
42
+ end
43
+
44
+ module Renderer
45
+ def self.render: (Array[Token] tokens, ?options options) -> String
46
+ def self.render_html: (Array[Token] tokens, ?options options) -> String
47
+ end
48
+
49
+ module Toc
50
+ def self.update: (String source, ?options options) -> String
51
+ end
52
+
53
+ class Token
54
+ attr_accessor type: Symbol
55
+ attr_accessor tag: String?
56
+ attr_accessor nesting: Integer
57
+ attr_accessor level: Integer
58
+ attr_accessor content: String
59
+ attr_accessor markup: String
60
+ attr_accessor info: String
61
+ attr_accessor meta: Hash[Symbol, untyped]
62
+ attr_accessor map: Array[Integer]?
63
+ attr_accessor children: Array[Token]
64
+ attr_accessor attrs: Hash[Symbol, untyped]
65
+ def initialize: (type: Symbol, **untyped) -> void
66
+ def opening?: () -> bool
67
+ def closing?: () -> bool
68
+ def self_closing?: () -> bool
69
+ def block?: () -> bool
70
+ def inline?: () -> bool
71
+ end
72
+
73
+ module Linter
74
+ def self.fix: (String source, ?options options) -> String
75
+ def self.check: (String source, ?options options) -> Array[Violation]
76
+
77
+ class Violation
78
+ attr_reader rule_id: String
79
+ attr_reader message: String
80
+ attr_reader line: Integer
81
+ attr_reader column: Integer?
82
+ attr_reader severity: Symbol
83
+ attr_reader fixable: bool
84
+ def initialize: (rule_id: String, message: String, line: Integer, ?column: Integer?, ?severity: Symbol, ?fixable: bool) -> void
85
+ def to_s: () -> String
86
+ def to_h: () -> Hash[Symbol, untyped]
87
+ def fixable?: () -> bool
88
+ def error?: () -> bool
89
+ def warning?: () -> bool
90
+ def info?: () -> bool
91
+ end
92
+
93
+ class Rule
94
+ def initialize: (?options options) -> void
95
+ def check: (Array[Token] tokens, String source) -> Array[Violation]
96
+ def fix: (Array[Token] tokens, String source) -> String
97
+ end
98
+
99
+ class RuleRegistry
100
+ def self.all: () -> Array[singleton(Rule)]
101
+ def self.find: (String rule_id) -> singleton(Rule)?
102
+ def self.register: (singleton(Rule) rule_class) -> void
103
+ def self.unregister: (Class rule_class) -> void
104
+ def self.normalize_id: (String rule_id) -> String
105
+ end
106
+ end
107
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdlint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yudai Takada
@@ -19,31 +19,55 @@ executables:
19
19
  extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
+ - ".pre-commit-hooks.yaml"
22
23
  - CHANGELOG.md
23
24
  - LICENSE.txt
24
25
  - README.md
25
26
  - Rakefile
27
+ - Steepfile
28
+ - action.yml
29
+ - benchmark/compare.rb
30
+ - benchmark/format.rb
26
31
  - exe/mdlint
27
32
  - lib/mdlint.rb
33
+ - lib/mdlint/cache_store.rb
28
34
  - lib/mdlint/cli.rb
35
+ - lib/mdlint/cli/output_formatter.rb
29
36
  - lib/mdlint/config.rb
37
+ - lib/mdlint/dialect.rb
30
38
  - lib/mdlint/linter.rb
39
+ - lib/mdlint/linter/directive_filter.rb
31
40
  - lib/mdlint/linter/rule.rb
32
41
  - lib/mdlint/linter/rule_engine.rb
42
+ - lib/mdlint/linter/rules/code_block_syntax.rb
33
43
  - lib/mdlint/linter/rules/first_line_heading.rb
34
44
  - lib/mdlint/linter/rules/heading_increment.rb
35
45
  - lib/mdlint/linter/rules/heading_style.rb
46
+ - lib/mdlint/linter/rules/japanese.rb
47
+ - lib/mdlint/linter/rules/line_length.rb
48
+ - lib/mdlint/linter/rules/link_check.rb
36
49
  - lib/mdlint/linter/rules/no_multiple_blanks.rb
37
50
  - lib/mdlint/linter/rules/no_trailing_spaces.rb
51
+ - lib/mdlint/linter/rules/source_style.rb
38
52
  - lib/mdlint/linter/violation.rb
53
+ - lib/mdlint/lsp.rb
54
+ - lib/mdlint/parallel_runner.rb
39
55
  - lib/mdlint/parser.rb
40
56
  - lib/mdlint/parser/block_parser.rb
41
57
  - lib/mdlint/parser/inline_parser.rb
42
58
  - lib/mdlint/parser/state.rb
59
+ - lib/mdlint/plugin.rb
43
60
  - lib/mdlint/renderer.rb
61
+ - lib/mdlint/renderer/html_renderer.rb
44
62
  - lib/mdlint/renderer/md_renderer.rb
63
+ - lib/mdlint/text_width.rb
64
+ - lib/mdlint/toc.rb
45
65
  - lib/mdlint/token.rb
46
66
  - lib/mdlint/version.rb
67
+ - script/commonmark_compatibility.rb
68
+ - script/fetch_commonmark_spec.rb
69
+ - sig/internal.rbs
70
+ - sig/mdlint.rbs
47
71
  homepage: https://github.com/ydah/mdlint
48
72
  licenses:
49
73
  - MIT
@@ -67,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
91
  - !ruby/object:Gem::Version
68
92
  version: '0'
69
93
  requirements: []
70
- rubygems_version: 4.0.4
94
+ rubygems_version: 4.0.6
71
95
  specification_version: 4
72
96
  summary: A Pure Ruby Markdown linter and formatter
73
97
  test_files: []