From 039957b9ae5bc91a9e709291442379ae3a3cac54 Mon Sep 17 00:00:00 2001 From: Sean DeNigris Date: Wed, 7 Oct 2015 15:20:53 +0000 Subject: [PATCH] [Enh]: Fix Issue #27: All Option Descriptions Should Be Extensible; now MultipleOptionDescriptions can be #extensible, too! Implementation note: #initializer had to be pushed up, since we need to supply a way to create the new instance. This pushes us a bit closer to my suspicion that #classes for reference descriptions should be #factories, which would probably mean a name-change for #initializer --- .../instance/validateKind..st | 3 +-- .../class/defaultExtensible.st | 0 .../instance/beExtensible.st | 0 .../instance/beLimited.st | 0 .../instance/descriptionExtensible.st | 0 .../instance/extensible..st | 0 .../instance/extensible.st | 0 .../instance/isExtensible.st | 0 .../instance/shouldNotInclude..st | 2 +- .../instance/validateOptionKind..st | 7 +++++++ .../instance/initializer..st | 0 .../instance/initializer.st | 0 .../instance/shouldNotInclude..st | 3 --- .../instance/validateKind..st | 6 +----- .../NumberParser.extension/class/isNumber..st | 7 +++++++ .../NumberParser.extension/properties.json | 3 +++ 16 files changed, 20 insertions(+), 11 deletions(-) rename source/Magritte-Model.package/{MASingleOptionDescription.class => MAOptionDescription.class}/class/defaultExtensible.st (100%) rename source/Magritte-Model.package/{MASingleOptionDescription.class => MAOptionDescription.class}/instance/beExtensible.st (100%) rename source/Magritte-Model.package/{MASingleOptionDescription.class => MAOptionDescription.class}/instance/beLimited.st (100%) rename source/Magritte-Model.package/{MASingleOptionDescription.class => MAOptionDescription.class}/instance/descriptionExtensible.st (100%) rename source/Magritte-Model.package/{MASingleOptionDescription.class => MAOptionDescription.class}/instance/extensible..st (100%) rename source/Magritte-Model.package/{MASingleOptionDescription.class => MAOptionDescription.class}/instance/extensible.st (100%) rename source/Magritte-Model.package/{MASingleOptionDescription.class => MAOptionDescription.class}/instance/isExtensible.st (100%) create mode 100644 source/Magritte-Model.package/MAOptionDescription.class/instance/validateOptionKind..st rename source/Magritte-Model.package/{MARelationDescription.class => MAReferenceDescription.class}/instance/initializer..st (100%) rename source/Magritte-Model.package/{MARelationDescription.class => MAReferenceDescription.class}/instance/initializer.st (100%) delete mode 100644 source/Magritte-Model.package/MASingleOptionDescription.class/instance/shouldNotInclude..st create mode 100644 source/Magritte-Model.package/NumberParser.extension/class/isNumber..st create mode 100644 source/Magritte-Model.package/NumberParser.extension/properties.json diff --git a/source/Magritte-Model.package/MAMultipleOptionDescription.class/instance/validateKind..st b/source/Magritte-Model.package/MAMultipleOptionDescription.class/instance/validateKind..st index c70b3eaf..1685e4bc 100644 --- a/source/Magritte-Model.package/MAMultipleOptionDescription.class/instance/validateKind..st +++ b/source/Magritte-Model.package/MAMultipleOptionDescription.class/instance/validateKind..st @@ -1,5 +1,4 @@ validating validateKind: anObject super validateKind: anObject. - (anObject allSatisfy: [ :each | self options includes: each ]) - ifFalse: [ MAKindError description: self signal: self kindErrorMessage ] \ No newline at end of file + anObject do: [ :e | self validateOptionKind: e ] \ No newline at end of file diff --git a/source/Magritte-Model.package/MASingleOptionDescription.class/class/defaultExtensible.st b/source/Magritte-Model.package/MAOptionDescription.class/class/defaultExtensible.st similarity index 100% rename from source/Magritte-Model.package/MASingleOptionDescription.class/class/defaultExtensible.st rename to source/Magritte-Model.package/MAOptionDescription.class/class/defaultExtensible.st diff --git a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/beExtensible.st b/source/Magritte-Model.package/MAOptionDescription.class/instance/beExtensible.st similarity index 100% rename from source/Magritte-Model.package/MASingleOptionDescription.class/instance/beExtensible.st rename to source/Magritte-Model.package/MAOptionDescription.class/instance/beExtensible.st diff --git a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/beLimited.st b/source/Magritte-Model.package/MAOptionDescription.class/instance/beLimited.st similarity index 100% rename from source/Magritte-Model.package/MASingleOptionDescription.class/instance/beLimited.st rename to source/Magritte-Model.package/MAOptionDescription.class/instance/beLimited.st diff --git a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/descriptionExtensible.st b/source/Magritte-Model.package/MAOptionDescription.class/instance/descriptionExtensible.st similarity index 100% rename from source/Magritte-Model.package/MASingleOptionDescription.class/instance/descriptionExtensible.st rename to source/Magritte-Model.package/MAOptionDescription.class/instance/descriptionExtensible.st diff --git a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/extensible..st b/source/Magritte-Model.package/MAOptionDescription.class/instance/extensible..st similarity index 100% rename from source/Magritte-Model.package/MASingleOptionDescription.class/instance/extensible..st rename to source/Magritte-Model.package/MAOptionDescription.class/instance/extensible..st diff --git a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/extensible.st b/source/Magritte-Model.package/MAOptionDescription.class/instance/extensible.st similarity index 100% rename from source/Magritte-Model.package/MASingleOptionDescription.class/instance/extensible.st rename to source/Magritte-Model.package/MAOptionDescription.class/instance/extensible.st diff --git a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/isExtensible.st b/source/Magritte-Model.package/MAOptionDescription.class/instance/isExtensible.st similarity index 100% rename from source/Magritte-Model.package/MASingleOptionDescription.class/instance/isExtensible.st rename to source/Magritte-Model.package/MAOptionDescription.class/instance/isExtensible.st diff --git a/source/Magritte-Model.package/MAOptionDescription.class/instance/shouldNotInclude..st b/source/Magritte-Model.package/MAOptionDescription.class/instance/shouldNotInclude..st index d8c0d7de..b0cab6fe 100644 --- a/source/Magritte-Model.package/MAOptionDescription.class/instance/shouldNotInclude..st +++ b/source/Magritte-Model.package/MAOptionDescription.class/instance/shouldNotInclude..st @@ -1,3 +1,3 @@ accessing-dynamic shouldNotInclude: anObject - ^ anObject isNil or: [ self options includes: anObject ] \ No newline at end of file + ^ self isExtensible not or: [ anObject isNil or: [ self options includes: anObject ] ] \ No newline at end of file diff --git a/source/Magritte-Model.package/MAOptionDescription.class/instance/validateOptionKind..st b/source/Magritte-Model.package/MAOptionDescription.class/instance/validateOptionKind..st new file mode 100644 index 00000000..01ce16b0 --- /dev/null +++ b/source/Magritte-Model.package/MAOptionDescription.class/instance/validateOptionKind..st @@ -0,0 +1,7 @@ +validating +validateOptionKind: anObject + (self options includes: anObject) + ifTrue: [ ^ self ]. + self isExtensible + ifTrue: [ self reference validate: anObject ] + ifFalse: [ MAKindError description: self signal: self kindErrorMessage ] \ No newline at end of file diff --git a/source/Magritte-Model.package/MARelationDescription.class/instance/initializer..st b/source/Magritte-Model.package/MAReferenceDescription.class/instance/initializer..st similarity index 100% rename from source/Magritte-Model.package/MARelationDescription.class/instance/initializer..st rename to source/Magritte-Model.package/MAReferenceDescription.class/instance/initializer..st diff --git a/source/Magritte-Model.package/MARelationDescription.class/instance/initializer.st b/source/Magritte-Model.package/MAReferenceDescription.class/instance/initializer.st similarity index 100% rename from source/Magritte-Model.package/MARelationDescription.class/instance/initializer.st rename to source/Magritte-Model.package/MAReferenceDescription.class/instance/initializer.st diff --git a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/shouldNotInclude..st b/source/Magritte-Model.package/MASingleOptionDescription.class/instance/shouldNotInclude..st deleted file mode 100644 index 8eaf262e..00000000 --- a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/shouldNotInclude..st +++ /dev/null @@ -1,3 +0,0 @@ -accessing-dynamic -shouldNotInclude: anObject - ^ self isExtensible not or: [ super shouldNotInclude: anObject ] \ No newline at end of file diff --git a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/validateKind..st b/source/Magritte-Model.package/MASingleOptionDescription.class/instance/validateKind..st index 76a27b6d..dec08756 100644 --- a/source/Magritte-Model.package/MASingleOptionDescription.class/instance/validateKind..st +++ b/source/Magritte-Model.package/MASingleOptionDescription.class/instance/validateKind..st @@ -1,8 +1,4 @@ validating validateKind: anObject super validateKind: anObject. - (self options includes: anObject) - ifTrue: [ ^ self ]. - self isExtensible - ifTrue: [ self reference validate: anObject ] - ifFalse: [ MAKindError description: self signal: self kindErrorMessage ] \ No newline at end of file + self validateOptionKind: anObject \ No newline at end of file diff --git a/source/Magritte-Model.package/NumberParser.extension/class/isNumber..st b/source/Magritte-Model.package/NumberParser.extension/class/isNumber..st new file mode 100644 index 00000000..f41cf20e --- /dev/null +++ b/source/Magritte-Model.package/NumberParser.extension/class/isNumber..st @@ -0,0 +1,7 @@ +*Magritte-Model +isNumber: aStringOrStream + + | stream | + stream := aStringOrStream readStream. + NumberParser parse: stream onError: [ ^ false ]. + ^ stream atEnd \ No newline at end of file diff --git a/source/Magritte-Model.package/NumberParser.extension/properties.json b/source/Magritte-Model.package/NumberParser.extension/properties.json new file mode 100644 index 00000000..054baf3b --- /dev/null +++ b/source/Magritte-Model.package/NumberParser.extension/properties.json @@ -0,0 +1,3 @@ +{ + "name" : "NumberParser" +} \ No newline at end of file