Пример #1
0
        /// <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;
            }
        }
Пример #2
0
        /// <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;
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
 private static ChainSegment Create(string value, WellKnownVariable variable)
 {
     return(Lookup.GetOrAdd(value, ValueFactory, variable).Value);
 }
Пример #5
0
 public CreationProperties(string @string, WellKnownVariable knownVariable = WellKnownVariable.None)
 {
     String        = @string;
     KnownVariable = knownVariable;
 }
Пример #6
0
 internal static ChainSegment Create(string value, WellKnownVariable variable)
 {
     return(ChainSegmentStore.Current?.Create(value, variable) ?? new ChainSegment(value, variable));
 }
Пример #7
0
 public ChainSegment Create(string value, WellKnownVariable variable) => _lookup.GetOrAdd(value, ValueFactory, variable).Value;