Undocumented class: Sketchup::Console
-
Sketchup::Console
Instance methods:write
Outputs strings to the Ruby Console. Returns the length of the string. (Not newline terminated)
SKETCHUP_CONSOLE
refers to an instance ofSketchup::Console
.
Though you can make your own instance, it doesn't appear to make a difference.This class can be useful if you want/need to redirect
puts
orp
for debugging purposes and still output things to the console.The
puts
method reversed engineered:<span class="syntaxdefault">def puts</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">value</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  SKETCHUP_CONSOLE</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">write</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#{value}\n"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  nil<br />end<br /></span>
-
@thomthom said:
This class can be useful if you want/need to redirect
puts
orp
for debugging purposes and still output things to the console.The
puts
method reversed engineered:<span class="syntaxdefault">def puts</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">value</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  SKETCHUP_CONSOLE</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">write</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"#{value}\n"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  nil<br />end<br /></span>
Careful!
If a user does that at the console (in
Object
,) they override theputs()
method that ALL ruby objects inherit, includingIO
class and subclass objects, likeFile
class.Strange things might happen. You may wish to use a file instance's
puts()
method to write to the file, and not want it echoing to the console. (If theIO
class overrides it's inheritedputs()
method, we may not have a problem.)If you must override
puts()
then ONLY do it in your custom module or class.I find it is safer (and more robust,) to use a custom
echo()
method, which can send to$stdout
(which goes to the console anyway,) and / or send to a log file, or neither of them depending on a couple of boolean constants.<span class="syntaxdefault">def echo</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">value</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  puts</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">value</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> if ECHO<br />  </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">logfile</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">puts</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">value</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> if LOGGING<br />  nil<br />end<br /></span>
P.S. I don't call it
log()
because ofMath::log()
-
It was just a pseudo code of how the puts behave in SU.
Advertisement