Esempio n. 1
0
	public void writeOperation(SimpleInstruction operation) {
		if (isWithinOperationSet()) {
			OperationSet currentOperationSet = operationSetStack.peek();
			currentOperationSet.addOperation(operation);
		} else {
			if (operation.getType() == SimpleInstruction.Type.PURL) {
				writeOperation(getMessageHelper().getPluralizedMessage(
						"operation.purl", 1));
			} else {
				writeOperation(getMessageHelper().getPluralizedMessage(
						"operation.knit", 1));
			}
		}
	}
Esempio n. 2
0
	private boolean renderOperationSet(OperationSet operationSet,
			boolean potentiallySimple) {
		if (operationSet.size() > 1) {
			potentiallySimple = false;
		}
		if (operationSet.getHead() != null) {
			getWriterHelper().write(
					StringUtils.capitalize(operationSet.getHead()));
		}

		Iterator it = operationSet.iterator();
		while (it.hasNext()) {
			Object operation = it.next();
			boolean useComma = true;
			if (operation instanceof RepeatOperationSet) {
				// a RepeatInstructionSet takes additional handling
				renderRepeatInstructionSet((RepeatOperationSet) operation,
						potentiallySimple);
			} else if (operation instanceof OperationSet) {
				OperationSet nestedOperationSet = (OperationSet) operation;
				if (nestedOperationSet.getType() == Type.INLINE_INSTRUCTION) {
					renderOperationSet(nestedOperationSet, potentiallySimple);
				} else if (nestedOperationSet.getType() == Type.USING_NEEDLE) {
					// an operation set of type USING_NEEDLE
					getWriterHelper().writeNewLine();
					getWriterHelper().incrementIndent();
					getWriterHelper().writeIndent();
					renderOperationSet((OperationSet) operation,
							potentiallySimple);
					getWriterHelper().decrementIndent();
					useComma = false;
				}
			} else if (operation instanceof SimpleInstruction) {
				SimpleInstruction simpleInstruction = (SimpleInstruction) operation;
				String message;
				if (simpleInstruction.getType() == SimpleInstruction.Type.KNIT) {
					if (potentiallySimple) {
						message = getMessage("operation.knit-only");
					} else {
						message = getMessageHelper().getPluralizedMessage(
								"operation.knit", 1, StringUtils.EMPTY);
					}
				} else if (simpleInstruction.getType() == SimpleInstruction.Type.PURL) {
					if (potentiallySimple) {
						message = getMessage("operation.purl-only");
					} else {
						message = getMessageHelper().getPluralizedMessage(
								"operation.purl", 1, StringUtils.EMPTY);
					}
				} else {
					throw new IllegalArgumentException(
							"Unhandled operation type "
									+ simpleInstruction.getType());
				}
				// some messages may take one argument
				getWriterHelper().write(message);
			} else {
				// it's something but it's not simple
				potentiallySimple = false;
				getWriterHelper().write(String.valueOf(operation));
			}
			if (it.hasNext() && useComma) {
				getWriterHelper().write(
						getMessage("operation.list-item-separator") + " ");
			}
		}
		if (operationSet.getTail() != null) {
			getWriterHelper()
					.write(
							". "
									+ StringUtils.capitalize(operationSet
											.getTail()) + ".");
		}
		return potentiallySimple;
	}