From 2b96046b5a5e184eaffc692c735f7322ccfaed76 Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Thu, 1 Aug 2024 15:25:06 +0200 Subject: [PATCH 1/3] no fail materialization + bl svg path --- .../BlSvgPath.extension.st | 15 ++++++++++++ src/Bloc-Serialization/BlSerializer.class.st | 24 ++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/Bloc-Serialization-Stash/BlSvgPath.extension.st diff --git a/src/Bloc-Serialization-Stash/BlSvgPath.extension.st b/src/Bloc-Serialization-Stash/BlSvgPath.extension.st new file mode 100644 index 0000000..77d0697 --- /dev/null +++ b/src/Bloc-Serialization-Stash/BlSvgPath.extension.st @@ -0,0 +1,15 @@ +Extension { #name : #BlSvgPath } + +{ #category : #'*Bloc-Serialization-Stash' } +BlSvgPath >> stashAccessors [ + + + | accessors | + accessors := OrderedCollection new. + fillRule = EvenOdd ifTrue: [ + accessors add: (#useEvenOddFillRule -> self) onlySetOnStash ]. + accessors add: + ([ :e | 'pathString: (<1p>)' expandMacrosWith: pathString ] -> self) + onlySetOnStash. + ^ accessors +] diff --git a/src/Bloc-Serialization/BlSerializer.class.st b/src/Bloc-Serialization/BlSerializer.class.st index a2f5319..930c246 100644 --- a/src/Bloc-Serialization/BlSerializer.class.st +++ b/src/Bloc-Serialization/BlSerializer.class.st @@ -4,7 +4,6 @@ Serailizer class for Bloc Class { #name : #BlSerializer, #superclass : #Object, - #traits : 'TBlSerializer', #classTraits : 'TBlSerializer classTrait', #classInstVars : [ 'serializer' @@ -12,17 +11,26 @@ Class { #category : #'Bloc-Serialization-Core' } +{ #category : #'as yet unclassified' } +BlSerializer class >> allSerializer [ + + ^ TBlSerializer users +] + { #category : #serialization } BlSerializer class >> materialize: aString [ - "Materialize a String into a BlElement and return it. Default materializer is STON." | serializerClassName serializerClass | aString ifEmpty: [ ^ BlocMaterializationError new signal ]. + aString first = $" ifFalse: [ - ^ BlStonSerializer materialize: aString ]. + ^ self unknownMaterializerFor: aString ]. + serializerClassName := aString lines first allButFirst allButLast. serializerClass := Smalltalk environment classNamed: serializerClassName. + serializerClass ifNil: [ ^ self unknownMaterializerFor: aString ]. + ^ serializerClass materialize: ('' join: aString lines allButFirst) ] @@ -57,6 +65,16 @@ BlSerializer class >> serializer [ ^ serializer ] +{ #category : #serialization } +BlSerializer class >> unknownMaterializerFor: aString [ + + self allSerializer do: [ :each | + [ ^ each materialize: aString ] + on: BlocMaterializationError + do: [ ] ]. + BlocMaterializationError new signal. +] + { #category : #'see class side' } BlSerializer >> seeClassSide [ ] From 916600ad1ccaa6cf660d19cca68da686e493e207 Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Thu, 1 Aug 2024 15:37:00 +0200 Subject: [PATCH 2/3] Fix error + delete useless tag --- src/Bloc-Serialization/BlSerializer.class.st | 2 +- src/Bloc-Serialization/BlocMaterializationError.class.st | 2 +- src/Bloc-Serialization/BlocSerializationError.class.st | 2 +- src/Bloc-Serialization/BlocSerializerError.class.st | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Bloc-Serialization/BlSerializer.class.st b/src/Bloc-Serialization/BlSerializer.class.st index 930c246..a2ddaca 100644 --- a/src/Bloc-Serialization/BlSerializer.class.st +++ b/src/Bloc-Serialization/BlSerializer.class.st @@ -72,7 +72,7 @@ BlSerializer class >> unknownMaterializerFor: aString [ [ ^ each materialize: aString ] on: BlocMaterializationError do: [ ] ]. - BlocMaterializationError new signal. + BlocMaterializationError signal: 'Could not find a Serializer.' ] { #category : #'see class side' } diff --git a/src/Bloc-Serialization/BlocMaterializationError.class.st b/src/Bloc-Serialization/BlocMaterializationError.class.st index fb1f5c4..7691757 100644 --- a/src/Bloc-Serialization/BlocMaterializationError.class.st +++ b/src/Bloc-Serialization/BlocMaterializationError.class.st @@ -1,5 +1,5 @@ Class { #name : #BlocMaterializationError, #superclass : #BlocSerializerError, - #category : #'Bloc-Serialization-Exception' + #category : #'Bloc-Serialization-Core' } diff --git a/src/Bloc-Serialization/BlocSerializationError.class.st b/src/Bloc-Serialization/BlocSerializationError.class.st index d9a3897..51faa2a 100644 --- a/src/Bloc-Serialization/BlocSerializationError.class.st +++ b/src/Bloc-Serialization/BlocSerializationError.class.st @@ -1,5 +1,5 @@ Class { #name : #BlocSerializationError, #superclass : #BlocSerializerError, - #category : #'Bloc-Serialization-Exception' + #category : #'Bloc-Serialization-Core' } diff --git a/src/Bloc-Serialization/BlocSerializerError.class.st b/src/Bloc-Serialization/BlocSerializerError.class.st index 1ea7aa5..26d4c76 100644 --- a/src/Bloc-Serialization/BlocSerializerError.class.st +++ b/src/Bloc-Serialization/BlocSerializerError.class.st @@ -1,5 +1,5 @@ Class { #name : #BlocSerializerError, #superclass : #Error, - #category : #'Bloc-Serialization-Exception' + #category : #'Bloc-Serialization-Core' } From 2454f0b003aca110770b85e22d1cf609fcf4d583 Mon Sep 17 00:00:00 2001 From: Yann Le Goff Date: Thu, 1 Aug 2024 18:28:02 +0200 Subject: [PATCH 3/3] small fixes --- src/Bloc-Serialization/BlElement.extension.st | 6 ++++++ src/Bloc-Serialization/BlSerializer.class.st | 15 ++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Bloc-Serialization/BlElement.extension.st b/src/Bloc-Serialization/BlElement.extension.st index f9a5923..32f8d96 100644 --- a/src/Bloc-Serialization/BlElement.extension.st +++ b/src/Bloc-Serialization/BlElement.extension.st @@ -1,5 +1,11 @@ Extension { #name : #BlElement } +{ #category : #'*Bloc-Serialization' } +BlElement >> materializeAsBlElement [ + + ^ self +] + { #category : #'*Bloc-Serialization' } BlElement >> serialize [ diff --git a/src/Bloc-Serialization/BlSerializer.class.st b/src/Bloc-Serialization/BlSerializer.class.st index a2ddaca..c14ec8e 100644 --- a/src/Bloc-Serialization/BlSerializer.class.st +++ b/src/Bloc-Serialization/BlSerializer.class.st @@ -18,20 +18,21 @@ BlSerializer class >> allSerializer [ ] { #category : #serialization } -BlSerializer class >> materialize: aString [ +BlSerializer class >> materialize: anObject [ | serializerClassName serializerClass | - aString ifEmpty: [ ^ BlocMaterializationError new signal ]. + (anObject isKindOf: BlElement) ifTrue: [ ^ anObject ]. + anObject ifEmpty: [ ^ BlocMaterializationError new signal ]. - aString first = $" ifFalse: [ - ^ self unknownMaterializerFor: aString ]. + anObject first = $" ifFalse: [ + ^ self unknownMaterializerFor: anObject ]. - serializerClassName := aString lines first allButFirst allButLast. + serializerClassName := anObject lines first allButFirst allButLast. serializerClass := Smalltalk environment classNamed: serializerClassName. - serializerClass ifNil: [ ^ self unknownMaterializerFor: aString ]. + serializerClass ifNil: [ ^ self unknownMaterializerFor: anObject ]. - ^ serializerClass materialize: ('' join: aString lines allButFirst) + ^ serializerClass materialize: ('' join: anObject lines allButFirst) ] { #category : #initialization }