[squeak-dev] The Inbox: Collections-fn.740.mcz
H. Hirzel
hannes.hirzel at gmail.com
Tue Mar 7 10:34:01 UTC 2017
It was discussed earlier that 'HtmlReadWriter' is not well placed in
the 'Collections' category.
It should be moved to a different category.
Or into a new one.
--Hannes
On Tue, 7 Mar 2017 09:49:56 0000, commits at source.squeak.org
<commits at source.squeak.org> wrote:
> Fabio Niephaus uploaded a new version of Collections to project The Inbox:
> http://source.squeak.org/inbox/Collections-fn.740.mcz
>
> ==================== Summary ====================
>
> Name: Collections-fn.740
> Author: fn
> Time: 7 March 2017, 10:49:27.466847 am
> UUID: 1133e89d-10ca-4fa1-a98c-c1082fd360e6
> Ancestors: Collections-ul.739, Collections-fn.712
>
> HtmlReadWriter: Add support for style attributes in div and span containers
> and numberic HTML entities.
>
> =============== Diff against Collections-ul.739 ===============
>
> Item was added:
> + ----- Method: HtmlReadWriter>>mapContainerTag: (in category 'mapping')
> -----
> + mapContainerTag: aTag
> +
> + | result styleStart styleEnd styleAttributes |
> + result := OrderedCollection new.
> + styleStart := (aTag findString: 'style="' ) + 7.
> + styleStart <= 7 ifTrue: [^#()].
> + styleEnd := (aTag findString: '"' startingAt: styleStart) - 1.
> + styleAttributes := (aTag copyFrom: styleStart to: styleEnd) subStrings:
> ';'.
> + styleAttributes do: [:ea | |keyValue key value|
> + keyValue := (ea subStrings: ':') collect: [:s | s withBlanksTrimmed].
> + key := keyValue first asLowercase.
> + value := keyValue second.
> + keyValue size = 2 ifTrue: [
> + key = 'color' ifTrue: [result add: (TextColor color: (Color fromString:
> value))].
> + (key beginsWith: 'font') ifTrue: [
> + (value includesSubstring: 'bold')
> + ifTrue: [result add: TextEmphasis bold].
> + (value includesSubstring: 'italic')
> + ifTrue: [result add: TextEmphasis italic]]]].
> + ^ result!
>
> Item was changed:
> ----- Method: HtmlReadWriter>>mapTagToAttribute: (in category 'mapping')
> -----
> mapTagToAttribute: aTag
>
> aTag = '<b>' ifTrue: [^ {TextEmphasis bold}].
> aTag = '<i>' ifTrue: [^ {TextEmphasis italic}].
> aTag = '<u>' ifTrue: [^ {TextEmphasis underlined}].
> aTag = '<s>' ifTrue: [^ {TextEmphasis struckOut}].
> aTag = '<code>' ifTrue: [^ self mapCodeTag].
> aTag = '<pre>' ifTrue: [self breakLines: false. ^ {}].
> + (#('<div' '<span' '<center>' ) anySatisfy: [:ea | aTag beginsWith: ea])
> + ifTrue: [^(self mapAlignmentTag: aTag) union: (self mapContainerTag:
> aTag)].
> - (aTag = '<center>' or: [aTag beginsWith: '<div'])
> - ifTrue: [^ self mapAlignmentTag: aTag].
> (aTag beginsWith: '<font') ifTrue: [^ self mapFontTag: aTag].
> (aTag beginsWith: '<a') ifTrue: [^ self mapATag: aTag].
>
> "h1, h2, h3, ..."
> (aTag second = $h and: [aTag third isDigit])
> ifTrue: [^ {TextEmphasis bold}].
>
> ^ {}!
>
> Item was changed:
> ----- Method: HtmlReadWriter>>processHtmlEscape: (in category 'reading')
> -----
> processHtmlEscape: aString
> + | escapeSequence |
> + escapeSequence := aString copyFrom: 2 to: aString size - 1.
> + escapeSequence first = $# ifTrue: [^ self processHtmlEscapeNumber:
> escapeSequence allButFirst].
> -
> (String htmlEntities at: (aString copyFrom: 2 to: aString size - 1)
> ifAbsent: [])
> ifNotNil: [:char |
> string add: char.
> count := count + 1].!
>
> Item was added:
> + ----- Method: HtmlReadWriter>>processHtmlEscapeNumber: (in category
> 'reading') -----
> + processHtmlEscapeNumber: aString
> + | number |
> + number := aString first = $x
> + ifTrue: [ '16r', aString allButFirst ]
> + ifFalse: [ aString ].
> + string add: number asNumber asCharacter!
>
>
>
More information about the Squeak-dev
mailing list
|