Example #1
0
        private void PromptViewCards()
        {
            if (File.Exists(folder + tempFile))
            {
                File.Delete(folder + tempFolder + tempFile);
            }

            PC.FormatWriteLine("Insert the codes to {0}", "view");
            PC.WriteLine(
                "To create a range, use \"-\" between codes, use a \".\" at the end of codes to force not going down, and seperate groupings with a \",\"");
            List <CodeRange>   codeRanges = CodeRange.Parse(ReadAnswer());
            List <CatalogCode> cards      = CardsInRange(codeRanges);

            if (cards.Count != 0)
            {
                foreach (CatalogCode catalogCode in cards)
                {
                    PC.FormatWriteLine("{0}", catalog.Get(catalogCode).FileName);
                }

                Console.WriteLine();
                GenerateCardView(cards);
                OpenFileProcess(folder + tempFolder + tempFile);
            }
            else
            {
                PC.WriteLine("No card exists.");
            }
        }
Example #2
0
        private void MoveAndSave(CodeRange a, CodeRange b)
        {
            if (a.Equals(b))
            {
                return;
            }
            while (true)
            {
                if (a.Span == 1)
                {
                    MoveAndSave(a.fromCode, b.fromCode);
                }
                else
                {
                    if (a.fromCode.Youngest() < b.fromCode.Youngest())
                    {
                        MoveAndSave(a.toCode, b.toCode);
                        a = new CodeRange(a.fromCode, a.toCode + -1);
                        b = new CodeRange(b.fromCode, b.toCode + -1);
                        continue;
                    }

                    MoveAndSave(a.fromCode, b.fromCode);
                    a = new CodeRange(a.fromCode + 1, a.toCode);
                    b = new CodeRange(b.fromCode + 1, b.toCode);
                    continue;
                }

                break;
            }
        }
Example #3
0
        private void PromptShift()
        {
            PC.WriteLine("Please insert the range to shift along:");
            CodeRange orig = new CodeRange(ReadAnswer());

            if (orig.fromCode.Equals(CatalogCode.current))
            {
                throw new CatalogError("Cannot shift the root");
            }
            PC.WriteLine("Please insert by how much?");
            int dist = int.Parse(ReadAnswer());

            if (dist == 0)
            {
                return;
            }
            CodeRange shifted = orig + dist;

            if (catalog.Contains(shifted - orig, orig,
                                 (shifted - orig).fromCode.Youngest() - shifted.fromCode.Youngest()))
            {
                throw new CatalogError($"Cannot shift {orig} by {dist}");
            }
            MoveAndSave(orig, shifted);
        }
Example #4
0
        public bool Contains(CodeRange range)
        {
            if (range == null)
            {
                return(false);
            }

            CatalogCode counter = range.fromCode;

            while (counter.Youngest() <= range.toCode.Youngest())
            {
                if (Get(counter) != null)
                {
                    return(true);
                }
                counter = counter.Increment();
            }

            return(false);
        }
Example #5
0
        public bool Contains(CodeRange range, CodeRange usingCodeRange, int offset)
        {
            if (range == null)
            {
                return(false);
            }

            CatalogCode counter1 = range.fromCode;
            CatalogCode counter2 = usingCodeRange.fromCode + offset;

            while (counter1.Youngest() <= range.toCode.Youngest())
            {
                if (Contains(counter2) && Contains(counter1))
                {
                    return(true);
                }
                counter1 = counter1.Increment();
                counter2 = counter2.Increment();
            }

            return(false);
        }