Oh, i thought this comes from Pharo. So i copied this method and
proposed to include in trunk as well.
Not sure its integrated though (i placed it into inbox).

2010/1/21 Göran Krampe <[email protected]>:
> Hi guys!
>
> I admit not having tracked this thread in detail BUT attached is a changeset
> that I dug out from the Squeak beginners list where I posted it waaay back.
> The added Date class method included below shows what it offers.
>
> And of course, there are TONS of more cool stuff it could handle, but it is
> meant to be "smart enough" for a reasonable set of cases. ...And it was an
> "hour hack" ... :)
>
> regards, Göran
> -----------------------------
>
> readFrom: inputStream pattern: pattern
>        "Read a Date from the stream based on the pattern which can include
> the tokens:
>
>                y = A year with 1-n digits
>                yy = A year with 2 digits
>                yyyy = A year with 4 digits
>                m = A month with 1-n digits
>                mm = A month with 2 digits
>                d = A day with 1-n digits
>                dd = A day with 2 digits
>
>        ...and any other Strings inbetween. Representing $y, $m and $d is
> done using
>        \y, \m and \d and slash itself with \\. Simple example patterns:
>
>                'yyyy-mm-dd'
>                'yyyymmdd'
>                'yy.mm.dd'
>                'y-m-d'
>
>        A year given using only two decimals is considered to be >2000."
>
>        | day month year patternStream char |
>        patternStream := pattern readStream.
>        [patternStream atEnd] whileFalse: [
>                inputStream atEnd ifTrue: [^nil].
>                char := patternStream next.
>                char = $\
>                        ifTrue: [inputStream next = patternStream next
> ifFalse: [^nil]]
>                        ifFalse: [
>                                char = $y
>                                        ifTrue: [
>                                                (patternStream nextMatchAll:
> 'yyy')
>                                                        ifTrue: [year :=
> (inputStream next: 4) asInteger]
>                                                        ifFalse: [
>
>  (patternStream peekFor: $y)
>
>  ifTrue: [
>
>    year := (inputStream next: 2) asInteger]
>
>  ifFalse: [
>
>    year := Integer readFrom: inputStream]]]
>                                        ifFalse: [
>                                                char = $m
>                                                        ifTrue: [
>
>  (patternStream peekFor: $m)
>
>  ifTrue: [
>
>    month := (inputStream next: 2) asInteger]
>
>  ifFalse: [
>
>    month := Integer readFrom: inputStream]]
>                                                        ifFalse: [
>                                                                char = $d
>
>  ifTrue: [
>
>    (patternStream peekFor: $d)
>
>            ifTrue: [
>
>                    day := (inputStream next: 2) asInteger]
>
>            ifFalse: [
>
>                    day := Integer readFrom: inputStream]]
>
>  ifFalse: [
>
>    inputStream next = char ifFalse: [^nil]]]]]].
>        (year isNil | month isNil | day isNil) ifTrue: [^nil].
>        ^self year: year month: month day: day! !
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



-- 
Best regards,
Igor Stasenko AKA sig.
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to