Example #1
0
		internal static Component ToComponent(Evaluatable thing)
		{
			if (thing is Expression)
			{
				return ToComponent((Expression)thing);
			}

			if (thing is Component)
			{
				return ToComponent((Component)thing);
			}

			if (thing is Factor)
			{
				return ToComponent((Factor)thing);
			}

			if (thing is ComponentListFactor)
			{
				var clf = (ComponentListFactor)thing;
				if (clf.IsInNumerator)
				{
					return ToComponent(clf.Factor);
				}

				return new SingleFactorComponent(new ExpressionFactor(new SingleComponentExpression(new ComponentList(new List<ComponentListFactor> { clf }))));
			}

			throw new UnexpectedTypeException(thing.GetType());
		}