[REBOL] [REBOL] [REBOL] Redefining functions with objects Re:(2)

2000-04-11 Thread tjohnson

I have probably answered my own question:
I'm still a newbie, but am pleased to return
results ->
; == consider the following code: the two objects work
;  independently. They use the same named methods
; op, prn, and close
; When I named those methods open, print,and close,
;  I got stack overflows, which suggests to me
;  that rebol doesn't like me overridding their
;  own system functions. 
;  I'm happy with the result. Less typing eh!
REBOL
 [
Title: "object"
Date:  011-Apr-2000
File:  %object.r
Purpose: {testing rebol objects}
]
;=== make first object
object-one: make object!
[
  op: func [] [fp: open/new/write %objone.txt]
  prn: func [value]
[append fp value]
  cls: func[] [close fp]
]
;=== make first object
object-two: make object!
[
  op: func [] [fp: open/new/write %objtwo.txt]
  prn: func [value]
[append fp value]
  cls: func[] [close fp]
]
;=== test first object
object-one/op
object-one/prn "testing object-one once more"
object-one/cls
;=== test second object
object-two/op
object-two/prn "testing object-two once more"
object-two/cls

At 05:10 PM 4/11/00 -0800, you wrote:
>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
>>
>>
>>
>
>




[REBOL] [REBOL] Redefining functions with objects Re:(2)

2000-04-11 Thread tjohnson

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
>
>
>