I like Erin's ++ and -- function/operators - very cool!

Or the KISS method...
>> now/date + 1
== 26-Oct-2000
>> now/date + 2
== 27-Oct-2000



-----Original Message-----
From: Erin Thomas [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, October 25, 2000 7:34 AM
To: [EMAIL PROTECTED]
Subject: [REBOL] Re: [REBOL]



  I've found the attached REBOL library useful for things like
this. It's overkill if you just want to use it for dates, but
it can be used for a lot of other values.

  Cheerfulness,

                                        ------EAT

[EMAIL PROTECTED] wrote:
> 
> Hi List!
> 
> One cannot use the "+" or "-" operators on a Date! value, how does one
> increase or step through date! values then? I�m trying to construct a
> graphical calender.
> 
> Best regards
> 
> Sharriff Aina
> med.iq information & quality in healthcare AG
> 
> --
> To unsubscribe from this list, please send an email to
> [EMAIL PROTECTED] with "unsubscribe" in the
> subject, without the quotes.

-- Attached file included as plaintext by Listar --
-- File: word-gradation.r

REBOL [
    Title:      "Increment and Decrement (++) and (--) Functions"
    File:       %word-gradation.r
    Author:     "EAT"
    Date:       16-Feb-2000
    Purpose:    {Provide polymorphic ++ and -- gradation functions.}
    Usage: {
        Increment or decrement the value of a word by using the word
        as the argument to ++ or --. 

        Examples:

            int: 1
            probe ++ int

            block: [a b c d e f g]
            probe ++ block

            money: $1.00
            ++ money

            time: 11:11:11
            --/skip time (60 * 60) ; hourly decrement
    }
    Category:   [util 3]
]

increment: func [
    "increment a value by one"
    val [number! time! date! money! char! tuple! pair! series! port!] 
    "value to increment"
    /prev "return value before incrementing"
    /skip n [number!] "amount to skip per iteration"
][
    jump: get bind 'skip 'rebol
    if not skip [n: 1]
    either any [port? val series? val] [jump val to-integer n][val + n]
]

decrement: func [
    "decrement a value by one"
    val [number! time! date! money! char! tuple! pair! series! port!] 
    "value to decrement"
    /prev "return value before decrementing"
    /skip n [number!] "amount to skip per iteration"
][
    jump: get bind 'skip 'rebol
    if not skip [n: 1]
    either any [port? val series? val] [jump val negate to-integer n][val -
n]
]

decimal-increment: func [
    "increment decimal, money, or time value (default is by one tenth)"
    val [decimal! time! money!] "decimal, money, or time value"
    /prev "return value before incrementing"
    /hundredth "increment by one hundredth"
    /thousandth "increment by one thousandth"
][
    if hundredth [return val + 0.01]
    if thousandth [return val + 0.001]
    val + 0.1
]
    
decimal-decrement: func [
    "decrement decimal, money, or time value (default is by one tenth)"
    val [decimal! time! money!] "decimal, money, or time value"
    /prev "return value before decrementing"
    /hundredth "decrement by one hundredth"
    /thousandth "decrement by one thousandth"
][
    if hundredth [return val - 0.01]
    if thousandth [return val - 0.001]
    val - 0.1
]

++: func [
    "set word referenced by 'word to an incremented value"
    'word [word!]
     "supports number! time! date! money! char! tuple! pair! series! port!"
    /prev "return value before incrementing"
    /skip n [number!] "amount to skip each iteration - rounds n with series"
    /tenth "supports decimal! time! money! - ignores /skip"
    /hundredth "supports decimal! time! money! - ignores /skip"
    /thousandth "supports decimal! time! money! - ignores /skip"
    /local v
] [
    if not any [
        if tenth [set word decimal-increment v: get word]
        if hundredth [set word decimal-increment/hundredth v: get word]
        if thousandth [set word decimal-increment/thousandth v: get word]
    ] [
        set word either skip [
            increment/skip v: get word n][increment v: get word]
    ]
    either prev [return v] [return get word]
]

--: func [
    "set word referenced by 'word to a decremented value"
    'word [word!]
    "supports number! time! date! money! char! tuple! pair! series! port!"
    /prev "return value before decrementing"
    /skip n [number!] "about to skip each iteration - rounds n with series"
    /tenth "supports decimal! time! - ignores /skip"
    /hundredth "supports decimal! time! - ignores /skip"
    /thousandth "supports decimal! time! - ignores /skip"
    /local v
] [
    if not any [
        if tenth [set word decimal-decrement v: get word]
        if hundredth [set word decimal-decrement/hundredth v: get word]
        if thousandth [set word decimal-decrement/thousandth v: get word]
    ] [
        set word either skip [
            decrement/skip v: get word n][decrement v: get word]
    ]
    either prev [return v] [return get word]
]



-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.
-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to