-
-
Notifications
You must be signed in to change notification settings - Fork 105
v2 Conditional
axunonb edited this page Feb 6, 2022
·
1 revision
Conditional Formatting is has very powerful functionality, and it's one of the diamonds of this project. Conditional Formatting will kick in on any placeholder that contains a "|" (pipe character) after the ":".
The behavior of Conditional Formatting varies depending on the data type of the placeholder.
Data type | Syntax | Example |
---|---|---|
Number (Integer, Double, etc...) | "{0:one|default}" | "{0} {0:item|items}" |
"{0:zero|one|default}" | "{0:no items|one item|many items}" | |
"{0:negative|zero|one|default}" | "{0:negative items|no items|one item|many items}" | |
boolean | "{0:true|false}" | "Enabled? {0:Yes|No}" |
string | "{0:default|null or empty}" | "Text: {0:{0}|No text to display}" |
DateTime | "{0:before|after}" (as compared to Date.Now) | "My birthday {0:was on|will be on} {0:MMMM d}" |
TimeSpan | "{0:negative|positive}" | "My birthday {0:was {0} ago|will be in {0} from now}" |
"{0:negative|zero|positive}" | "My birthday {0:was {0} ago|is today!|will be in {0} from now}" | |
Object | "{0:default|nothing}" | "Property: {0:{0}|(Nothing)}" |
Each parameter is separated by "|". The comparison is followed by a "?" and then the text. The last (default) entry does not contain a comparison nor a "?". Valid comparisons: >=
>
=
<
<=
!=
.
Comparisons can be combined using "&" for AND or "/" for OR.
var addrList = new[] { new { Name = "Jim", Age = 32, Address = new { City = "New York", State = "NY" } } };
var result = Smart.Format("{Age:cond:>=55?Senior Citizen|>=30?Adult|>=18?Young Adult|>12?Teenager|>2?Child|Baby}", addrList);
// result: Adult
- Syntax, Terminology
- Placeholders and Nesting
- string.Format Compatibility
- Character Literals in Format Strings
- HTML With CSS or JavaScript
- Data Source Extensions
- Default _ DefaultFormatter
- Lists _ ListFormatter
- Choose _ ChooseFormatter
- Condition _ ConditionalFormatter
- Null _ NullFormatter
- SubString _ SubStringFormatter
- RegEx _ IsMatchFormatter
- Pluralization _ PluralLocalizationFormatter
- Localization _ LocalizationFormatter
- Templates _ TemplateFormatter
- TimeSpan _ TimeFormatter
- XML _ XElementFormatter
- Extension Methods
- Home
- Common Pitfalls
- HTML with CSS or JavaScript
- Overview
- Main Features
- Formatters
- Extra Features
- Console and StringBuilder
- TemplateFormatter
- SmartSettings to control Smart.Format behavior
- Additional Info
- License