public static CardViewModel ApplyTransformPipeline(XPathNavigator powerElement,
			IEnumerable<Func<PowerPipelineState, PowerPipelineState>> pipeline, XmlDocument character)
        {
            var state = new PowerPipelineState(powerElement, character.CreateNavigator());
            state = pipeline.Aggregate(state, (current, op) => op(current));
            return state.ViewModel;
        }
        public static CardViewModel ApplyTransformPipeline(XPathNavigator powerElement,
                                                           IEnumerable <Func <PowerPipelineState, PowerPipelineState> > pipeline, XmlDocument character)
        {
            var state = new PowerPipelineState(powerElement, character.CreateNavigator());

            state = pipeline.Aggregate(state, (current, op) => op(current));
            return(state.ViewModel);
        }
 public PowerPipelineState ToPowerInfo(PowerPipelineState state)
 {
     var name = state.PowerElement.GetAttribute("Name", "");
     var powerId = state.PowerElement.GetAttribute("Id", "");
     var math = state.Character.Select(string.Format("calculations/power[@name='{0}']", name)).Cast<XPathNavigator>().First().Value;
     state.LocalInfo = new PowerLocalInfo(name, powerId, math);
     return state;
 }
        public PowerPipelineState ToPowerInfo(PowerPipelineState state)
        {
            var name    = state.PowerElement.GetAttribute("Name", "");
            var powerId = state.PowerElement.GetAttribute("Id", "");
            var math    = state.Character.Select(string.Format("calculations/power[@name='{0}']", name)).Cast <XPathNavigator>().First().Value;

            state.LocalInfo = new PowerLocalInfo(name, powerId, math);
            return(state);
        }
 public IEnumerable <CardViewModel> ParseCharacterIntoCards()
 {
     foreach (XPathNavigator powerElement in FindAllPowers())
     {
         var state = new PowerPipelineState(powerElement, _character.CreateNavigator());
         state = ToPowerInfo(state);
         state = GetOnlineInfoForPower(state);
         state = CleanTheResponse(state);
         state = CreateViewModel(state);
         yield return(state.ViewModel);
     }
 }
 public PowerPipelineState CreateViewModel(PowerPipelineState state)
 {
     state.ViewModel = new CardViewModel
     {
         Title    = state.LocalInfo.Name,
         Subtitle =
             string.Format("{0} {1} {2}", _formatter.Source(state.CleanResponse), _formatter.Kind(state.CleanResponse),
                           _formatter.Level(state.CleanResponse)),
         Details = _formatter.ToBlocks(_formatter.DetailParagraphs(state.CleanResponse)),
         Color   = _formatter.ToColor(_formatter.Refresh(state.CleanResponse)),
         UnderlyingCalculations = state.LocalInfo.Math
     };
     return(state);
 }
 public PowerPipelineState CreateViewModel(PowerPipelineState state)
 {
     state.ViewModel = new CardViewModel
     {
         Title = state.LocalInfo.Name,
         Subtitle =
             string.Format("{0} {1} {2}", _formatter.Source(state.CleanResponse), _formatter.Kind(state.CleanResponse),
                 _formatter.Level(state.CleanResponse)),
         Details = _formatter.ToBlocks(_formatter.DetailParagraphs(state.CleanResponse)),
         Color = _formatter.ToColor(_formatter.Refresh(state.CleanResponse)),
         UnderlyingCalculations = state.LocalInfo.Math
     };
     return state;
 }
 public PowerPipelineState CleanTheResponse(PowerPipelineState state)
 {
     state.CleanResponse = _cleaner.CleanTheXml(_ParseXml(_cleaner.CleanTheText(state.WotcResponse)));
     return(state);
 }
 public PowerPipelineState GetOnlineInfoForPower(PowerPipelineState state)
 {
     state.WotcResponse = _wotcService.GetPowerDetails(state.LocalInfo.PowerId);
     return(state);
 }
 public PowerPipelineState GetOnlineInfoForPower(PowerPipelineState state)
 {
     state.WotcResponse = _wotcService.GetPowerDetails(state.LocalInfo.PowerId);
     return state;
 }
 public PowerPipelineState CleanTheResponse(PowerPipelineState state)
 {
     state.CleanResponse = _cleaner.CleanTheXml(_ParseXml(_cleaner.CleanTheText(state.WotcResponse)));
     return state;
 }
 public IEnumerable<CardViewModel> ParseCharacterIntoCards()
 {
     foreach (XPathNavigator powerElement in FindAllPowers())
     {
         var state = new PowerPipelineState(powerElement, _character.CreateNavigator());
         state = ToPowerInfo(state);
         state = GetOnlineInfoForPower(state);
         state = CleanTheResponse(state);
         state = CreateViewModel(state);
         yield return state.ViewModel;
     }
 }