diff --git a/src/Microdown-BookTester-Tests/MiCheckerEngineTest.class.st b/src/Microdown-BookTester-Tests/MiCheckerEngineTest.class.st index 46c6117a..776658e7 100644 --- a/src/Microdown-BookTester-Tests/MiCheckerEngineTest.class.st +++ b/src/Microdown-BookTester-Tests/MiCheckerEngineTest.class.st @@ -29,24 +29,45 @@ MiCheckerEngineTest >> setUp [ ] { #category : 'running' } -MiCheckerEngineTest >> testEngineDetectsHeaderMistake [ - | config results | +MiCheckerEngineTest >> testCheckersFromConfiguration [ + | config checkers | config := OrderedDictionary new. - config at: 'HeaderCapitalization' put: 'uppercase'. - results := engine runOn: file withConfiguration: config. - self deny: results isEmpty. - self assert: results size equals: 3. + config at: 'EnglishTypography' put: nil. + config at: 'HeaderCapitalization' put: 'lowercase'. + checkers := engine checkersFromConfiguration: config. + self assert: checkers size equals: 2. + self assert: (checkers anySatisfy: [:c | c isKindOf: MicEnglishTypographyChecker]). + self assert: (checkers anySatisfy: [:c | c isKindOf: MicRuleHeaderChecker]). ] { #category : 'running' } -MiCheckerEngineTest >> testEngineDetectsVocabularyMistake [ +MiCheckerEngineTest >> testCheckersFromConfigurationAllCheckers [ + | config checkers | + config := OrderedDictionary new. + config at: 'EnglishTypography' put: nil. + config at: 'FrenchTypography' put: nil. + config at: 'HeaderCapitalization' put: 'lowercase'. + config at: 'Vocabulary' put: { #('colour' 'color')}. + config at: 'CodeIndentation' put: nil. + config at: 'MethodReferenceUsingHash' put: nil. + config at: 'MethodStructure' put: nil. + config at: 'NotTheFigureX' put: nil. + config at: 'CodeLastPeriod' put: 'true'. + config at: 'ParagraphLabelEndPeriod' put: 'true'. + config at: 'CodeLastPeriodInCaption' put: nil. + config at: 'LastPeriodInCode' put: nil. + checkers := engine checkersFromConfiguration: config. + self assert: checkers size equals: 12. +] + +{ #category : 'running' } +MiCheckerEngineTest >> testEngineDetectsHeaderMistake [ | config results | config := OrderedDictionary new. - config at: 'Vocabulary' put: { #('colour' . 'color') }. + config at: 'HeaderCapitalization' put: 'uppercase'. results := engine runOn: file withConfiguration: config. self deny: results isEmpty. - self assert: results size equals: 1. - self assert: (results first explanation includesSubstring: 'colour'). + self assert: results size equals: 3. ] { #category : 'running' } diff --git a/src/Microdown-Rules/MicAnchoredSectionTableFigureChecker.class.st b/src/Microdown-Rules/MicAnchoredSectionTableFigureChecker.class.st index 6c914981..1994eec0 100644 --- a/src/Microdown-Rules/MicAnchoredSectionTableFigureChecker.class.st +++ b/src/Microdown-Rules/MicAnchoredSectionTableFigureChecker.class.st @@ -25,6 +25,11 @@ MicAnchoredSectionTableFigureChecker class >> checkerName [ ^ 'NotTheFigureX' ] +{ #category : 'configuration' } +MicAnchoredSectionTableFigureChecker >> configureFrom: aConfiguration [ + ^ self +] + { #category : 'visiting' } MicAnchoredSectionTableFigureChecker >> visitParagraph: aMicParagraph [ | children | diff --git a/src/Microdown-Rules/MicCodeIndentationChecker.class.st b/src/Microdown-Rules/MicCodeIndentationChecker.class.st index 15b09b7d..b5f0903f 100644 --- a/src/Microdown-Rules/MicCodeIndentationChecker.class.st +++ b/src/Microdown-Rules/MicCodeIndentationChecker.class.st @@ -16,6 +16,11 @@ MicCodeIndentationChecker class >> checkerName [ ^ 'CodeIndentation' ] +{ #category : 'configuration' } +MicCodeIndentationChecker >> configureFrom: aConfiguration [ + ^ self +] + { #category : 'visiting' } MicCodeIndentationChecker >> visitCode: aMicCode [ | lines | diff --git a/src/Microdown-Rules/MicCodeIndentationCheckerTest.class.st b/src/Microdown-Rules/MicCodeIndentationCheckerTest.class.st index 668f38fc..073b068d 100644 --- a/src/Microdown-Rules/MicCodeIndentationCheckerTest.class.st +++ b/src/Microdown-Rules/MicCodeIndentationCheckerTest.class.st @@ -39,6 +39,18 @@ MicCodeIndentationCheckerTest >> setUp [ checker := MicCodeIndentationChecker new. ] +{ #category : 'tests' } +MicCodeIndentationCheckerTest >> testConfigureFromAnyValue [ + checker configureFrom: 'anything'. + self assert: checker isOkay. +] + +{ #category : 'tests' } +MicCodeIndentationCheckerTest >> testConfigureFromNil [ + checker configureFrom: nil. + self assert: checker isOkay. +] + { #category : 'tests' } MicCodeIndentationCheckerTest >> testIndentationCorrect [ checker checkProject: fileSystem / 'indentationCorrect.md'. diff --git a/src/Microdown-Rules/MicEnglishTypographyCheckerTest.class.st b/src/Microdown-Rules/MicEnglishTypographyCheckerTest.class.st index 3eae406c..45cbd4dd 100644 --- a/src/Microdown-Rules/MicEnglishTypographyCheckerTest.class.st +++ b/src/Microdown-Rules/MicEnglishTypographyCheckerTest.class.st @@ -90,6 +90,20 @@ MicEnglishTypographyCheckerTest >> testConfigureFrom [ object' 'metaobject')) ] +{ #category : 'tests' } +MicEnglishTypographyCheckerTest >> testConfigureFromAnyValue [ + + checker configureFrom: 'anything'. + self assert: checker isOkay. +] + +{ #category : 'tests' } +MicEnglishTypographyCheckerTest >> testConfigureFromNil [ + + checker configureFrom: nil. + self assert: checker isOkay. +] + { #category : 'tests' } MicEnglishTypographyCheckerTest >> testCorrectFile [ diff --git a/src/Microdown-Rules/MicFrenchTypoChecker.class.st b/src/Microdown-Rules/MicFrenchTypoChecker.class.st index 56d07fe3..64e2d875 100644 --- a/src/Microdown-Rules/MicFrenchTypoChecker.class.st +++ b/src/Microdown-Rules/MicFrenchTypoChecker.class.st @@ -51,6 +51,11 @@ MicFrenchTypoChecker >> checkString: aString for: anElement [ ] ] +{ #category : 'configuration' } +MicFrenchTypoChecker >> configureFrom: aConfiguration [ + ^ self +] + { #category : 'adding' } MicFrenchTypoChecker >> visitCode: aMicCode [ aMicCode caption ifNil: [ ^ self ]. diff --git a/src/Microdown-Rules/MicFrenchTypoCheckerTest.class.st b/src/Microdown-Rules/MicFrenchTypoCheckerTest.class.st index 975c7742..12faed37 100644 --- a/src/Microdown-Rules/MicFrenchTypoCheckerTest.class.st +++ b/src/Microdown-Rules/MicFrenchTypoCheckerTest.class.st @@ -54,6 +54,18 @@ MicFrenchTypoCheckerTest >> setUp [ checker := MicFrenchTypoChecker new. ] +{ #category : 'tests' } +MicFrenchTypoCheckerTest >> testConfigureFromAnyValue [ + checker configureFrom: 'anything'. + self assert: checker isOkay. +] + +{ #category : 'tests' } +MicFrenchTypoCheckerTest >> testConfigureFromNil [ + checker configureFrom: nil. + self assert: checker isOkay. +] + { #category : 'tests' } MicFrenchTypoCheckerTest >> testCorrect [ checker checkProject: fileSystem / 'correct.md'. diff --git a/src/Microdown-Rules/MicHeaderCapitalizationCheckerTest.class.st b/src/Microdown-Rules/MicHeaderCapitalizationCheckerTest.class.st index 04ad4d56..5e461c07 100644 --- a/src/Microdown-Rules/MicHeaderCapitalizationCheckerTest.class.st +++ b/src/Microdown-Rules/MicHeaderCapitalizationCheckerTest.class.st @@ -164,6 +164,27 @@ MicHeaderCapitalizationCheckerTest >> testCheckIdentifyHeaderNotLowercased [ ] +{ #category : 'tests - headers should be lowercased' } +MicHeaderCapitalizationCheckerTest >> testConfigureFromLowercase [ + + checker configureFrom: 'lowercase'. + self assert: (checker strategy isKindOf: MicRuleLowercaseHeaderStrategy). +] + +{ #category : 'tests - headers should be lowercased' } +MicHeaderCapitalizationCheckerTest >> testConfigureFromNil [ + + checker configureFrom: nil. + self assert: (checker strategy isKindOf: MicRuleLowercaseHeaderStrategy). +] + +{ #category : 'tests - headers should be lowercased' } +MicHeaderCapitalizationCheckerTest >> testConfigureFromUppercase [ + + checker configureFrom: 'uppercase'. + self assert: (checker strategy isKindOf: MicRuleUppercaseHeaderStrategy). +] + { #category : 'tests - headers should be lowercased' } MicHeaderCapitalizationCheckerTest >> testWritingBooksCorrect [ diff --git a/src/Microdown-Rules/MicLastPeriodChecker.class.st b/src/Microdown-Rules/MicLastPeriodChecker.class.st index 40809fea..194ff29a 100644 --- a/src/Microdown-Rules/MicLastPeriodChecker.class.st +++ b/src/Microdown-Rules/MicLastPeriodChecker.class.st @@ -36,10 +36,16 @@ MicLastPeriodChecker >> checkMissingPeriodIn: aMicCodeBlock [ codeShouldEndWithPeriod: codeShouldEndWithPeriod) ] ] -{ #category : 'visiting' } -MicLastPeriodChecker >> configureFrom: aBoolean [ +{ #category : 'accessing' } +MicLastPeriodChecker >> codeShouldEndWithPeriod [ + + ^ codeShouldEndWithPeriod +] - aBoolean = 'true' +{ #category : 'visiting' } +MicLastPeriodChecker >> configureFrom: aConfiguration [ + aConfiguration isNil ifTrue: [ ^ self ]. + aConfiguration = 'true' ifTrue: [ codeShouldEndWithPeriod := true ] ifFalse: [ codeShouldEndWithPeriod := false ] ] diff --git a/src/Microdown-Rules/MicLastPeriodInCaptionCheckerTest.class.st b/src/Microdown-Rules/MicLastPeriodInCaptionCheckerTest.class.st index b6e9ba1c..7d3717a5 100644 --- a/src/Microdown-Rules/MicLastPeriodInCaptionCheckerTest.class.st +++ b/src/Microdown-Rules/MicLastPeriodInCaptionCheckerTest.class.st @@ -119,6 +119,24 @@ MicLastPeriodInCaptionCheckerTest >> testCodeCheckerIdentifyCorrectlyMissingExtr 'Text: "This is the famous missing period" in file/codeCaptionMissingPeriod.md contains a mistake: Captions should be terminated with a period (.).' ] +{ #category : 'tests' } +MicLastPeriodInCaptionCheckerTest >> testConfigureFromFalse [ + checker configureFrom: 'false'. + self assert: checker codeShouldEndWithPeriod equals: false. +] + +{ #category : 'tests' } +MicLastPeriodInCaptionCheckerTest >> testConfigureFromNil [ + checker configureFrom: nil. + self assert: checker codeShouldEndWithPeriod equals: true. +] + +{ #category : 'tests' } +MicLastPeriodInCaptionCheckerTest >> testConfigureFromTrue [ + checker configureFrom: 'true'. + self assert: checker codeShouldEndWithPeriod equals: true. +] + { #category : 'tests - missing period' } MicLastPeriodInCaptionCheckerTest >> testFigureCheckerChecksCorrectlyMissingExtraPeriod [ diff --git a/src/Microdown-Rules/MicMethodReferenceChecker.class.st b/src/Microdown-Rules/MicMethodReferenceChecker.class.st index c503353a..dd0b4237 100644 --- a/src/Microdown-Rules/MicMethodReferenceChecker.class.st +++ b/src/Microdown-Rules/MicMethodReferenceChecker.class.st @@ -36,6 +36,11 @@ MicMethodReferenceChecker class >> checkerName [ ^ 'MethodReferenceUsingHash' ] +{ #category : 'configuration' } +MicMethodReferenceChecker >> configureFrom: aConfiguration [ + ^ self +] + { #category : 'visiting - inline elements' } MicMethodReferenceChecker >> visitText: aMicText [ | text withHash withhoutHash | diff --git a/src/Microdown-Rules/MicMethodReferenceCheckerTest.class.st b/src/Microdown-Rules/MicMethodReferenceCheckerTest.class.st index 73dbc054..37e65827 100644 --- a/src/Microdown-Rules/MicMethodReferenceCheckerTest.class.st +++ b/src/Microdown-Rules/MicMethodReferenceCheckerTest.class.st @@ -36,6 +36,18 @@ MicMethodReferenceCheckerTest >> setUp [ checker := MicMethodReferenceChecker new. ] +{ #category : 'tests' } +MicMethodReferenceCheckerTest >> testConfigureFromAnyValue [ + checker configureFrom: 'anything'. + self assert: checker isOkay. +] + +{ #category : 'tests' } +MicMethodReferenceCheckerTest >> testConfigureFromNil [ + checker configureFrom: nil. + self assert: checker isOkay. +] + { #category : 'tests' } MicMethodReferenceCheckerTest >> testMixedReferenceDetected [ checker checkProject: fileSystem / 'mixedReference.md'. diff --git a/src/Microdown-Rules/MicMethodStructureChecker.class.st b/src/Microdown-Rules/MicMethodStructureChecker.class.st index 980c4508..b34c4372 100644 --- a/src/Microdown-Rules/MicMethodStructureChecker.class.st +++ b/src/Microdown-Rules/MicMethodStructureChecker.class.st @@ -44,6 +44,11 @@ MicMethodStructureChecker class >> checkerName [ ^ 'MethodStructure' ] +{ #category : 'configuration' } +MicMethodStructureChecker >> configureFrom: aConfiguration [ + ^ self +] + { #category : 'visiting' } MicMethodStructureChecker >> visitCode: aMicCode [ | lines firstLine secondLine | diff --git a/src/Microdown-Rules/MicMethodStructureCheckerTest.class.st b/src/Microdown-Rules/MicMethodStructureCheckerTest.class.st index f95f0376..86e09fa0 100644 --- a/src/Microdown-Rules/MicMethodStructureCheckerTest.class.st +++ b/src/Microdown-Rules/MicMethodStructureCheckerTest.class.st @@ -56,6 +56,18 @@ MicMethodStructureCheckerTest >> setUp [ checker := MicMethodStructureChecker new. ] +{ #category : 'tests' } +MicMethodStructureCheckerTest >> testConfigureFromAnyValue [ + checker configureFrom: 'anything'. + self assert: checker isOkay. +] + +{ #category : 'tests' } +MicMethodStructureCheckerTest >> testConfigureFromNil [ + checker configureFrom: nil. + self assert: checker isOkay. +] + { #category : 'tests' } MicMethodStructureCheckerTest >> testMethodCorrect [ checker checkProject: fileSystem / 'methodCorrect.md'. diff --git a/src/Microdown-Rules/MicParagraphLabelChecker.class.st b/src/Microdown-Rules/MicParagraphLabelChecker.class.st index c863d8f8..39792e9c 100644 --- a/src/Microdown-Rules/MicParagraphLabelChecker.class.st +++ b/src/Microdown-Rules/MicParagraphLabelChecker.class.st @@ -60,7 +60,10 @@ MicParagraphLabelChecker >> checkMissingPeriodIn: aMicHeader [ { #category : 'visiting' } MicParagraphLabelChecker >> configureFrom: aConfiguration [ - + aConfiguration isNil ifTrue: [ ^ self ]. + aConfiguration = 'true' + ifTrue: [ labelShouldEndWithPeriod := true ] + ifFalse: [ labelShouldEndWithPeriod := false ] ] { #category : 'visiting' } @@ -83,6 +86,12 @@ MicParagraphLabelChecker >> initialize [ levelForParagraph := 4. ] +{ #category : 'accessing' } +MicParagraphLabelChecker >> labelShouldEndWithPeriod [ + + ^ labelShouldEndWithPeriod +] + { #category : 'accessing' } MicParagraphLabelChecker >> levelForParagraph [ diff --git a/src/Microdown-Rules/MicParagraphLabelCheckerTest.class.st b/src/Microdown-Rules/MicParagraphLabelCheckerTest.class.st index 07394b38..d69f56e9 100644 --- a/src/Microdown-Rules/MicParagraphLabelCheckerTest.class.st +++ b/src/Microdown-Rules/MicParagraphLabelCheckerTest.class.st @@ -83,6 +83,24 @@ MicParagraphLabelCheckerTest >> setUp [ checker := MicParagraphLabelChecker new. ] +{ #category : 'tests' } +MicParagraphLabelCheckerTest >> testConfigureFromFalse [ + checker configureFrom: 'false'. + self assert: checker labelShouldEndWithPeriod equals: false. +] + +{ #category : 'tests' } +MicParagraphLabelCheckerTest >> testConfigureFromNil [ + checker configureFrom: nil. + self assert: checker labelShouldEndWithPeriod equals: true. +] + +{ #category : 'tests' } +MicParagraphLabelCheckerTest >> testConfigureFromTrue [ + checker configureFrom: 'true'. + self assert: checker labelShouldEndWithPeriod equals: true. +] + { #category : 'tests' } MicParagraphLabelCheckerTest >> testLevel1NotChecked [ checker checkProject: fileSystem / 'level1.md'. diff --git a/src/Microdown-Rules/MicReferencesCheckerTest.class.st b/src/Microdown-Rules/MicReferencesCheckerTest.class.st index 50ed734e..62fe3262 100644 --- a/src/Microdown-Rules/MicReferencesCheckerTest.class.st +++ b/src/Microdown-Rules/MicReferencesCheckerTest.class.st @@ -10,6 +10,11 @@ Class { #tag : 'References' } +{ #category : 'public - name' } +MicReferencesCheckerTest class >> checkerName [ + ^ 'ReferenceChecks' +] + { #category : 'running' } MicReferencesCheckerTest >> generateFilesystemExample [ | file | @@ -64,6 +69,18 @@ MicReferencesCheckerTest >> setUp [ checker := MicAnchoredSectionTableFigureChecker new. ] +{ #category : 'running' } +MicReferencesCheckerTest >> testConfigureFromAnyValue [ + checker configureFrom: 'anything'. + self assert: checker isOkay. +] + +{ #category : 'running' } +MicReferencesCheckerTest >> testConfigureFromNil [ + checker configureFrom: nil. + self assert: checker isOkay. +] + { #category : 'running' } MicReferencesCheckerTest >> testFigureCorrect [ checker checkProject: fileSystem / 'figureCorrect.md'. diff --git a/src/Microdown-Rules/MicRuleHeaderChecker.class.st b/src/Microdown-Rules/MicRuleHeaderChecker.class.st index 1e589dba..ee4a4470 100644 --- a/src/Microdown-Rules/MicRuleHeaderChecker.class.st +++ b/src/Microdown-Rules/MicRuleHeaderChecker.class.st @@ -74,6 +74,12 @@ MicRuleHeaderChecker >> shouldCapitalizedWord: aString [ ^ (uncapitalizableText includes: normalized) not ] +{ #category : 'accessing' } +MicRuleHeaderChecker >> strategy [ + + ^ strategy +] + { #category : 'initialization' } MicRuleHeaderChecker >> verifyLowercase [ diff --git a/src/Microdown-Rules/MicVocabularyCheckerTest.class.st b/src/Microdown-Rules/MicVocabularyCheckerTest.class.st index ce7ec138..a3280da2 100644 --- a/src/Microdown-Rules/MicVocabularyCheckerTest.class.st +++ b/src/Microdown-Rules/MicVocabularyCheckerTest.class.st @@ -279,3 +279,30 @@ MicVocabularyCheckerTest >> testConfigureFrom [ '*meta object*'->'metaobject' } ] + +{ #category : 'tests' } +MicVocabularyCheckerTest >> testConfigureFromWithAllPairs [ + | localChecker | + localChecker := MicVocabularyChecker new. + localChecker configureFrom: #( + #('sub-presenter' 'subpresenter') + ('sub presenter' 'subpresenter') + ('meta object' 'metaobject') + ('section' 'Section') + ('figure' 'Figure') + ('back-end' 'backend') + ('back end' 'backend') + ('Pharo Image' 'Pharo image') + ('colour' 'color') + ('colours' 'colors') + ('behaviour' 'behavior') + ('centre' 'center') + ('visualise' 'visualize') + "Expressions" + ('allow to' 'allow one to') + ('allowed to' 'allowed one to') + ('allows to' 'allows one to')). + self assert: localChecker pairs size equals: 16. + localChecker checkProject: fileSystem / 'mistakeColour.md'. + self deny: localChecker isOkay. +]