vscode if/else conditions in user defined snippet - visual-studio-code

Looking at the vscode documentation for user defined snippets, it would appear that using the regex transform, you can do if/else conditions.
However, I can't seem to find any examples of this and I'm struggling to understand the correct syntax based on the BNF alone.
Can someone explain the syntax for this?
For example,
Lets say I have a snippet like this:
"body": [
"let color = '${1|white,black|}';",
"let hex = '${???}';"
]
If color==white, I want hex to output #fff, otherwise if black #000.

This works:
"color conditional": {
"prefix": "_hex",
"body": [
"let color = '${1};",
"let hex = '${1/(white)|(black)|(red)/${1:+#fff}${2:+#000}${3:+#f00}/}';" //works
],
"description": "conditional color"
},
However, as soon as I try it with default placeholders and choices, like
"let color = '${1|white,black|}';", // does not work
Apparently, you cannot do snippet transforms on default placeholder values. See transforms on placeholder values issues
I used the simpler if transform style, so here:
${1/(white)|(black)|(red)/${1:+#fff}${2:+#000}${3:+#f00}
if there is a group 1 $[1} in this case white then replace that group 1 with #fff and if group 2 (black) replace with #000, etc.
You could make it just an if/else (white) or not pretty easily.
"let hex = '${1/(white)/${1:?#fff:#000}/}';" // any non-`white` entry will print `#000`.
${1:? => if group 1 (white) print #fff , else print #000
The vscode docs are not very helpful on these conditional replacements, if you have more questions on their syntax, let me know.

Related

Unicode Character for Funnel to Signify Filtering

Is there a unicode character that signifies filtering (for example, a funnel) that is widely available on common computer operating systems?
Some of the most similar chars I've found so far:
∀, ∨, ∇, ▼, Y, Ⴤ, V, ᗊ, ⑂,
ツ
You can use search engines that allow you to draw like
http://shapecatcher.com/
http://www.mausr.com/
http://detexify.kirelabs.org/classify.html
I'm not able to find anything similar to the funnel but here are some possible results:
Turned shogi piece: ⛉ ⛊
Sector: ⌔
Down-pointing triangle with right half black: ⧩
Alchemical symbol for water: 🜄
Alchemical symbol for horse dung: 🝖
Canadian syllabics carrier hee: ᐶ
Rightwards arrow through superset ⭄
Subset above rightwards arrow ⥹
Rightwards arrow through greater-than ⭃ (probably should be rotated when display)
Greater-than above rightwards arrow ⥸
Rightwards arrow with tail ↣
Z notation range antirestriction ⩥
Excel does have a funnel shape when filtering data (see the icon in the c column above "7" in the below table) but I'm not sure whether they use an image or character for that since window inspection tools can't work out that symbol
In some cases the scissors ✀ can be used to signify "cut out unnecessary parts"
This is not really an answer, but possibly useful for anyone finding this page looking for a filter funnel icon. Here's a hack to make something look like a funnel - stack a triangle and a bar!
.filter-triangle,
.filter-bar {
position: absolute;
top: 0;
left: 0;
width: 1em;
text-align: center;
}
.filter-bar {
top: 0.1em;
}
<div class=filter-bar>❘</div>
<div class=filter-triangle>▼</div>
Alternatively this is an SVG icon I made:
<svg viewBox="0 0 80 90" focusable=false><path d="m 0,0 30,45 0,30 10,15 0,-45 30,-45 Z"></path></svg>
Both need aria attributes for accessability, amongst other problems! Both snippets are WTFPL-licenced!
Or you can use the MIT licenced filter icon from Feather.
I usually use the following:
y filter
Y active filter
¥ cancel or disable filter
Late here, but I like this ⫧
Found it by using shapecatcher.com which someone here suggested.
It works particularly well as a small placeholder in the inputs for my column filters.
(image)
https://unicode-table.com/en/2AE7/
I needed the same, and as far as I can tell there is no FUNNEL, FILTER or REDUCE symbol in Unicode.
However there is this:
⊆ U+2286 SUBSET OF OR EQUAL TO
You can use the character "X" with the Webdings Font, and it will give you a Speaker icon. Rotate it 90° and it'll be like a Funnel.
There is a proposal for a funnel (filter):
https://www.unicode.org/wg2/docs/n5181-repertoire-postAmd1.pdf
1CE08
Until it is released, the best character is the one provided by #phuclv (https://stackoverflow.com/a/51728429/5390321)
🝖 (1F756)
This is the best character I could find for myself ⊕
Unicode Character 'CIRCLED PLUS' (U+2295)
Which is by no means a funnel, but a kind of like a cross-hair insinuating "target more specific results". There are literally thousands of characters though...
In my case, I am going to use IcoMoon to replace the icon for this character, check out the IcoMoon app here
If you dont have a character map tool, you can use this quick PHP snippet to print out a range of unicode characters:
<?php
for ($i=hexdec("25ff");$i<=hexdec("26ff");$i++) echo sprintf("&#%u; ",$i);
Prints
◿ ☀ ☁ ☂ ☃ ☄ ★ ☆ ☇ ☈ ☉ ☊ ☋ ☌ ☍ ☎ ☏ ☐ ☑ ☒ ☓ ☔ ☕ ☖ ☗ ☘ ☙ ☚ ☛ ☜
☝ ☞ ☟ ☠ ☡ ☢ ☣ ☤ ☥ ☦ ☧ ☨ ☩ ☪ ☫ ☬ ☭ ☮ ☯ ☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷ ☸ ☹ ☺ ☻
☼ ☽ ☾ ☿ ♀ ♁ ♂ ♃ ♄ ♅ ♆ ♇ ♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ ♔ ♕ ♖ ♗ ♘ ♙
♚ ♛ ♜ ♝ ♞ ♟ ♠ ♡ ♢ ♣ ♤ ♥ ♦ ♧ ♨ ♩ ♪ ♫ ♬ ♭ ♮ ♯ ♰ ♱ ♲ ♳ ♴ ♵ ♶ ♷ ♸ ♹
♺ ♻ ♼ ♽ ♾ ♿ ⚀ ⚁ ⚂ ⚃ ⚄ ⚅ ⚆ ⚇ ⚈ ⚉ ⚊ ⚋ ⚌ ⚍ ⚎ ⚏ ⚐ ⚑ ⚒ ⚓ ⚔ ⚕ ⚖ ⚗ ⚘
⚙ ⚚ ⚛ ⚜ ⚝ ⚞ ⚟ ⚠ ⚡ ⚢ ⚣ ⚤ ⚥ ⚦ ⚧ ⚨ ⚩ ⚪ ⚫ ⚬ ⚭ ⚮ ⚯ ⚰ ⚱ ⚲ ⚳ ⚴ ⚵ ⚶ ⚷ ⚸
⚹ ⚺ ⚻ ⚼ ⚽ ⚾ ⚿ ⛀ ⛁ ⛂ ⛃ ⛄ ⛅ ⛆ ⛇ ⛈ ⛉ ⛊ ⛋ ⛌ ⛍ ⛎ ⛏ ⛐ ⛑ ⛒ ⛓ ⛔ ⛕
⛖ ⛗ ⛘ ⛙ ⛚ ⛛ ⛜ ⛝ ⛞ ⛟ ⛠ ⛡ ⛢ ⛣ ⛤ ⛥ ⛦ ⛧ ⛨ ⛩ ⛪ ⛫ ⛬ ⛭ ⛮ ⛯ ⛰ ⛱
⛲ ⛳ ⛴ ⛵ ⛶ ⛷ ⛸ ⛹ ⛺ ⛻ ⛼ ⛽ ⛾ ⛿
Good luck
While it won't be a funnel, I would suggest to use the web symbol: 🕸
After all, a web allows to catch the resource after which its user is looking for while letting much of the rest going to some ignored places.
Ψ 03A8
ψ 03C8
¥ 00A5
⁝ 205D
⁞ 205E
⥺ 297A (Rotated to point down)
⦀ 2980
⧨ 29E8
⧩ 29E9
⧪ 29EA
⏚ 23DA
🔍 128269
🔎 1F50E
There are a lot pictured here https://www.vertex42.com/ExcelTips/unicode-symbols.html
This may help. While looking for the same thing I found that I could print a funnel using this JavaScript line:
String.fromCharCode(57710); // Prints: 
But it doesn't work all the time. Most of the time I end up with a box, like: "". I'm still trying to figure out why that is.

Change text color in knitr for Word

I have an R Markdown file that outputs a data table into Word (unfortunately, my company's security settings won't allow it to interface with LaTeX) and I would like to color code the text in the table based on a classification factor to make it more readable. For example:
df <- data.frame(c(1:5), runif(5, 100, 200), c(rep("A", 3), rep("B", 2)))
colnames(df) <- c("N", "Value", "Category"
kable(df, format = "markdown", row.names = FALSE, align = 'l')
I would like whatever has a Category value of B, for example to be red in the output. I haven't found a command in knitr for Word that allows colors to change (I think this problem would be doable with LaTeX) which may stop me right there. Any thoughts or ideas how to get this to work?

def negatives in JES

I am trying to show my picture as a negative, and I coded it, but it wont show the picture as a negative, did I do something wrong?
def negative(picButterfly2):
for px in getPixels(picButterfly1):
red=getRed(px)
green=getGreen(px)
blue=getBlue(px)
negColor=makeColor(255-red, 255-green, 255-blue)
setColor(px,negColor)
ALSO HOW DO I DRAW HORIZONTAL LINES? Thanks!
Try with correct variables names: you have picButterfly2 NOT EQUAL TO picButterfly1:
This works:
def negative(picButterfly1):
for px in getPixels(picButterfly1):
red=getRed(px)
green=getGreen(px)
blue=getBlue(px)
negColor=makeColor(255-red, 255-green, 255-blue)
setColor(px,negColor)
file = pickAFile()
picture = makePicture(file)
negative(picture)
show(picture)
Also look at:
This (for negating images).
This (for drawing lines) - or any of those.
Your variables "red", "blue", and "green" already have a function in it, change it to a single character or just a capital letter like "Red". I know this was posted in 2014 but I'll leave a comment for the future.

Indicators in SSRS

I have a column in SSRS report. The value is "True" or "False" or "Yes" or "No" or "1" or "0"
Instead of showing that in that column, I would like to use indicator.
I placed indicator in that column but need to set start and end property. How do I go about doing it so I can show green checkmark when it's "True", "Yes", or '1" and red otherwise?
I am trying =IFF(Fields!Column_name.Value = "True", "Red", "Green") for the Start value for Green Check mark...but obviously I am wrong...
any help?
Well maybe its just a typo in your question but a couple things stand out
the function is IIF, not IFF
The True result should come first after the condition
I've never used the indicators before, but looking briefly at them, it looks like you can define ranges that are acceptable (green), unacceptable(red), or in the middle (yellow).
Start and End should probably be numeric values, "Green" and "Red" don't seem like valid values.
Try binding the indicator value expression to something like this.
=IIF(Fields!ColumnName.Value = "True" OrElse
Fields!ColumnName.Value = "Yes" OrElse
Fields!ColumnName.Value = "1", 100, 0)
Go to the Indicators properties > Values And States and put the Check's Start & End Value to 1. And the X put it's Start & End Value to 0.
Then write your expression like this:
=iif(First(Fields!YourField.Value, "YourDataSet")=True,1,0)
That should give you a Check if checked or an X if not.

NetLogo - How to set turtle color from array

How can I set a turtle's color from an array?
Here's my code but it doesn't work:
let colors array:from-list ["red" "yellow" "blue" "pink"]
set index random 3
let c array:item colors index
set color array:item colors index
Which leads to this error:
can't set flower variable COLOR to non-number blue error while flower 101 running SET
In NetLogo color, the names of the 14 main colors, plus black and white are defined as constants, so no quotes are required. Also, since they are constants, they are treated like literal values, so you can use them in the bracketed list notation, otherwise, you'd need to use the (list . . . ) reporter to create that list.
Also, your use of an array may be more complicated than needed.
You can write:
let colors [ red green blue yellow ]
set index random 3
let c item colors index
set color c
As an extra bonus, you can use the one-of primitive to do all the above:
set color one-of [ red green blue yellow ]
The accepted answer is the correct one, but as an aside, note that the read-from-string function will interpret a basic NetLogo color name as a color value:
observer> show read-from-string "red"
observer: 15
Also useful to know about is the base-colors built-in function that reports an array of the 14 basic NetLogo colors as numeric values, allowing you to do things such as:
ask turtles [ set color one-of base-colors ]
try setting your color names to number values, according to this site