Ejemplo n.º 1
0
 void Init()
 {
     if (!Dict.ContainsKey(CHILDREN_KEY))
     {
         Dict[CHILDREN_KEY] = new PBXProjArray();
     }
 }
Ejemplo n.º 2
0
        public void AddAttribute(string attribute)
        {
            var attribs = GetSettingsEntry <PBXProjArray>(ATTRIBUTES_KEY);

            if (attribs == null)
            {
                attribs = new PBXProjArray();
                SetSettingsEntry(ATTRIBUTES_KEY, attribs);
            }

            if (!attribs.ToStringArray().Contains(attribute))
            {
                attribs.Add(attribute);
            }
        }
Ejemplo n.º 3
0
        PBXProjArray ParseArray()
        {
            // (expression,expression)
            // _current = (
            PBXProjArray array = new PBXProjArray();

            ReadNextToken(); // skip '('

            while (!(_currentToken.Type == PBXProjTokenType.Symbol && _currentToken.Value == ")"))
            {
                IPBXProjExpression expression = ParseExpression();
                SkipExpected(PBXProjTokenType.Symbol, ",");
                array.Add(expression);
            }

            ReadNextToken();
            return(array);
        }
Ejemplo n.º 4
0
        void AddArrayBuildSetting(ArrayBuildSetting arraySetting, string[] values, MergeMethod mergeMethod)
        {
            var          settings = BuildSettings;
            PBXProjArray array    = null;

            //TODO check conditionals, as will have to run for each conditional variant

            //handle appending
            if (mergeMethod == MergeMethod.Append)
            {
                array = settings.Element <PBXProjArray>(arraySetting.BuildSettingName);

                //single entry may have been parsed as a string
                if (array == null)
                {
                    var str = settings.Element <PBXProjString>(arraySetting.BuildSettingName);

                    if (str != null)
                    {
                        array = new PBXProjArray();
                        array.Add(str.Value);
                        settings[arraySetting.BuildSettingName] = array;
                    }
                }
            }

            //handles null case and replace case
            if (array == null)
            {
                array = new PBXProjArray();
                settings[arraySetting.BuildSettingName] = array;
            }

            // handle settings that need inherit string being added
            if (arraySetting.AddInherited)
            {
                string inherited = INHERITED.EncloseInQuotes();

                if (array.Where(o => (o as PBXProjString).Value.Equals(inherited)).Count() <= 0)
                {
                    array.Add(inherited);
                }
            }

            foreach (var v in values)
            {
                string quoted;

                if (v.Contains(" ") && !v.StartsWith("\"", System.StringComparison.InvariantCultureIgnoreCase))
                {
                    quoted = "\"" + v + "\"";
                }
                else
                {
                    quoted = v;
                }

                quoted = quoted.ToLiteralIfRequired();

                //only add if not present
                if (array.Where(o => (o as PBXProjString).Value.Equals(quoted)).Count() <= 0)
                {
                    array.Add(quoted);
                }
            }
        }