Tobias Pape uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/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! |
Free forum by Nabble | Edit this page |