Hi Michael -
At 12:42 PM 4/11/00 -0700, you wrote:
>I'm currently defining a 'print element of an object as a function. I'm
>assuming that the REBOL definition of 'print will be hidden in the
>definition of this object (and definitions of functions local to the >object)
Actually .....
print would write to a port, which could be standard
output OR a physical file. The port would be defined
as a member of the object as well.

let's call this content-object ; will build virtual
; pages OR could be used to build a physical web page
; let me know what you think of the following:
; thanks for your interest :>) 
; tim
content-object: make object!
[
  write_to_file: func []
  [
    ; is this being run from a server?  
    either equal? system/options/cgi/server-name none
    [return true]
    [{else}return false]
  ]     
  init_output: func[fname[string!] /local fpl]
  [
    either write_to_file ; no server so open a write port
    ; to fname 
    [
      file_name:  make file! fname
      fp1: open/new/write file_name
    ]
    ; yup, we're on the server so keep writing to stdout
    [{else} fp: system/ports/output]
    return fpl
  ]
  ; what the hay!! We can call this anything, but
  ; print would be great if it didn't screw up implicit
  ; output to stdout for the "original print"
  fp: init_output "hello.htm"
  print: func [fp[port!] value]
    [append fp value]
]
; If this process works with out conflict, then I would
;  create a debug object which would write to a file that
;  would be created every time the application runs 
;  and an errorlog object that would be appended every
;  time the application ran, given an error or warning
; condition appeared. Standard parts of the my C/C++/CGI
;  toolkit and expected by sysops that my cgi programs
;  run on. They could all have a print element (method)
;  OR I could call it something else.
>- which is ok. Outside of the element 'print, the REBOL definition works
>just fine. Following is the relevant piece of my object:
>
>player-def: make object! [
>       name: none
>       connection: none
>       ; METHODS
>       ; - - - - - - - - - - - - - - - - - - - - - - 
>       print: function [
>               "Print a message to this player, with trailing new-line"
>               msg [string! block!]
>       ][new-msg][
>               ; Cleanup the message suitable for telnet display
>               new-msg: player-format-print msg
>               append new-msg new-line
>               append connection new-msg
>       ]
>       ; - - - - - - - - - - - - - - - - - - - - - - 
>       prin: function [
>               "Print a message to this player"
>               msg [string! block!]
>       ][new-msg][
>               ; Cleanup the message suitable for telnet display
>               new-msg: player-format-print msg
>               append connection new-msg
>       ]
>]
>
>- Michael Jelinek
>
>-----Original Message-----
>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
>Sent: Tuesday, April 11, 2000 11:32 AM
>To: [EMAIL PROTECTED]
>Subject: [REBOL] [REBOL] Redefining functions with objects
>
>
>I'm thinking of developing a class.
>Let's call it 
>
>tims-object
>
>Suppose I write a function for this
>class and I call it 
>
>print 
>
>Will 
>tims-object/print 
>redefine rebol's own print? 
>
>I don't really want to do this, so
>I would welcome comments on this.
>
>thanks
>tim
>
>
>

Reply via email to