llm-docs-builder 0.12.0 → 0.13.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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +25 -7
- data/.github/workflows/docker.yml +7 -7
- data/.github/workflows/push.yml +3 -3
- data/.rubocop.yml +1 -14
- data/.ruby-version +1 -1
- data/.yard-lint.yml +275 -0
- data/CHANGELOG.md +9 -0
- data/Dockerfile +14 -7
- data/Gemfile +0 -4
- data/Gemfile.lock +27 -48
- data/lib/llm_docs_builder/cli.rb +0 -1
- data/lib/llm_docs_builder/html_to_markdown_converter.rb +35 -1
- data/lib/llm_docs_builder/output_formatter.rb +1 -1
- data/lib/llm_docs_builder/text_compressor.rb +2 -2
- data/lib/llm_docs_builder/transformers/heading_transformer.rb +19 -7
- data/lib/llm_docs_builder/version.rb +1 -1
- data/llm-docs-builder.gemspec +2 -2
- data/package-lock.json +331 -0
- data/package.json +9 -0
- data/renovate.json +22 -9
- metadata +10 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2a55f2ba08f239388d3f4834df0c1caeef9c138278726b442f6533e000a3554c
|
|
4
|
+
data.tar.gz: 173e4950404e3a4b83bd5213520a29b5b6f70b374dd18c58a8374c9b5bf55b21
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d8769c0a92e29025165900ff3a1c65b1acbd42b51b8f6402353c157dfd4755ddd84dce8fdb26c334d4cba456c04f83af322ceb9fb554aea4ff4ac3a5330f81c5
|
|
7
|
+
data.tar.gz: 305ea0aa8cc44144079988e4faf80125fbf765331d3801ec8273f183c9b77cbc1430bf5b10eba5b09f0068ca526c4bc2b5d8a90a48179583270de1f62df12f77
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -23,19 +23,19 @@ jobs:
|
|
|
23
23
|
fail-fast: false
|
|
24
24
|
matrix:
|
|
25
25
|
ruby:
|
|
26
|
+
- '4.0'
|
|
26
27
|
- '3.4'
|
|
27
28
|
- '3.3'
|
|
28
|
-
- '3.2'
|
|
29
29
|
include:
|
|
30
|
-
- ruby: '
|
|
30
|
+
- ruby: '4.0'
|
|
31
31
|
coverage: 'true'
|
|
32
32
|
steps:
|
|
33
|
-
- uses: actions/checkout@
|
|
33
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
34
34
|
with:
|
|
35
35
|
fetch-depth: 0
|
|
36
36
|
|
|
37
37
|
- name: Set up Ruby
|
|
38
|
-
uses: ruby/setup-ruby@v1
|
|
38
|
+
uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0
|
|
39
39
|
with:
|
|
40
40
|
ruby-version: ${{ matrix.ruby }}
|
|
41
41
|
bundler-cache: true
|
|
@@ -58,15 +58,32 @@ jobs:
|
|
|
58
58
|
timeout-minutes: 5
|
|
59
59
|
runs-on: ubuntu-latest
|
|
60
60
|
steps:
|
|
61
|
-
- uses: actions/checkout@
|
|
61
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
62
62
|
- name: Set up Ruby
|
|
63
|
-
uses: ruby/setup-ruby@v1
|
|
63
|
+
uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0
|
|
64
64
|
with:
|
|
65
|
-
ruby-version: '
|
|
65
|
+
ruby-version: '4.0.3'
|
|
66
66
|
bundler-cache: true
|
|
67
67
|
- name: Run yard-lint
|
|
68
68
|
run: bundle exec yard-lint lib/
|
|
69
69
|
|
|
70
|
+
lostconf:
|
|
71
|
+
timeout-minutes: 5
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
75
|
+
with:
|
|
76
|
+
fetch-depth: 0
|
|
77
|
+
- name: Set up Node.js
|
|
78
|
+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
79
|
+
with:
|
|
80
|
+
node-version: '20'
|
|
81
|
+
cache: 'npm'
|
|
82
|
+
- name: Install dependencies
|
|
83
|
+
run: npm ci
|
|
84
|
+
- name: Run lostconf
|
|
85
|
+
run: npx lostconf --fail-on-stale
|
|
86
|
+
|
|
70
87
|
ci-success:
|
|
71
88
|
name: CI Success
|
|
72
89
|
runs-on: ubuntu-latest
|
|
@@ -74,6 +91,7 @@ jobs:
|
|
|
74
91
|
needs:
|
|
75
92
|
- specs
|
|
76
93
|
- yard-lint
|
|
94
|
+
- lostconf
|
|
77
95
|
steps:
|
|
78
96
|
- name: Check all jobs passed
|
|
79
97
|
if: |
|
|
@@ -25,13 +25,13 @@ jobs:
|
|
|
25
25
|
id-token: write
|
|
26
26
|
steps:
|
|
27
27
|
- name: Checkout
|
|
28
|
-
uses: actions/checkout@
|
|
28
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
29
29
|
with:
|
|
30
30
|
fetch-depth: 0
|
|
31
31
|
|
|
32
32
|
- name: Docker meta
|
|
33
33
|
id: meta
|
|
34
|
-
uses: docker/metadata-action@
|
|
34
|
+
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6
|
|
35
35
|
with:
|
|
36
36
|
images: |
|
|
37
37
|
mensfeld/llm-docs-builder
|
|
@@ -45,28 +45,28 @@ jobs:
|
|
|
45
45
|
type=raw,value=latest,enable={{is_default_branch}}
|
|
46
46
|
|
|
47
47
|
- name: Set up QEMU
|
|
48
|
-
uses: docker/setup-qemu-action@
|
|
48
|
+
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4
|
|
49
49
|
|
|
50
50
|
- name: Set up Docker Buildx
|
|
51
|
-
uses: docker/setup-buildx-action@
|
|
51
|
+
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
|
|
52
52
|
|
|
53
53
|
- name: Login to Docker Hub
|
|
54
54
|
if: github.event_name != 'pull_request'
|
|
55
|
-
uses: docker/login-action@
|
|
55
|
+
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4
|
|
56
56
|
with:
|
|
57
57
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
58
58
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
59
59
|
|
|
60
60
|
- name: Login to GitHub Container Registry
|
|
61
61
|
if: github.event_name != 'pull_request'
|
|
62
|
-
uses: docker/login-action@
|
|
62
|
+
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4
|
|
63
63
|
with:
|
|
64
64
|
registry: ghcr.io
|
|
65
65
|
username: ${{ github.actor }}
|
|
66
66
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
67
67
|
|
|
68
68
|
- name: Build and push
|
|
69
|
-
uses: docker/build-push-action@
|
|
69
|
+
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7
|
|
70
70
|
with:
|
|
71
71
|
context: .
|
|
72
72
|
platforms: linux/amd64,linux/arm64
|
data/.github/workflows/push.yml
CHANGED
|
@@ -19,12 +19,12 @@ jobs:
|
|
|
19
19
|
id-token: write
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
22
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
23
23
|
with:
|
|
24
24
|
fetch-depth: 0
|
|
25
25
|
|
|
26
26
|
- name: Set up Ruby
|
|
27
|
-
uses: ruby/setup-ruby@
|
|
27
|
+
uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0
|
|
28
28
|
with:
|
|
29
29
|
bundler-cache: false
|
|
30
30
|
|
|
@@ -32,4 +32,4 @@ jobs:
|
|
|
32
32
|
run: |
|
|
33
33
|
bundle install --jobs 4 --retry 3
|
|
34
34
|
|
|
35
|
-
- uses: rubygems/release-gem@
|
|
35
|
+
- uses: rubygems/release-gem@6317d8d1f7e28c24d28f6eff169ea854948bd9f7 # v1.2.0
|
data/.rubocop.yml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
AllCops:
|
|
2
|
-
TargetRubyVersion: 3.
|
|
2
|
+
TargetRubyVersion: 3.3
|
|
3
3
|
NewCops: enable
|
|
4
4
|
SuggestExtensions: false
|
|
5
5
|
|
|
@@ -11,38 +11,25 @@ Style/StringLiterals:
|
|
|
11
11
|
|
|
12
12
|
Layout/LineLength:
|
|
13
13
|
Max: 120
|
|
14
|
-
Exclude:
|
|
15
|
-
- 'lib/llms_txt/cli.rb'
|
|
16
14
|
|
|
17
15
|
Metrics/ClassLength:
|
|
18
16
|
Max: 200
|
|
19
|
-
Exclude:
|
|
20
|
-
- 'lib/llms_txt/cli.rb'
|
|
21
17
|
|
|
22
18
|
Metrics/MethodLength:
|
|
23
19
|
Max: 35
|
|
24
|
-
Exclude:
|
|
25
|
-
- 'lib/llms_txt/cli.rb'
|
|
26
20
|
|
|
27
21
|
Metrics/AbcSize:
|
|
28
22
|
Max: 40
|
|
29
|
-
Exclude:
|
|
30
|
-
- 'lib/llms_txt/cli.rb'
|
|
31
23
|
|
|
32
24
|
Metrics/CyclomaticComplexity:
|
|
33
25
|
Max: 15
|
|
34
|
-
Exclude:
|
|
35
|
-
- 'lib/llms_txt/config.rb'
|
|
36
26
|
|
|
37
27
|
Metrics/PerceivedComplexity:
|
|
38
28
|
Max: 15
|
|
39
|
-
Exclude:
|
|
40
|
-
- 'lib/llms_txt/config.rb'
|
|
41
29
|
|
|
42
30
|
Metrics/BlockLength:
|
|
43
31
|
Exclude:
|
|
44
32
|
- 'spec/**/*'
|
|
45
|
-
- 'lib/llms_txt/cli.rb'
|
|
46
33
|
- '*.gemspec'
|
|
47
34
|
|
|
48
35
|
Style/FrozenStringLiteralComment:
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0.3
|
data/.yard-lint.yml
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
# YARD-Lint Configuration
|
|
2
|
+
# See https://github.com/mensfeld/yard-lint for documentation
|
|
3
|
+
|
|
4
|
+
# Global settings for all validators
|
|
5
|
+
AllValidators:
|
|
6
|
+
YardOptions:
|
|
7
|
+
- "--private"
|
|
8
|
+
- "--protected"
|
|
9
|
+
Exclude:
|
|
10
|
+
- .git/**/*
|
|
11
|
+
- vendor/**/*
|
|
12
|
+
- node_modules/**/*
|
|
13
|
+
- spec/**/*
|
|
14
|
+
FailOnSeverity: convention
|
|
15
|
+
MinCoverage: 99.0
|
|
16
|
+
DiffMode:
|
|
17
|
+
DefaultBaseRef:
|
|
18
|
+
|
|
19
|
+
# Documentation validators
|
|
20
|
+
Documentation/UndocumentedObjects:
|
|
21
|
+
Description: Checks for classes, modules, and methods without documentation.
|
|
22
|
+
Enabled: true
|
|
23
|
+
Severity: error
|
|
24
|
+
ExcludedMethods:
|
|
25
|
+
- initialize/0
|
|
26
|
+
- "/^_/"
|
|
27
|
+
|
|
28
|
+
Documentation/UndocumentedMethodArguments:
|
|
29
|
+
Description: Checks for method parameters without @param tags.
|
|
30
|
+
Enabled: true
|
|
31
|
+
Severity: error
|
|
32
|
+
|
|
33
|
+
Documentation/UndocumentedBooleanMethods:
|
|
34
|
+
Description: Checks that question mark methods document their boolean return.
|
|
35
|
+
Enabled: true
|
|
36
|
+
Severity: error
|
|
37
|
+
|
|
38
|
+
Documentation/UndocumentedOptions:
|
|
39
|
+
Description: Detects methods with options hash parameters but no @option tags.
|
|
40
|
+
Enabled: true
|
|
41
|
+
Severity: error
|
|
42
|
+
|
|
43
|
+
Documentation/MarkdownSyntax:
|
|
44
|
+
Description: Detects common markdown syntax errors in documentation.
|
|
45
|
+
Enabled: true
|
|
46
|
+
Severity: error
|
|
47
|
+
|
|
48
|
+
Documentation/EmptyCommentLine:
|
|
49
|
+
Description: Detects empty comment lines at the start or end of documentation blocks.
|
|
50
|
+
Enabled: true
|
|
51
|
+
Severity: convention
|
|
52
|
+
EnabledPatterns:
|
|
53
|
+
Leading: true
|
|
54
|
+
Trailing: true
|
|
55
|
+
|
|
56
|
+
Documentation/BlankLineBeforeDefinition:
|
|
57
|
+
Description: Detects blank lines between YARD documentation and method definition.
|
|
58
|
+
Enabled: true
|
|
59
|
+
Severity: convention
|
|
60
|
+
OrphanedSeverity: convention
|
|
61
|
+
EnabledPatterns:
|
|
62
|
+
SingleBlankLine: true
|
|
63
|
+
OrphanedDocs: true
|
|
64
|
+
|
|
65
|
+
# Tags validators
|
|
66
|
+
Tags/Order:
|
|
67
|
+
Description: Enforces consistent ordering of YARD tags.
|
|
68
|
+
Enabled: true
|
|
69
|
+
Severity: error
|
|
70
|
+
EnforcedOrder:
|
|
71
|
+
- param
|
|
72
|
+
- option
|
|
73
|
+
- return
|
|
74
|
+
- raise
|
|
75
|
+
- example
|
|
76
|
+
|
|
77
|
+
Tags/InvalidTypes:
|
|
78
|
+
Description: Validates type definitions in @param, @return, @option tags.
|
|
79
|
+
Enabled: true
|
|
80
|
+
Severity: error
|
|
81
|
+
ValidatedTags:
|
|
82
|
+
- param
|
|
83
|
+
- option
|
|
84
|
+
- return
|
|
85
|
+
|
|
86
|
+
Tags/TypeSyntax:
|
|
87
|
+
Description: Validates YARD type syntax using YARD parser.
|
|
88
|
+
Enabled: true
|
|
89
|
+
Severity: error
|
|
90
|
+
ValidatedTags:
|
|
91
|
+
- param
|
|
92
|
+
- option
|
|
93
|
+
- return
|
|
94
|
+
- yieldreturn
|
|
95
|
+
|
|
96
|
+
Tags/MeaninglessTag:
|
|
97
|
+
Description: Detects @param/@option tags on classes, modules, or constants.
|
|
98
|
+
Enabled: true
|
|
99
|
+
Severity: error
|
|
100
|
+
CheckedTags:
|
|
101
|
+
- param
|
|
102
|
+
- option
|
|
103
|
+
InvalidObjectTypes:
|
|
104
|
+
- class
|
|
105
|
+
- module
|
|
106
|
+
- constant
|
|
107
|
+
|
|
108
|
+
Tags/CollectionType:
|
|
109
|
+
Description: Validates Hash collection syntax consistency.
|
|
110
|
+
Enabled: true
|
|
111
|
+
Severity: error
|
|
112
|
+
EnforcedStyle: long
|
|
113
|
+
ValidatedTags:
|
|
114
|
+
- param
|
|
115
|
+
- option
|
|
116
|
+
- return
|
|
117
|
+
- yieldreturn
|
|
118
|
+
|
|
119
|
+
Tags/TagTypePosition:
|
|
120
|
+
Description: Validates type annotation position in tags.
|
|
121
|
+
Enabled: true
|
|
122
|
+
Severity: error
|
|
123
|
+
CheckedTags:
|
|
124
|
+
- param
|
|
125
|
+
- option
|
|
126
|
+
EnforcedStyle: type_after_name
|
|
127
|
+
|
|
128
|
+
Tags/ApiTags:
|
|
129
|
+
Description: Enforces @api tags on public objects.
|
|
130
|
+
Enabled: false
|
|
131
|
+
Severity: error
|
|
132
|
+
AllowedApis:
|
|
133
|
+
- public
|
|
134
|
+
- private
|
|
135
|
+
- internal
|
|
136
|
+
|
|
137
|
+
Tags/OptionTags:
|
|
138
|
+
Description: Requires @option tags for methods with options parameters.
|
|
139
|
+
Enabled: true
|
|
140
|
+
Severity: error
|
|
141
|
+
|
|
142
|
+
Tags/ExampleSyntax:
|
|
143
|
+
Description: Validates Ruby syntax in @example tags.
|
|
144
|
+
Enabled: true
|
|
145
|
+
Severity: warning
|
|
146
|
+
|
|
147
|
+
Tags/RedundantParamDescription:
|
|
148
|
+
Description: Detects meaningless parameter descriptions that add no value.
|
|
149
|
+
Enabled: true
|
|
150
|
+
Severity: convention
|
|
151
|
+
CheckedTags:
|
|
152
|
+
- param
|
|
153
|
+
- option
|
|
154
|
+
Articles:
|
|
155
|
+
- The
|
|
156
|
+
- the
|
|
157
|
+
- A
|
|
158
|
+
- a
|
|
159
|
+
- An
|
|
160
|
+
- an
|
|
161
|
+
MaxRedundantWords: 6
|
|
162
|
+
GenericTerms:
|
|
163
|
+
- object
|
|
164
|
+
- instance
|
|
165
|
+
- value
|
|
166
|
+
- data
|
|
167
|
+
- item
|
|
168
|
+
- element
|
|
169
|
+
EnabledPatterns:
|
|
170
|
+
ArticleParam: true
|
|
171
|
+
PossessiveParam: true
|
|
172
|
+
TypeRestatement: true
|
|
173
|
+
ParamToVerb: true
|
|
174
|
+
IdPattern: true
|
|
175
|
+
DirectionalDate: true
|
|
176
|
+
TypeGeneric: true
|
|
177
|
+
|
|
178
|
+
Tags/InformalNotation:
|
|
179
|
+
Description: Detects informal tag notation patterns like "Note:" instead of @note.
|
|
180
|
+
Enabled: true
|
|
181
|
+
Severity: warning
|
|
182
|
+
CaseSensitive: false
|
|
183
|
+
RequireStartOfLine: true
|
|
184
|
+
Patterns:
|
|
185
|
+
Note: "@note"
|
|
186
|
+
Todo: "@todo"
|
|
187
|
+
TODO: "@todo"
|
|
188
|
+
FIXME: "@todo"
|
|
189
|
+
See: "@see"
|
|
190
|
+
See also: "@see"
|
|
191
|
+
Warning: "@deprecated"
|
|
192
|
+
Deprecated: "@deprecated"
|
|
193
|
+
Author: "@author"
|
|
194
|
+
Version: "@version"
|
|
195
|
+
Since: "@since"
|
|
196
|
+
Returns: "@return"
|
|
197
|
+
Raises: "@raise"
|
|
198
|
+
Example: "@example"
|
|
199
|
+
|
|
200
|
+
Tags/NonAsciiType:
|
|
201
|
+
Description: Detects non-ASCII characters in type annotations.
|
|
202
|
+
Enabled: true
|
|
203
|
+
Severity: warning
|
|
204
|
+
ValidatedTags:
|
|
205
|
+
- param
|
|
206
|
+
- option
|
|
207
|
+
- return
|
|
208
|
+
- yieldreturn
|
|
209
|
+
- yieldparam
|
|
210
|
+
|
|
211
|
+
Tags/TagGroupSeparator:
|
|
212
|
+
Description: Enforces blank line separators between different YARD tag groups.
|
|
213
|
+
Enabled: false
|
|
214
|
+
Severity: convention
|
|
215
|
+
TagGroups:
|
|
216
|
+
param:
|
|
217
|
+
- param
|
|
218
|
+
- option
|
|
219
|
+
return:
|
|
220
|
+
- return
|
|
221
|
+
error:
|
|
222
|
+
- raise
|
|
223
|
+
- throws
|
|
224
|
+
example:
|
|
225
|
+
- example
|
|
226
|
+
meta:
|
|
227
|
+
- see
|
|
228
|
+
- note
|
|
229
|
+
- todo
|
|
230
|
+
- deprecated
|
|
231
|
+
- since
|
|
232
|
+
- version
|
|
233
|
+
- api
|
|
234
|
+
yield:
|
|
235
|
+
- yield
|
|
236
|
+
- yieldparam
|
|
237
|
+
- yieldreturn
|
|
238
|
+
RequireAfterDescription: false
|
|
239
|
+
|
|
240
|
+
# Warnings validators - catches YARD parser errors
|
|
241
|
+
Warnings/UnknownTag:
|
|
242
|
+
Description: Detects unknown YARD tags.
|
|
243
|
+
Enabled: true
|
|
244
|
+
Severity: error
|
|
245
|
+
|
|
246
|
+
Warnings/UnknownDirective:
|
|
247
|
+
Description: Detects unknown YARD directives.
|
|
248
|
+
Enabled: true
|
|
249
|
+
Severity: error
|
|
250
|
+
|
|
251
|
+
Warnings/InvalidTagFormat:
|
|
252
|
+
Description: Detects malformed tag syntax.
|
|
253
|
+
Enabled: true
|
|
254
|
+
Severity: error
|
|
255
|
+
|
|
256
|
+
Warnings/InvalidDirectiveFormat:
|
|
257
|
+
Description: Detects malformed directive syntax.
|
|
258
|
+
Enabled: true
|
|
259
|
+
Severity: error
|
|
260
|
+
|
|
261
|
+
Warnings/DuplicatedParameterName:
|
|
262
|
+
Description: Detects duplicate @param tags.
|
|
263
|
+
Enabled: true
|
|
264
|
+
Severity: error
|
|
265
|
+
|
|
266
|
+
Warnings/UnknownParameterName:
|
|
267
|
+
Description: Detects @param tags for non-existent parameters.
|
|
268
|
+
Enabled: true
|
|
269
|
+
Severity: error
|
|
270
|
+
|
|
271
|
+
# Semantic validators
|
|
272
|
+
Semantic/AbstractMethods:
|
|
273
|
+
Description: Ensures @abstract methods do not have real implementations.
|
|
274
|
+
Enabled: true
|
|
275
|
+
Severity: error
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.13.0 (2026-05-11)
|
|
4
|
+
- [Breaking] Dropped Ruby 3.2 support. Minimum required Ruby version is now 3.3.
|
|
5
|
+
- [Fix] **Heading Nesting in Normalize Mode** — Fixed `normalize_headings` producing incorrect heading levels when same-level headings are nested under a parent.
|
|
6
|
+
- Consecutive same-level headings (e.g., two `##` headings) now correctly adjust the child's markdown level to be deeper than the parent's (e.g., `##` → `###`)
|
|
7
|
+
- Effective level formula: `max(parent_effective_level + 1, original_level)`
|
|
8
|
+
- ATX closing hashes (`## Title ##`) are now stripped from titles before building hierarchical paths
|
|
9
|
+
- [Fix] **HTML-to-Markdown Section Nesting** — Headings inside nested `<section>` elements now receive adjusted markdown levels based on section nesting depth.
|
|
10
|
+
- `<h2>` inside a nested `<section>` under another `<section>` with its own `<h2>` is now correctly rendered as `###` instead of `##`
|
|
11
|
+
|
|
3
12
|
## 0.12.0 (2025-11-12)
|
|
4
13
|
- [Feature] **HTML to Markdown Reverse Converter** — Added support for converting HTML content to markdown format.
|
|
5
14
|
- Enables processing of HTML documentation sources
|
data/Dockerfile
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# Creates a minimal Docker image (~50MB) for running the CLI without Ruby installation
|
|
5
5
|
|
|
6
6
|
# Stage 1: Builder
|
|
7
|
-
FROM ruby:
|
|
7
|
+
FROM ruby:4.0-alpine AS builder
|
|
8
8
|
|
|
9
9
|
# Install build dependencies
|
|
10
10
|
RUN apk add --no-cache \
|
|
@@ -36,17 +36,24 @@ RUN bundle config set --local without 'development test' && \
|
|
|
36
36
|
RUN gem build llm-docs-builder.gemspec
|
|
37
37
|
|
|
38
38
|
# Stage 2: Runtime
|
|
39
|
-
FROM ruby:
|
|
39
|
+
FROM ruby:4.0-alpine
|
|
40
40
|
|
|
41
|
-
# Install runtime dependencies
|
|
41
|
+
# Install runtime dependencies and build tools for native extensions
|
|
42
42
|
RUN apk add --no-cache \
|
|
43
43
|
ca-certificates \
|
|
44
|
-
tzdata
|
|
44
|
+
tzdata \
|
|
45
|
+
libxml2 \
|
|
46
|
+
libxslt
|
|
45
47
|
|
|
46
|
-
# Copy built gem and install it
|
|
48
|
+
# Copy built gem and install it (needs build tools for nokogiri)
|
|
47
49
|
COPY --from=builder /gem/llm-docs-builder-*.gem /tmp/
|
|
48
|
-
RUN
|
|
49
|
-
|
|
50
|
+
RUN apk add --no-cache --virtual .build-deps \
|
|
51
|
+
build-base \
|
|
52
|
+
libxml2-dev \
|
|
53
|
+
libxslt-dev && \
|
|
54
|
+
gem install /tmp/llm-docs-builder-*.gem --no-document && \
|
|
55
|
+
rm /tmp/llm-docs-builder-*.gem && \
|
|
56
|
+
apk del .build-deps
|
|
50
57
|
|
|
51
58
|
# Set working directory for user files
|
|
52
59
|
WORKDIR /workspace
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
llm-docs-builder (0.
|
|
4
|
+
llm-docs-builder (0.13.0)
|
|
5
5
|
nokogiri (~> 1.17)
|
|
6
6
|
zeitwerk (~> 2.6)
|
|
7
7
|
|
|
@@ -9,48 +9,31 @@ GEM
|
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
11
|
ast (2.4.3)
|
|
12
|
-
byebug (12.0.0)
|
|
13
12
|
coderay (1.1.3)
|
|
14
|
-
date (3.5.0)
|
|
15
13
|
diff-lcs (1.6.2)
|
|
16
14
|
docile (1.4.1)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
irb (1.15.3)
|
|
20
|
-
pp (>= 0.6.0)
|
|
21
|
-
rdoc (>= 4.0.0)
|
|
22
|
-
reline (>= 0.4.2)
|
|
23
|
-
json (2.16.0)
|
|
15
|
+
io-console (0.8.2)
|
|
16
|
+
json (2.19.5)
|
|
24
17
|
language_server-protocol (3.17.0.5)
|
|
25
18
|
lint_roller (1.1.0)
|
|
26
19
|
method_source (1.1.0)
|
|
27
|
-
|
|
20
|
+
mini_portile2 (2.8.9)
|
|
21
|
+
nokogiri (1.19.3)
|
|
22
|
+
mini_portile2 (~> 2.8.2)
|
|
28
23
|
racc (~> 1.4)
|
|
29
|
-
parallel (1.
|
|
30
|
-
parser (3.3.
|
|
24
|
+
parallel (2.1.0)
|
|
25
|
+
parser (3.3.11.1)
|
|
31
26
|
ast (~> 2.4.1)
|
|
32
27
|
racc
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
prettyprint (0.2.0)
|
|
36
|
-
prism (1.6.0)
|
|
37
|
-
pry (0.15.2)
|
|
28
|
+
prism (1.9.0)
|
|
29
|
+
pry (0.16.0)
|
|
38
30
|
coderay (~> 1.1)
|
|
39
31
|
method_source (~> 1.0)
|
|
40
|
-
|
|
41
|
-
byebug (~> 12.0)
|
|
42
|
-
pry (>= 0.13, < 0.16)
|
|
43
|
-
psych (5.2.6)
|
|
44
|
-
date
|
|
45
|
-
stringio
|
|
32
|
+
reline (>= 0.6.0)
|
|
46
33
|
racc (1.8.1)
|
|
47
34
|
rainbow (3.1.1)
|
|
48
|
-
rake (13.
|
|
49
|
-
|
|
50
|
-
erb
|
|
51
|
-
psych (>= 4.0.0)
|
|
52
|
-
tsort
|
|
53
|
-
regexp_parser (2.11.3)
|
|
35
|
+
rake (13.4.2)
|
|
36
|
+
regexp_parser (2.12.0)
|
|
54
37
|
reline (0.6.3)
|
|
55
38
|
io-console (~> 0.5)
|
|
56
39
|
rspec (3.13.2)
|
|
@@ -62,24 +45,24 @@ GEM
|
|
|
62
45
|
rspec-expectations (3.13.5)
|
|
63
46
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
64
47
|
rspec-support (~> 3.13.0)
|
|
65
|
-
rspec-mocks (3.13.
|
|
48
|
+
rspec-mocks (3.13.8)
|
|
66
49
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
67
50
|
rspec-support (~> 3.13.0)
|
|
68
|
-
rspec-support (3.13.
|
|
69
|
-
rubocop (1.
|
|
51
|
+
rspec-support (3.13.7)
|
|
52
|
+
rubocop (1.86.1)
|
|
70
53
|
json (~> 2.3)
|
|
71
54
|
language_server-protocol (~> 3.17.0.2)
|
|
72
55
|
lint_roller (~> 1.1.0)
|
|
73
|
-
parallel (
|
|
56
|
+
parallel (>= 1.10)
|
|
74
57
|
parser (>= 3.3.0.2)
|
|
75
58
|
rainbow (>= 2.2.2, < 4.0)
|
|
76
59
|
regexp_parser (>= 2.9.3, < 3.0)
|
|
77
|
-
rubocop-ast (>= 1.
|
|
60
|
+
rubocop-ast (>= 1.49.0, < 2.0)
|
|
78
61
|
ruby-progressbar (~> 1.7)
|
|
79
62
|
unicode-display_width (>= 2.4.0, < 4.0)
|
|
80
|
-
rubocop-ast (1.
|
|
63
|
+
rubocop-ast (1.49.1)
|
|
81
64
|
parser (>= 3.3.7.2)
|
|
82
|
-
prism (~> 1.
|
|
65
|
+
prism (~> 1.7)
|
|
83
66
|
ruby-progressbar (1.13.0)
|
|
84
67
|
simplecov (0.22.0)
|
|
85
68
|
docile (~> 1.1)
|
|
@@ -87,26 +70,22 @@ GEM
|
|
|
87
70
|
simplecov_json_formatter (~> 0.1)
|
|
88
71
|
simplecov-html (0.13.2)
|
|
89
72
|
simplecov_json_formatter (0.1.4)
|
|
90
|
-
stringio (3.1.8)
|
|
91
|
-
tsort (0.2.0)
|
|
92
73
|
unicode-display_width (3.2.0)
|
|
93
74
|
unicode-emoji (~> 4.1)
|
|
94
|
-
unicode-emoji (4.
|
|
95
|
-
yard (0.9.
|
|
96
|
-
yard-lint (1.1
|
|
97
|
-
irb
|
|
75
|
+
unicode-emoji (4.2.0)
|
|
76
|
+
yard (0.9.43)
|
|
77
|
+
yard-lint (1.5.1)
|
|
98
78
|
yard (~> 0.9)
|
|
99
79
|
zeitwerk (~> 2.6)
|
|
100
|
-
zeitwerk (2.7.
|
|
80
|
+
zeitwerk (2.7.5)
|
|
101
81
|
|
|
102
82
|
PLATFORMS
|
|
103
|
-
|
|
83
|
+
ruby
|
|
104
84
|
|
|
105
85
|
DEPENDENCIES
|
|
106
|
-
bundler
|
|
86
|
+
bundler
|
|
107
87
|
llm-docs-builder!
|
|
108
88
|
pry
|
|
109
|
-
pry-byebug
|
|
110
89
|
rake (~> 13.0)
|
|
111
90
|
rspec (~> 3.0)
|
|
112
91
|
rubocop (~> 1.0)
|
|
@@ -114,4 +93,4 @@ DEPENDENCIES
|
|
|
114
93
|
yard-lint
|
|
115
94
|
|
|
116
95
|
BUNDLED WITH
|
|
117
|
-
2.
|
|
96
|
+
2.6.9
|
data/lib/llm_docs_builder/cli.rb
CHANGED
|
@@ -120,7 +120,8 @@ module LlmDocsBuilder
|
|
|
120
120
|
text = collapsed_inline_for(element)
|
|
121
121
|
return '' if text.empty?
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
effective_level = effective_heading_level(element, HEADING_LEVEL[tag])
|
|
124
|
+
"#{'#' * effective_level} #{text}"
|
|
124
125
|
when 'blockquote'
|
|
125
126
|
render_blockquote(element)
|
|
126
127
|
when 'pre'
|
|
@@ -641,6 +642,39 @@ module LlmDocsBuilder
|
|
|
641
642
|
out.join("\n\n")
|
|
642
643
|
end
|
|
643
644
|
|
|
645
|
+
# Compute effective heading level adjusted for section nesting
|
|
646
|
+
#
|
|
647
|
+
# When HTML uses nested <section> elements with same-level headings,
|
|
648
|
+
# the inner headings should receive deeper markdown levels. The offset
|
|
649
|
+
# is calculated as the difference between the actual section ancestor
|
|
650
|
+
# count and the expected count for that heading tag (h1 expects 0
|
|
651
|
+
# sections, h2 expects 1, etc.), capped at heading level 6.
|
|
652
|
+
#
|
|
653
|
+
# @param element [Nokogiri::XML::Element] heading element
|
|
654
|
+
# @param base_level [Integer] HTML heading level (1-6)
|
|
655
|
+
# @return [Integer] effective markdown heading level (1-6)
|
|
656
|
+
def effective_heading_level(element, base_level)
|
|
657
|
+
depth = section_ancestor_count(element)
|
|
658
|
+
offset = [depth - (base_level - 1), 0].max
|
|
659
|
+
[base_level + offset, 6].min
|
|
660
|
+
end
|
|
661
|
+
|
|
662
|
+
# Count the number of <section> ancestor elements
|
|
663
|
+
#
|
|
664
|
+
# @param element [Nokogiri::XML::Element]
|
|
665
|
+
# @return [Integer] number of section ancestors
|
|
666
|
+
def section_ancestor_count(element)
|
|
667
|
+
count = 0
|
|
668
|
+
node = element.parent
|
|
669
|
+
|
|
670
|
+
while node
|
|
671
|
+
count += 1 if node.element? && node.name.downcase == 'section'
|
|
672
|
+
node = node.parent
|
|
673
|
+
end
|
|
674
|
+
|
|
675
|
+
count
|
|
676
|
+
end
|
|
677
|
+
|
|
644
678
|
# Helpers
|
|
645
679
|
|
|
646
680
|
# Normalize whitespace in text
|
|
@@ -30,7 +30,7 @@ module LlmDocsBuilder
|
|
|
30
30
|
|
|
31
31
|
# Format number with comma separators for readability
|
|
32
32
|
#
|
|
33
|
-
# @param number [Integer]
|
|
33
|
+
# @param number [Integer] value to format with comma separators
|
|
34
34
|
# @return [String] formatted number with commas
|
|
35
35
|
#
|
|
36
36
|
# @example
|
|
@@ -72,8 +72,8 @@ module LlmDocsBuilder
|
|
|
72
72
|
# Removes common English stopwords that don't carry significant meaning.
|
|
73
73
|
# Preserves code blocks, inline code, and technical terms.
|
|
74
74
|
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
75
|
+
# @deprecated This is an aggressive optimization that may affect readability.
|
|
76
|
+
# Use with caution and test results carefully.
|
|
77
77
|
#
|
|
78
78
|
# @param content [String] text to process
|
|
79
79
|
# @return [String] text with stopwords removed
|
|
@@ -51,24 +51,36 @@ module LlmDocsBuilder
|
|
|
51
51
|
next line if in_code_block
|
|
52
52
|
|
|
53
53
|
# Match markdown headings (1-6 hash symbols followed by space and text)
|
|
54
|
-
|
|
54
|
+
# Supports optional ATX closing hashes (e.g., "## Title ##")
|
|
55
|
+
heading_match = line.match(/^(#+)\s+(.+?)(?:\s+#+)?\s*$/)
|
|
55
56
|
|
|
56
|
-
if heading_match && heading_match[1].
|
|
57
|
-
level = heading_match[1].
|
|
57
|
+
if heading_match && heading_match[1].length.between?(1, 6)
|
|
58
|
+
level = heading_match[1].length
|
|
58
59
|
title = heading_match[2].strip
|
|
59
60
|
|
|
60
61
|
# Update heading stack to current level
|
|
61
62
|
heading_stack = heading_stack[0...level - 1]
|
|
62
|
-
|
|
63
|
+
|
|
64
|
+
# Compute the effective heading level. When same-level headings
|
|
65
|
+
# are nested under a parent (e.g., two consecutive ## headings),
|
|
66
|
+
# the child must receive a deeper markdown level so the output
|
|
67
|
+
# hierarchy is correct.
|
|
68
|
+
effective_level = if heading_stack.empty?
|
|
69
|
+
level
|
|
70
|
+
else
|
|
71
|
+
[heading_stack.last[:effective_level] + 1, level].max
|
|
72
|
+
end
|
|
73
|
+
effective_level = [effective_level, 6].min
|
|
74
|
+
|
|
75
|
+
heading_stack << { title: title, effective_level: effective_level }
|
|
63
76
|
|
|
64
77
|
# Build hierarchical heading
|
|
65
78
|
if level == 1
|
|
66
79
|
# H1 stays as-is (top level)
|
|
67
80
|
line
|
|
68
81
|
else
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
"#{'#' * level} #{hierarchical_title}\n"
|
|
82
|
+
hierarchical_title = heading_stack.map { |e| e[:title] }.join(separator)
|
|
83
|
+
"#{'#' * effective_level} #{hierarchical_title}\n"
|
|
72
84
|
end
|
|
73
85
|
else
|
|
74
86
|
line
|
data/llm-docs-builder.gemspec
CHANGED
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
|
|
21
21
|
spec.homepage = 'https://github.com/mensfeld/llm-docs-builder'
|
|
22
22
|
spec.license = 'MIT'
|
|
23
|
-
spec.required_ruby_version = '>= 3.
|
|
23
|
+
spec.required_ruby_version = '>= 3.3'
|
|
24
24
|
|
|
25
25
|
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
|
26
26
|
spec.metadata['homepage_uri'] = spec.homepage
|
|
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
|
|
|
38
38
|
spec.add_dependency 'nokogiri', '~> 1.17'
|
|
39
39
|
spec.add_dependency 'zeitwerk', '~> 2.6'
|
|
40
40
|
|
|
41
|
-
spec.add_development_dependency 'bundler'
|
|
41
|
+
spec.add_development_dependency 'bundler'
|
|
42
42
|
spec.add_development_dependency 'rake', '~> 13.0'
|
|
43
43
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
44
44
|
spec.add_development_dependency 'rubocop', '~> 1.0'
|
data/package-lock.json
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "llm-docs-builder",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"lockfileVersion": 3,
|
|
5
|
+
"requires": true,
|
|
6
|
+
"packages": {
|
|
7
|
+
"": {
|
|
8
|
+
"name": "llm-docs-builder",
|
|
9
|
+
"version": "1.0.0",
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"lostconf": "0.4.0"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"node_modules/@nodelib/fs.scandir": {
|
|
15
|
+
"version": "2.1.5",
|
|
16
|
+
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
|
17
|
+
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
|
18
|
+
"dev": true,
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@nodelib/fs.stat": "2.0.5",
|
|
22
|
+
"run-parallel": "^1.1.9"
|
|
23
|
+
},
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">= 8"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"node_modules/@nodelib/fs.stat": {
|
|
29
|
+
"version": "2.0.5",
|
|
30
|
+
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
|
31
|
+
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
|
32
|
+
"dev": true,
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">= 8"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"node_modules/@nodelib/fs.walk": {
|
|
39
|
+
"version": "1.2.8",
|
|
40
|
+
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
|
41
|
+
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
|
42
|
+
"dev": true,
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@nodelib/fs.scandir": "2.1.5",
|
|
46
|
+
"fastq": "^1.6.0"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">= 8"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"node_modules/braces": {
|
|
53
|
+
"version": "3.0.3",
|
|
54
|
+
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
|
55
|
+
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
|
56
|
+
"dev": true,
|
|
57
|
+
"license": "MIT",
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"fill-range": "^7.1.1"
|
|
60
|
+
},
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">=8"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"node_modules/chalk": {
|
|
66
|
+
"version": "5.6.2",
|
|
67
|
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
|
|
68
|
+
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
|
|
69
|
+
"dev": true,
|
|
70
|
+
"license": "MIT",
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
|
73
|
+
},
|
|
74
|
+
"funding": {
|
|
75
|
+
"url": "https://github.com/chalk/chalk?sponsor=1"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"node_modules/commander": {
|
|
79
|
+
"version": "12.1.0",
|
|
80
|
+
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
|
|
81
|
+
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
|
|
82
|
+
"dev": true,
|
|
83
|
+
"license": "MIT",
|
|
84
|
+
"engines": {
|
|
85
|
+
"node": ">=18"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"node_modules/fast-glob": {
|
|
89
|
+
"version": "3.3.3",
|
|
90
|
+
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
|
|
91
|
+
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
|
|
92
|
+
"dev": true,
|
|
93
|
+
"license": "MIT",
|
|
94
|
+
"dependencies": {
|
|
95
|
+
"@nodelib/fs.stat": "^2.0.2",
|
|
96
|
+
"@nodelib/fs.walk": "^1.2.3",
|
|
97
|
+
"glob-parent": "^5.1.2",
|
|
98
|
+
"merge2": "^1.3.0",
|
|
99
|
+
"micromatch": "^4.0.8"
|
|
100
|
+
},
|
|
101
|
+
"engines": {
|
|
102
|
+
"node": ">=8.6.0"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"node_modules/fastq": {
|
|
106
|
+
"version": "1.20.1",
|
|
107
|
+
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
|
|
108
|
+
"integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
|
|
109
|
+
"dev": true,
|
|
110
|
+
"license": "ISC",
|
|
111
|
+
"dependencies": {
|
|
112
|
+
"reusify": "^1.0.4"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"node_modules/fill-range": {
|
|
116
|
+
"version": "7.1.1",
|
|
117
|
+
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
|
118
|
+
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
|
119
|
+
"dev": true,
|
|
120
|
+
"license": "MIT",
|
|
121
|
+
"dependencies": {
|
|
122
|
+
"to-regex-range": "^5.0.1"
|
|
123
|
+
},
|
|
124
|
+
"engines": {
|
|
125
|
+
"node": ">=8"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"node_modules/glob-parent": {
|
|
129
|
+
"version": "5.1.2",
|
|
130
|
+
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
|
131
|
+
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
|
132
|
+
"dev": true,
|
|
133
|
+
"license": "ISC",
|
|
134
|
+
"dependencies": {
|
|
135
|
+
"is-glob": "^4.0.1"
|
|
136
|
+
},
|
|
137
|
+
"engines": {
|
|
138
|
+
"node": ">= 6"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"node_modules/is-extglob": {
|
|
142
|
+
"version": "2.1.1",
|
|
143
|
+
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
|
144
|
+
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
|
145
|
+
"dev": true,
|
|
146
|
+
"license": "MIT",
|
|
147
|
+
"engines": {
|
|
148
|
+
"node": ">=0.10.0"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"node_modules/is-glob": {
|
|
152
|
+
"version": "4.0.3",
|
|
153
|
+
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
|
154
|
+
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
|
155
|
+
"dev": true,
|
|
156
|
+
"license": "MIT",
|
|
157
|
+
"dependencies": {
|
|
158
|
+
"is-extglob": "^2.1.1"
|
|
159
|
+
},
|
|
160
|
+
"engines": {
|
|
161
|
+
"node": ">=0.10.0"
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"node_modules/is-number": {
|
|
165
|
+
"version": "7.0.0",
|
|
166
|
+
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
|
167
|
+
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
|
168
|
+
"dev": true,
|
|
169
|
+
"license": "MIT",
|
|
170
|
+
"engines": {
|
|
171
|
+
"node": ">=0.12.0"
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"node_modules/lostconf": {
|
|
175
|
+
"version": "0.4.0",
|
|
176
|
+
"resolved": "https://registry.npmjs.org/lostconf/-/lostconf-0.4.0.tgz",
|
|
177
|
+
"integrity": "sha512-VNbUnirRU7uESqMHslIRHTcuyx/rr4OZK+L7EQXtYUe5PorBgqBYvPu+6xOr0CoUy4n34NNUKO6BBH6TgwwGTA==",
|
|
178
|
+
"dev": true,
|
|
179
|
+
"license": "MIT",
|
|
180
|
+
"dependencies": {
|
|
181
|
+
"chalk": "^5.3.0",
|
|
182
|
+
"commander": "^12.1.0",
|
|
183
|
+
"fast-glob": "^3.3.2",
|
|
184
|
+
"micromatch": "^4.0.8",
|
|
185
|
+
"smol-toml": "^1.3.0",
|
|
186
|
+
"yaml": "^2.5.0"
|
|
187
|
+
},
|
|
188
|
+
"bin": {
|
|
189
|
+
"lostconf": "dist/cli.js"
|
|
190
|
+
},
|
|
191
|
+
"engines": {
|
|
192
|
+
"node": ">=18.0.0"
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"node_modules/merge2": {
|
|
196
|
+
"version": "1.4.1",
|
|
197
|
+
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
|
198
|
+
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
|
199
|
+
"dev": true,
|
|
200
|
+
"license": "MIT",
|
|
201
|
+
"engines": {
|
|
202
|
+
"node": ">= 8"
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"node_modules/micromatch": {
|
|
206
|
+
"version": "4.0.8",
|
|
207
|
+
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
|
208
|
+
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
|
209
|
+
"dev": true,
|
|
210
|
+
"license": "MIT",
|
|
211
|
+
"dependencies": {
|
|
212
|
+
"braces": "^3.0.3",
|
|
213
|
+
"picomatch": "^2.3.1"
|
|
214
|
+
},
|
|
215
|
+
"engines": {
|
|
216
|
+
"node": ">=8.6"
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"node_modules/picomatch": {
|
|
220
|
+
"version": "2.3.2",
|
|
221
|
+
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
|
|
222
|
+
"integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
|
|
223
|
+
"dev": true,
|
|
224
|
+
"license": "MIT",
|
|
225
|
+
"engines": {
|
|
226
|
+
"node": ">=8.6"
|
|
227
|
+
},
|
|
228
|
+
"funding": {
|
|
229
|
+
"url": "https://github.com/sponsors/jonschlinkert"
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
"node_modules/queue-microtask": {
|
|
233
|
+
"version": "1.2.3",
|
|
234
|
+
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
|
235
|
+
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
|
236
|
+
"dev": true,
|
|
237
|
+
"funding": [
|
|
238
|
+
{
|
|
239
|
+
"type": "github",
|
|
240
|
+
"url": "https://github.com/sponsors/feross"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"type": "patreon",
|
|
244
|
+
"url": "https://www.patreon.com/feross"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"type": "consulting",
|
|
248
|
+
"url": "https://feross.org/support"
|
|
249
|
+
}
|
|
250
|
+
],
|
|
251
|
+
"license": "MIT"
|
|
252
|
+
},
|
|
253
|
+
"node_modules/reusify": {
|
|
254
|
+
"version": "1.1.0",
|
|
255
|
+
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
|
|
256
|
+
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
|
|
257
|
+
"dev": true,
|
|
258
|
+
"license": "MIT",
|
|
259
|
+
"engines": {
|
|
260
|
+
"iojs": ">=1.0.0",
|
|
261
|
+
"node": ">=0.10.0"
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
"node_modules/run-parallel": {
|
|
265
|
+
"version": "1.2.0",
|
|
266
|
+
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
|
267
|
+
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
|
268
|
+
"dev": true,
|
|
269
|
+
"funding": [
|
|
270
|
+
{
|
|
271
|
+
"type": "github",
|
|
272
|
+
"url": "https://github.com/sponsors/feross"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"type": "patreon",
|
|
276
|
+
"url": "https://www.patreon.com/feross"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"type": "consulting",
|
|
280
|
+
"url": "https://feross.org/support"
|
|
281
|
+
}
|
|
282
|
+
],
|
|
283
|
+
"license": "MIT",
|
|
284
|
+
"dependencies": {
|
|
285
|
+
"queue-microtask": "^1.2.2"
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"node_modules/smol-toml": {
|
|
289
|
+
"version": "1.6.1",
|
|
290
|
+
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz",
|
|
291
|
+
"integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==",
|
|
292
|
+
"dev": true,
|
|
293
|
+
"license": "BSD-3-Clause",
|
|
294
|
+
"engines": {
|
|
295
|
+
"node": ">= 18"
|
|
296
|
+
},
|
|
297
|
+
"funding": {
|
|
298
|
+
"url": "https://github.com/sponsors/cyyynthia"
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"node_modules/to-regex-range": {
|
|
302
|
+
"version": "5.0.1",
|
|
303
|
+
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
|
304
|
+
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
|
305
|
+
"dev": true,
|
|
306
|
+
"license": "MIT",
|
|
307
|
+
"dependencies": {
|
|
308
|
+
"is-number": "^7.0.0"
|
|
309
|
+
},
|
|
310
|
+
"engines": {
|
|
311
|
+
"node": ">=8.0"
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
"node_modules/yaml": {
|
|
315
|
+
"version": "2.8.4",
|
|
316
|
+
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz",
|
|
317
|
+
"integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==",
|
|
318
|
+
"dev": true,
|
|
319
|
+
"license": "ISC",
|
|
320
|
+
"bin": {
|
|
321
|
+
"yaml": "bin.mjs"
|
|
322
|
+
},
|
|
323
|
+
"engines": {
|
|
324
|
+
"node": ">= 14.6"
|
|
325
|
+
},
|
|
326
|
+
"funding": {
|
|
327
|
+
"url": "https://github.com/sponsors/eemeli"
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
data/package.json
ADDED
data/renovate.json
CHANGED
|
@@ -3,13 +3,18 @@
|
|
|
3
3
|
"extends": [
|
|
4
4
|
"config:recommended"
|
|
5
5
|
],
|
|
6
|
+
"minimumReleaseAge": "7 days",
|
|
7
|
+
"includePaths": [
|
|
8
|
+
".ruby-version",
|
|
9
|
+
"Gemfile",
|
|
10
|
+
"llm-docs-builder.gemspec",
|
|
11
|
+
".github/workflows/**",
|
|
12
|
+
"Dockerfile*",
|
|
13
|
+
"package.json"
|
|
14
|
+
],
|
|
6
15
|
"ignorePaths": [
|
|
7
16
|
"spec/integrations"
|
|
8
17
|
],
|
|
9
|
-
"github-actions": {
|
|
10
|
-
"enabled": true,
|
|
11
|
-
"pinDigests": true
|
|
12
|
-
},
|
|
13
18
|
"packageRules": [
|
|
14
19
|
{
|
|
15
20
|
"matchCategories": [
|
|
@@ -21,13 +26,21 @@
|
|
|
21
26
|
"matchManagers": [
|
|
22
27
|
"github-actions"
|
|
23
28
|
],
|
|
24
|
-
"
|
|
29
|
+
"pinDigests": true
|
|
25
30
|
},
|
|
26
31
|
{
|
|
27
|
-
"
|
|
28
|
-
|
|
32
|
+
"description": "Group ruby/setup-ruby action with ruby version updates",
|
|
33
|
+
"matchPackageNames": [
|
|
34
|
+
"ruby/setup-ruby",
|
|
35
|
+
"ruby"
|
|
29
36
|
],
|
|
30
|
-
"
|
|
37
|
+
"groupName": "ruby setup"
|
|
31
38
|
}
|
|
32
|
-
]
|
|
39
|
+
],
|
|
40
|
+
"labels": [
|
|
41
|
+
"dependencies"
|
|
42
|
+
],
|
|
43
|
+
"lockFileMaintenance": {
|
|
44
|
+
"enabled": true
|
|
45
|
+
}
|
|
33
46
|
}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: llm-docs-builder
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.13.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Maciej Mensfeld
|
|
@@ -41,16 +41,16 @@ dependencies:
|
|
|
41
41
|
name: bundler
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
|
-
- - "
|
|
44
|
+
- - ">="
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '
|
|
46
|
+
version: '0'
|
|
47
47
|
type: :development
|
|
48
48
|
prerelease: false
|
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
|
-
- - "
|
|
51
|
+
- - ">="
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '
|
|
53
|
+
version: '0'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
55
|
name: rake
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -130,6 +130,7 @@ files:
|
|
|
130
130
|
- ".rspec"
|
|
131
131
|
- ".rubocop.yml"
|
|
132
132
|
- ".ruby-version"
|
|
133
|
+
- ".yard-lint.yml"
|
|
133
134
|
- CHANGELOG.md
|
|
134
135
|
- Dockerfile
|
|
135
136
|
- Gemfile
|
|
@@ -172,6 +173,8 @@ files:
|
|
|
172
173
|
- misc/diff.png
|
|
173
174
|
- misc/logo.png
|
|
174
175
|
- misc/logo_wide.png
|
|
176
|
+
- package-lock.json
|
|
177
|
+
- package.json
|
|
175
178
|
- renovate.json
|
|
176
179
|
homepage: https://github.com/mensfeld/llm-docs-builder
|
|
177
180
|
licenses:
|
|
@@ -190,14 +193,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
190
193
|
requirements:
|
|
191
194
|
- - ">="
|
|
192
195
|
- !ruby/object:Gem::Version
|
|
193
|
-
version: '3.
|
|
196
|
+
version: '3.3'
|
|
194
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
198
|
requirements:
|
|
196
199
|
- - ">="
|
|
197
200
|
- !ruby/object:Gem::Version
|
|
198
201
|
version: '0'
|
|
199
202
|
requirements: []
|
|
200
|
-
rubygems_version:
|
|
203
|
+
rubygems_version: 4.0.6
|
|
201
204
|
specification_version: 4
|
|
202
205
|
summary: Build and optimize documentation for LLMs - generate llms.txt, transform
|
|
203
206
|
markdown, and more
|