Example #1
0
        public static BodyPart GetBodyPartsFromFile(String filename)
        {
            var tabParser = new TabulationParser(Program.DefaultMyStemmer);
            var data = tabParser.ParseFromFile(filename).ToList();
            var first = data.First();
            if (first.IndicatorAmount != 0)
                throw new Exception("Wrong incapsulation in " + filename);

            var human = new BodyPart(null, first.StemmedWords.ToArray());
            var current = human;
            int currentTabs = first.IndicatorAmount;
            foreach (var q in data.Skip(1))
            {
                if (q.IndicatorAmount > currentTabs)
                {
                    current = current.AddSubPartAndReturnItUsing( q.StemmedWords);
                    currentTabs = q.IndicatorAmount;
                }
                else if (q.IndicatorAmount < currentTabs)
                {
                    int numberIterations = currentTabs - q.IndicatorAmount;
                    for (int i = 0; i < numberIterations; ++i )
                        current = current.Parent;
                    current = current.Parent.AddSubPartAndReturnItUsing( q.StemmedWords);
                    currentTabs = q.IndicatorAmount;
                }
                else
                {
                    current = current.Parent.AddSubPartAndReturnItUsing(q.StemmedWords);
                }

            }
            return human;
        }
Example #2
0
 public BodyCalculator(QuestionList questions, BodyPart body)
 {
     this.questions = questions;
     this.body = body;
 }
Example #3
0
 public BodyPart AddSubPartAndReturnItUsing(IEnumerable<string> names)
 {
     var q = new BodyPart(this, names.ToArray());
     AddSubPart(q);
     return q;
 }
Example #4
0
 public void AddSubPart(BodyPart part)
 {
     subParts.Add(part);
 }
Example #5
0
 public BodyPart(BodyPart parent, string[] names)
 {
     Parent = parent;
     Names = names;
 }
Example #6
0
 private Dictionary<string, BodyPart> getDict(Dictionary<string, BodyPart> dict, BodyPart part)
 {
     foreach (var name in part.Names.Distinct())
     {
         dict.Add(name, part);
     }
     if (part.GetSubParts().Count == 0)
     {
         return dict;
     }
     foreach (var bodyPart in part.GetSubParts())
     {
         getDict(dict, bodyPart);
     }
     return dict;
 }