Microsoft.R.Components.Application.Configuration.Parser.ConfigurationParser.ParseSetting C# (CSharp) Method

ParseSetting() private method

private ParseSetting ( string text, int lineNumber, ConfigurationSetting s ) : bool
text string
lineNumber int
s ConfigurationSetting
return bool
        private bool ParseSetting(string text, int lineNumber, ConfigurationSetting s) {
            if (string.IsNullOrWhiteSpace(text)) {
                return false;
            }

            IRValueNode leftOperand;
            IRValueNode rightOperand;
            if (ParseAssignment(text, out leftOperand, out rightOperand)) {
                var listOp = leftOperand as IOperator;
                if (listOp != null) {
                    // Look for assignment on settings environment:
                    //   settings$name1 <- "value1"
                    //   settings$name1 <- expr1
                    if (listOp.OperatorType == OperatorType.ListIndex && listOp.LeftOperand != null && listOp.RightOperand != null) {
                        var value = text.Substring(rightOperand.Start, rightOperand.Length);
                        var listName = (listOp.LeftOperand as Variable)?.Name;
                        var settingsName = (listOp.RightOperand as Variable)?.Name;
                        var result = !string.IsNullOrEmpty(settingsName) && !string.IsNullOrEmpty(value);
                        if (result && listName == "settings") {
                            try {
                                s.Name = settingsName;
                                s.ValueType = value[0] == '\'' || value[0] == '\"' ? ConfigurationSettingValueType.String : ConfigurationSettingValueType.Expression;
                                s.Value = s.ValueType == ConfigurationSettingValueType.String ? value.FromRStringLiteral() : value;
                                return true;
                            } catch (FormatException) {
                            }
                        }
                    }
                } else {
                    // Look for assignment with no environment
                    // (backwards compat with RTVS 0.5 + creation of settings environment):
                    //   name1 <- "value1"
                    //   name1 <- expr1
                    var name = (leftOperand as Variable)?.Name;
                    var value = text.Substring(rightOperand.Start, rightOperand.Length);
                    var result = !string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value);
                    if (result) {
                        try {
                            s.Name = name;
                            s.ValueType = value[0] == '\'' || value[0] == '\"' ? ConfigurationSettingValueType.String : ConfigurationSettingValueType.Expression;
                            s.Value = s.ValueType == ConfigurationSettingValueType.String ? value.FromRStringLiteral() : value;
                            return true;
                        } catch (FormatException) {
                        }
                    }
                }
            }
            _errors.Add(new ConfigurationError(lineNumber, Resources.ConfigurationError_Syntax));
            return false;
        }