Skip to content

Commit 09d8582

Browse files
committed
Merge pull request #24 from wilkinsona
* pr/24: Consider block attributes for chomp package replacement Closes gh-24
2 parents 0145787 + 96db3e3 commit 09d8582

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

lib/code-chomping-extension.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,16 @@ function createExtensionGroup () {
2626
this.treeProcessor(function () {
2727
this.process((doc) => {
2828
const chompDefault = doc.getAttribute('chomp', 'default')
29-
const package_ = doc.getAttribute('chomp_package_replacement') ?? doc.getAttribute('chomp-package-replacement')
29+
const packageReplacementDefault = getPackageReplacement(doc)
3030
const blocks = doc.findBy(
3131
{ context: 'listing' },
3232
(candidate) => candidate.getStyle() === 'source' && JAVA_LIKE.includes(candidate.getAttribute('language'))
3333
)
3434
blocks.forEach((block) => {
3535
const chomp = block.getAttribute('chomp', chompDefault)
36+
const packageReplacement = getPackageReplacement(block) ?? packageReplacementDefault
3637
const ops = (CHOMP_MODES[chomp] || [chomp]).reduce((accum, mode) => (accum[mode] = true) && accum, {})
37-
if (ops.packages && package_ != null) ops.packages = package_
38+
if (ops.packages && packageReplacement != null) ops.packages = packageReplacement
3839
let skipRest, match
3940
block.lines = block.getSourceLines().reduce((accum, line) => {
4041
if (skipRest) return accum
@@ -72,4 +73,8 @@ function createExtensionGroup () {
7273
}
7374
}
7475

76+
function getPackageReplacement (element) {
77+
return element.getAttribute('chomp_package_replacement') ?? element.getAttribute('chomp-package-replacement')
78+
}
79+
7580
module.exports = { register, createExtensionGroup }

test/code-chomping-extension-test.js

+23
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,29 @@ describe('code-chomping-extension', () => {
261261
expect(actual).to.equal(expected)
262262
})
263263

264+
it('should replace package declaration when configured on the block', () => {
265+
const code = heredoc`
266+
package org.example;
267+
268+
public class Example {}
269+
`
270+
271+
const input = heredoc`
272+
:chomp: packages
273+
:chomp_package_replacement: org.acme
274+
275+
[chomp_package_replacement=com.acme]
276+
[,java]
277+
----
278+
${code}
279+
----
280+
`
281+
282+
const expected = code.replace('package org.example', 'package com.acme')
283+
const actual = run(input).getBlocks()[0].getSource()
284+
expect(actual).to.equal(expected)
285+
})
286+
264287
it('should remove remaining lines after @chomp:file', () => {
265288
const input = heredoc`
266289
[,java]

0 commit comments

Comments
 (0)