SystemOrganization addCategory: #'TextLint-Console'! Object subclass: #TLConsole instanceVariableNames: 'filename content checker outputStream' classVariableNames: '' poolDictionaries: '' category: 'TextLint-Console'! !TLConsole class methodsFor: 'action' stamp: 'DamienCassou 9/2/2011 17:13'! checkFileNamed: aString andOutputToFileNamed: anotherString withinDirectory: lastString | contents output | MultiByteFileStream readOnlyFileNamed: lastString, '/', aString do: [:in | contents := in contents]. output := self new setFilename: aString content: contents; check. FileStream forceNewFileNamed: lastString, '/', anotherString do: [:out | out nextPutAll: output]. Smalltalk snapshot: false andQuit: true.! ! !TLConsole methodsFor: 'action' stamp: 'DamienCassou 9/2/2011 18:07'! check checker parse: content. outputStream := WriteStream on: (String new: 1000). checker results do: [:failure | self processFailure: failure. outputStream lf]. ^ outputStream contents! ! !TLConsole methodsFor: 'private' stamp: 'DamienCassou 9/2/2011 19:28'! printContext: anElement "Print error message in gnu-style (http://www.gnu.org/prep/standards/html_node/Errors.html)" outputStream nextPutAll: filename; nextPut: $:. (anElement children isEmpty) ifTrue: [outputStream print: anElement token line; nextPut: $.; print: anElement token column] ifFalse: ["(anElement children last token line ~= anElement children first token line) ifTrue: ["outputStream print: anElement children first token line; nextPut: $.; print: anElement children first token column; nextPut: $-; print: anElement children last token line; nextPut: $.; print: anElement children last token column + anElement children last token size - 1"] ifFalse: [outputStream print: anElement children first token line; nextPut: $.; print: anElement children first token column; nextPut: $-; print: anElement children last token column + anElement children last token size]"]. outputStream nextPut: $:! ! !TLConsole methodsFor: 'private' stamp: 'DamienCassou 9/2/2011 16:45'! printFailingText: anElement outputStream nextPutAll: anElement text withBlanksTrimmed ! ! !TLConsole methodsFor: 'private' stamp: 'DamienCassou 9/2/2011 16:44'! printRule: aRule outputStream nextPutAll: aRule name; nextPutAll: ': '; nextPutAll: aRule rationale! ! !TLConsole methodsFor: 'private' stamp: 'DamienCassou 9/2/2011 17:06'! processFailure: aFailure self printContext: aFailure element. outputStream space. self printRule: aFailure rule. outputStream lf;tab. self printFailingText: aFailure element ! ! !TLConsole methodsFor: 'initialize-release' stamp: 'DamienCassou 9/2/2011 16:18'! setFilename: aString content: anotherString filename := aString. content := anotherString. checker := TLTextLintChecker new. checker addStyle: TLWritingStyle scientificPaperStyle.! !