vieweditattachhistoryswikistopchangessearchhelp

挿入ボックス時の日付挿入と新設オプションの融合

IdFormatter class >> #appendFormat:request:response:shelf:book:page: "追加場所を直前の行から行末に移動。% オプションの追加。 _ オプションの仕様変更"
appendFormat: text request: request response: response shelf: shelf book: book page: page
	| append content today string color signPos colorPos firstNonTagPos tailingBlanks lastNotBlankPos |
	content _ String streamContents: [:stream |
		(text includes: $_) ifTrue: [
			"_ means appends are seperated by lines"
			stream
				nextPutAll: '<hr width=20% align=left>'].
		string _ (((book settingsAt: 'saveFormatter') 
			format: (request fieldsKey: 'append') 
			request: request 
			response: response 
			shelf: shelf 
			book: book 
			page: page)) asString.
		(lastNotBlankPos _ string findLast: [:c | c isSeparator not]) > 0
			ifTrue: [tailingBlanks _ string last: (string size - lastNotBlankPos)].
		(text includes: $%) ifTrue: [
			"% means appends color tag"
			color _ ((signPos _ string reverse findString: '--') > 0 and: [
				((colorPos _ string lastIndexOf: $%) > 0) and: [
					(colorPos _ string size - colorPos) < signPos]]) 
						ifTrue: [self estimBrowerColor: 
							(string copyLast: colorPos) withoutTrailingBlanks asLowercase] 
						ifFalse: [nil].
			color ifNotNil: [
				firstNonTagPos _ string findFirst: [ :ch | 
					(('-#!!=|@_' includes: ch) or: [ch isSeparator]) not ].
				firstNonTagPos > 1
					ifTrue: [stream nextPutAll: (string first: firstNonTagPos - 1)].
				stream nextPutAll: '<font color=', color, '>'.
				string _ string copyFrom: firstNonTagPos to: string size - colorPos - 1]].
		stream
			nextPutAll: string withoutTrailingBlanks.
		color ifNotNil: [stream
			nextPutAll: '</font>'].
		(text includes: $@) ifTrue: [
			"@ means appends include timestamps"
			today _ Date today.
			stream
				nextPutAll: ' <tt><em><font color=gray>- ';
				nextPutAll: today yyyymmdd;
				nextPutAll: ', ';
				nextPutAll: Time now print24.
			stream
				nextPutAll: '</font></em></tt>'].
		stream nextPutAll: (tailingBlanks ifNil: ['']), String cr].
	"+ means appends are self replicating
	^ means append areas stay at top and appends go down"
	append _ text, String cr.
	^((text occurrencesOf: $+) > 1)
		ifTrue: [append, content, append]
		ifFalse: [(text includes: $^)
			ifTrue: [append, content]
			ifFalse: [content, append]]

このページを編集 (2329 bytes)


Congratulations! 以下の 1 ページから参照されています。

This page has been visited 2154 times.