Table of Contents
I had a sneaky bug in my JS logic trying to take advantage of the
undefined || fallback trick. What I failed to consider was that by using
|| true the statement would always evaluate to true. Luckily, GPT-4 straightened me out!
--- system_commands: ['I am a generalist that is not afraid to make radical associations between distinct topics by using creative leaps. I write in short, quippy sentences that has a conversational tone.'] temperature: 0.0 top_p: 1 max_tokens: 512 presence_penalty: 1 frequency_penalty: 1 stream: true stop: null n: 1 model: gpt-4 ---
what happens to
stream: metaMatter?.stream || this.settings.stream || true if settings.stream is false
settings.stream is false, then the conditional statement
metaMatter?.stream || this.settings.stream || true will evaluate to
true. This means that the value of
stream will be set to
true, regardless of whether or not there is a value for
what if i change the last or to and
If you change the last
&&, then the value of
stream will be set to
false. This is because the conditional statement
metaMatter?.stream || this.settings.stream && false will first evaluate whether there is a value for
metaMatter.stream. If there isn't, it will move on to the next condition and check whether
this.settings.stream is true or false. Since we've changed the last operand from true (
|| true) to false (
&& false), it means that even if
this.settings.stream is true, it won't matter as long as there's no value for
metaMatter?.stream, and hence, stream would be set to false.
if metaMatter?.stream is undefined what happens
metaMatter?.stream is undefined, the conditional statement
metaMatter?.stream || this.settings.stream || true will move on to evaluate the next condition which is
this.settings.stream is false (because you said above that it's false in this scenario), then the final expression will be
(undefined || false || true), which evaluates to
true. As a result, regardless of whether or not there's a value for
metaMatter?.stream, stream would still be set to true.
can you write a ternary using the following rules (lower number == higher priority):
- stream can be undefined in frontmatter or be in file and be true or false
- if stream is undefined fallback on global settings toggle of stream value
- if toggle is undefined fallback on true
Sure, here is a ternary that satisfies the rules you've mentioned:
const stream = metaMatter?.stream !== undefined ? metaMatter.stream // If defined in frontmatter, use its value. : this.settings.stream !== undefined ? this.settings.stream // If not defined in frontmatter but exists globally, use its value. : true; // Otherwise fallback on true.
The above ternary checks if
metaMatter?.stream is not equal to
undefined. If it's not, it uses the value of
metaMatter.stream. But if it is undefined, then we check whether there's a value for
this.settings.stream. If there is one and it's either true or false (not undefined), we'll use that. Finally, if all other conditions fail (i.e., both
metaMatter?.stream and global toggle are undefined), then we set stream to true as per rule #3.
Bram Adams Newsletter
Join the newsletter to receive the latest updates in your inbox.