From 75ca58a7bfa5f4034c58ee4bc72985812385836c Mon Sep 17 00:00:00 2001 From: "antoine.usal" Date: Wed, 20 May 2026 16:08:38 +0200 Subject: [PATCH] Optimi of the checker MicAnchoredSectionTableFigure --- ...AnchoredSectionTableFigureChecker.class.st | 56 ++++++------------- ...oredSectionTableFigureCheckerTest.class.st | 3 +- ...ferenceToFigSectTableAnchorResult.class.st | 7 ++- src/Microdown/MicAbstractBlock.class.st | 5 ++ .../MicAnchorReferenceBlock.class.st | 5 ++ 5 files changed, 36 insertions(+), 40 deletions(-) diff --git a/src/Microdown-BookTester/MicAnchoredSectionTableFigureChecker.class.st b/src/Microdown-BookTester/MicAnchoredSectionTableFigureChecker.class.st index 2c3a847fe..cada4e857 100644 --- a/src/Microdown-BookTester/MicAnchoredSectionTableFigureChecker.class.st +++ b/src/Microdown-BookTester/MicAnchoredSectionTableFigureChecker.class.st @@ -51,22 +51,6 @@ MicAnchoredSectionTableFigureChecker >> addErrorDetail: detailString on: aTextBl yourself) ] -{ #category : 'checking' } -MicAnchoredSectionTableFigureChecker >> analyzeWords: words inTextBlock: aTextBlock inParagraph: aParagraph anchorBlock: anchorBlock [ - - anchoredElements do: [ :ref | - self checkNamingFor: words - reference: ref - anchorBlock: anchorBlock - inTextBlock: aTextBlock - inParagraph: aParagraph. - self checkMissingAnchorsFor: words - reference: ref - anchorBlock: anchorBlock - inTextBlock: aTextBlock - inParagraph: aParagraph ] -] - { #category : 'accessing' } MicAnchoredSectionTableFigureChecker >> anchoredElements [ @@ -75,7 +59,6 @@ MicAnchoredSectionTableFigureChecker >> anchoredElements [ { #category : 'checking' } MicAnchoredSectionTableFigureChecker >> checkMissingAnchorsFor: words reference: ref anchorBlock: anchorBlock inTextBlock: aTextBlock inParagraph: aParagraph [ - | lastWord | lastWord := words last. words do: [ :word | @@ -85,30 +68,25 @@ MicAnchoredSectionTableFigureChecker >> checkMissingAnchorsFor: words reference: { #category : 'checking' } MicAnchoredSectionTableFigureChecker >> checkNamingFor: words reference: ref anchorBlock: anchorBlock inTextBlock: aTextBlock inParagraph: aParagraph [ - | lastWord anchorString | anchorBlock ifNil: [ ^ self ]. lastWord := words last. lastWord asLowercase = ref ifFalse: [ ^ self ]. - (words size > 1 and: [ - (words at: words size - 1) asLowercase = 'the' ]) + (words size > 1 and: [ (words at: words size - 1) asLowercase = 'the' ]) ifTrue: [ - anchorString := ' *@' , (anchorBlock bodyString ifNil: [ '' ]) - , '@*'. + anchorString := ' *@' , (anchorBlock bodyString ifNil: [ '' ]) , '@*'. + self + addErrorDetail: (words at: words size - 1) , ' ' , lastWord , anchorString + on: aTextBlock + inParagraph: aParagraph ] + ifFalse: [ + lastWord = ref ifTrue: [ + anchorString := ' *@' , (anchorBlock bodyString ifNil: [ '' ]) , '@*'. self - addErrorDetail: - (words at: words size - 1) , ' ' , lastWord , anchorString + addErrorDetail: lastWord , anchorString on: aTextBlock - inParagraph: aParagraph ] - ifFalse: [ - lastWord = ref ifTrue: [ - anchorString := ' *@' , (anchorBlock bodyString ifNil: [ '' ]) - , '@*'. - self - addErrorDetail: lastWord , anchorString - on: aTextBlock - inParagraph: aParagraph ] ] + inParagraph: aParagraph ] ] ] { #category : 'configuration' } @@ -131,14 +109,16 @@ MicAnchoredSectionTableFigureChecker >> initialize [ { #category : 'checking' } MicAnchoredSectionTableFigureChecker >> processTextBlock: aTextBlock atIndex: index withChildren: children inParagraph: aParagraph [ - | words anchorBlock | - words := aTextBlock bodyString substrings. - words isEmpty ifTrue: [ ^ self ]. - anchorBlock := (index < children size and: [ (children at: index + 1) isKindOf: MicAnchorReferenceBlock ]) + | anchorBlock | + aTextBlock bodyString substrings isEmpty ifTrue: [ ^ self ]. + + anchorBlock := (index < children size and: [ (children at: index + 1) isAnchorReferenceBlock ]) ifTrue: [ children at: index + 1 ] ifFalse: [ nil ]. - self analyzeWords: words inTextBlock: aTextBlock inParagraph: aParagraph anchorBlock: anchorBlock + anchoredElements do: [ :ref | + self checkNamingFor: aTextBlock bodyString substrings reference: ref anchorBlock: anchorBlock inTextBlock: aTextBlock inParagraph: aParagraph. + self checkMissingAnchorsFor: aTextBlock bodyString substrings reference: ref anchorBlock: anchorBlock inTextBlock: aTextBlock inParagraph: aParagraph ] ] { #category : 'visiting' } diff --git a/src/Microdown-BookTester/MicAnchoredSectionTableFigureCheckerTest.class.st b/src/Microdown-BookTester/MicAnchoredSectionTableFigureCheckerTest.class.st index 0b41dbb70..31c4c27c9 100644 --- a/src/Microdown-BookTester/MicAnchoredSectionTableFigureCheckerTest.class.st +++ b/src/Microdown-BookTester/MicAnchoredSectionTableFigureCheckerTest.class.st @@ -3,7 +3,8 @@ Class { #superclass : 'TestCase', #instVars : [ 'fileSystem', - 'checker' + 'checker', + 'inFile' ], #category : 'Microdown-BookTester-Checker-BookTester', #package : 'Microdown-BookTester', diff --git a/src/Microdown-BookTester/MicWrongReferenceToFigSectTableAnchorResult.class.st b/src/Microdown-BookTester/MicWrongReferenceToFigSectTableAnchorResult.class.st index 0d04d6b5d..631f74871 100644 --- a/src/Microdown-BookTester/MicWrongReferenceToFigSectTableAnchorResult.class.st +++ b/src/Microdown-BookTester/MicWrongReferenceToFigSectTableAnchorResult.class.st @@ -22,7 +22,7 @@ MicWrongReferenceToFigSectTableAnchorResult >> detail: anObject [ ] { #category : 'accessing' } -MicWrongReferenceToFigSectTableAnchorResult >> explanation [ +MicWrongReferenceToFigSectTableAnchorResult >> explanation [ | words expected | words := detail substrings. @@ -37,3 +37,8 @@ MicWrongReferenceToFigSectTableAnchorResult >> explanation [ , '] should be capitalized as [' , expected , '].' ] + +{ #category : 'accessing' } +MicWrongReferenceToFigSectTableAnchorResult >> micElement: anObject [ + micElement := anObject +] diff --git a/src/Microdown/MicAbstractBlock.class.st b/src/Microdown/MicAbstractBlock.class.st index 752217379..bf13114c2 100644 --- a/src/Microdown/MicAbstractBlock.class.st +++ b/src/Microdown/MicAbstractBlock.class.st @@ -112,6 +112,11 @@ MicAbstractBlock >> initialize [ children := OrderedCollection new. ] +{ #category : 'initialization' } +MicAbstractBlock >> isAnchorReferenceBlock [ + ^ false +] + { #category : 'testing' } MicAbstractBlock >> isHeader [ ^ false diff --git a/src/Microdown/MicAnchorReferenceBlock.class.st b/src/Microdown/MicAnchorReferenceBlock.class.st index 4e774517d..ec0b8279b 100644 --- a/src/Microdown/MicAnchorReferenceBlock.class.st +++ b/src/Microdown/MicAnchorReferenceBlock.class.st @@ -40,6 +40,11 @@ MicAnchorReferenceBlock >> anchorLabel [ ^ bodyString ] +{ #category : 'accessing' } +MicAnchorReferenceBlock >> isAnchorReferenceBlock [ + ^ true +] + { #category : 'accessing' } MicAnchorReferenceBlock >> reference [