/// <summary> /// /// </summary> private ChainSegment(string value, WellKnownVariable wellKnownVariable = WellKnownVariable.None) { WellKnownVariable = wellKnownVariable; var segmentValue = string.IsNullOrEmpty(value) ? "this" : value.TrimStart(TrimStart); var segmentTrimmedValue = TrimSquareBrackets(segmentValue); _value = segmentValue; IsThis = string.IsNullOrEmpty(value) || string.Equals(value, "this", StringComparison.OrdinalIgnoreCase); IsVariable = !string.IsNullOrEmpty(value) && value.StartsWith("@"); TrimmedValue = segmentTrimmedValue; LowerInvariant = segmentTrimmedValue.ToLowerInvariant(); IsValue = LowerInvariant == "value"; _hashCode = GetHashCodeImpl(); if (IsThis) { WellKnownVariable = WellKnownVariable.This; } if (IsValue) { WellKnownVariable = WellKnownVariable.Value; } }
/// <summary> /// /// </summary> private ChainSegment(string value, WellKnownVariable wellKnownVariable = WellKnownVariable.None) { WellKnownVariable = wellKnownVariable; var isNullOrEmpty = string.IsNullOrEmpty(value); var segmentValue = isNullOrEmpty ? new Substring("this") : new Substring(value); var segmentTrimmedValue = TrimSquareBrackets(segmentValue); _value = value; IsThis = isNullOrEmpty || string.Equals(value, "this", StringComparison.OrdinalIgnoreCase); TrimmedValue = segmentTrimmedValue.ToString(); LowerInvariant = TrimmedValue.ToLowerInvariant(); IsValue = LowerInvariant == "value"; _hashCode = GetHashCodeImpl(); if (IsThis) { WellKnownVariable = WellKnownVariable.This; } if (IsValue) { WellKnownVariable = WellKnownVariable.Value; } }
private static ChainSegment Create(string value, WellKnownVariable variable, bool createVariable = false) { if (createVariable) { Lookup.GetOrAdd($"@{value}", ValueFactory, variable); } return(Lookup.GetOrAdd(value, ValueFactory, variable).Value); }
private static ChainSegment Create(string value, WellKnownVariable variable) { return(Lookup.GetOrAdd(value, ValueFactory, variable).Value); }
public CreationProperties(string @string, WellKnownVariable knownVariable = WellKnownVariable.None) { String = @string; KnownVariable = knownVariable; }
internal static ChainSegment Create(string value, WellKnownVariable variable) { return(ChainSegmentStore.Current?.Create(value, variable) ?? new ChainSegment(value, variable)); }
public ChainSegment Create(string value, WellKnownVariable variable) => _lookup.GetOrAdd(value, ValueFactory, variable).Value;