SystemOrganization addCategory: #PetitManifestMf! PPCompositeParser subclass: #PPManifestMfParser instanceVariableNames: 'pairs pair label oneLinerBasicValue pairValue valueSeparator' classVariableNames: '' poolDictionaries: '' category: 'PetitManifestMf'! !PPManifestMfParser methodsFor: 'as yet unclassified' stamp: 'tg 7/12/2010 14:10'! label ^ (#letter asParser / #digit asParser / $- asParser) star token trim flatten! ! !PPManifestMfParser methodsFor: 'as yet unclassified' stamp: 'tg 7/22/2010 15:10'! oneLinerBasicValue ^ (PPPredicateObjectParser anyExceptAnyOf: {$: . $, . Character cr . Character lf . Character space}) star flatten! ! !PPManifestMfParser methodsFor: 'as yet unclassified' stamp: 'tg 7/22/2010 14:32'! pair ^label , $: asParser token trim, pairValue ==> [:token | (token at: 1)->(token at: 3)]! ! !PPManifestMfParser methodsFor: 'as yet unclassified' stamp: 'tg 7/22/2010 15:16'! pairValue ^ oneLinerBasicValue , ((valueSeparator , oneLinerBasicValue) ==> [:token | token last] ) trim star ==> [:token | token last isEmpty ifTrue: [token first] ifFalse: [((OrderedCollection with: token first) addAll: token last; yourself) asArray ]]! ! !PPManifestMfParser methodsFor: 'as yet unclassified' stamp: 'tg 7/12/2010 13:49'! pairs ^ pair , (#newline asParser , pair ==> [:token | token second ]) star ==> [:token | ((OrderedCollection with: token first) addAll: token last; yourself) asArray ]! ! !PPManifestMfParser methodsFor: 'as yet unclassified' stamp: 'tg 7/22/2010 14:43'! start ^ pairs end ! ! !PPManifestMfParser methodsFor: 'as yet unclassified' stamp: 'tg 7/22/2010 15:19'! valueSeparator ^ $, asParser token , (#newline asParser , #space asParser) ! ! PPCompositeParserTest subclass: #PPManifestMfParserTest instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'PetitManifestMf'! !PPManifestMfParserTest methodsFor: 'as yet unclassified' stamp: 'tg 7/9/2010 09:12'! parserClass ^ PPManifestMfParser! ! !PPManifestMfParserTest methodsFor: 'as yet unclassified' stamp: 'tg 7/22/2010 14:49'! testDoublePairsWithCollection self assert: 'Header: value1,value2 Header2: value3, value4' is: {'Header'->#('value1' 'value2') . 'Header2'->#('value3' 'value4')}! ! !PPManifestMfParserTest methodsFor: 'as yet unclassified' stamp: 'tg 7/22/2010 14:49'! testMultilineDoublePairsWithCollection self assert: 'Header: value1, value2 Header2: value3, value4' is: {'Header'->#('value1' 'value2') . 'Header2'->#('value3' 'value4')}! ! !PPManifestMfParserTest methodsFor: 'as yet unclassified' stamp: 'tg 7/22/2010 14:48'! testMultilineSinglePairWithCollection self assert: 'Header: value1, value2' is: {'Header'->#('value1' 'value2')}! ! !PPManifestMfParserTest methodsFor: 'as yet unclassified' stamp: 'tg 7/12/2010 11:05'! testSinglePair self assert: 'Header: value' is: {'Header'->'value'}! ! !PPManifestMfParserTest methodsFor: 'as yet unclassified' stamp: 'tg 7/12/2010 12:46'! testSinglePairWithCollection self assert: 'Header: value1, value2' is: {'Header'->#('value1' 'value2')}! !