@Override public List<Block> execute(ContentMacroParameters parameters, String content, MacroTransformationContext context) throws MacroExecutionException { try { List<Block> blocks = getSyntaxParser(parameters.getSyntax()).parse(new StringReader(content)).getChildren(); MetaDataBlock metaDataBlock = new MetaDataBlock(blocks, MetaData.SYNTAX, parameters.getSyntax().toIdString()); metaDataBlock.getMetaData().addMetaData(this.getNonGeneratedContentMetaData()); return Collections.singletonList(metaDataBlock); } catch (ParseException e) { throw new MacroExecutionException( String.format("Failed to parse macro content in syntax [%s]", parameters.getSyntax()), e); } }
private void maybeFixExpandedMacroAncestor(Block block) { ExpandedMacroBlock expandedMacro = block.getFirstBlock(new ClassBlockMatcher(ExpandedMacroBlock.class), Block.Axes.ANCESTOR_OR_SELF); if (expandedMacro != null) { Block parent = expandedMacro.getParent(); if (!(parent instanceof MetaDataBlock) || !((MetaDataBlock) parent).getMetaData().contains(MODULE_NAME)) { MetaDataBlock metaData = new MetaDataBlock(Collections.<Block>emptyList()); // Use a syntax that supports relative path resource references (we use relative paths to include the // temporary files). metaData.getMetaData().addMetaData(MetaData.SYNTAX, Syntax.XWIKI_2_1); metaData.getMetaData().addMetaData(MODULE_NAME, true); parent.replaceChild(metaData, expandedMacro); metaData.addChild(expandedMacro); } } }
/** * @param source the blocks from where to try to extract the source content * @return the source content reference or null if none is found */ private String extractSourceContentReference(Block source) { String contentSource = null; MetaDataBlock metaDataBlock = source.getFirstBlock(new MetadataBlockMatcher(MetaData.SOURCE), Block.Axes.ANCESTOR); if (metaDataBlock != null) { contentSource = (String) metaDataBlock.getMetaData().getMetaData(MetaData.SOURCE); } return contentSource; } }
@Override protected List<Block> parseContent(P parameters, String content, MacroTransformationContext context) throws MacroExecutionException { // Don't execute transformations explicitly. They'll be executed on the generated content later on. List<Block> children = getMacroContentParser().parse(content, context, false, context.isInline()).getChildren(); return Collections.singletonList(new MetaDataBlock(children, this.getNonGeneratedContentMetaData())); } }
/** * @param source the blocks from where to try to extract the source content * @return the source content reference or null if none is found */ private String extractSourceContentReference(Block source) { String contentSource = null; MetaDataBlock metaDataBlock = source.getFirstBlock(new MetadataBlockMatcher(MetaData.SOURCE), Block.Axes.ANCESTOR); if (metaDataBlock != null) { contentSource = (String) metaDataBlock.getMetaData().getMetaData(MetaData.SOURCE); } return contentSource; } }
private Block tranform(XDOM xdom, Block block) throws RenderingException { TransformationContext transformationContext = new TransformationContext(xdom, this.configuration.getDefaultSyntax(), false); transformationContext.setTargetSyntax(this.configuration.getTargetSyntax()); transformationContext.setId(this.configuration.getTransformationId()); transform(block, transformationContext); // The result is often inserted in a bigger content so we remove the XDOM around it if (block instanceof XDOM) { return new MetaDataBlock(block.getChildren(), ((XDOM) block).getMetaData()); } return block; } }
MetaDataBlock metadata = new MetaDataBlock(result.getChildren(), result.getMetaData()); String source = this.defaultEntityReferenceSerializer.serialize(includedReference); metadata.getMetaData().addMetaData(MetaData.SOURCE, source); metadata.getMetaData().addMetaData(MetaData.BASE, source);
@Override public Syntax getCurrentSyntax(MacroTransformationContext context) { Syntax currentSyntax = context.getSyntax(); MacroBlock currentMacroBlock = context.getCurrentMacroBlock(); if (currentMacroBlock != null) { MetaDataBlock metaDataBlock = currentMacroBlock.getFirstBlock(new MetadataBlockMatcher(MetaData.SYNTAX), Axes.ANCESTOR_OR_SELF); if (metaDataBlock != null) { currentSyntax = (Syntax) metaDataBlock.getMetaData().getMetaData(MetaData.SYNTAX); } } return currentSyntax; } }
new MetaDataBlock(Collections.<Block>singletonList(wikiMacroMarker), macroXDOM.getMetaData());
MetaDataBlock metadata = new MetaDataBlock(result.getChildren(), result.getMetaData()); String source = this.defaultEntityReferenceSerializer.serialize(includedReference); metadata.getMetaData().addMetaData(MetaData.SOURCE, source); if (parametersContext == Context.NEW) { metadata.getMetaData().addMetaData(MetaData.BASE, source);
private BlockRenderer getContentRenderer() { if (this.componentManager != null) { MetaDataBlock metaDataBlock = getFirstBlock(new MetadataBlockMatcher(MetaData.SYNTAX), Axes.ANCESTOR_OR_SELF); if (metaDataBlock != null) { Syntax syntax = (Syntax) metaDataBlock.getMetaData().getMetaData(MetaData.SYNTAX); if (this.componentManager.hasComponent(BlockRenderer.class, syntax.toIdString())) { try { return this.componentManager.getInstance(BlockRenderer.class, syntax.toIdString()); } catch (ComponentLookupException e) { // Fall-back on the default content renderer; } } } } return this.contentRenderer; } }
.getFirstBlock(new MetadataBlockMatcher(MetaData.SOURCE), Axes.ANCESTOR_OR_SELF); if (metaDataBlock != null) { scriptContext.setAttribute(ScriptEngine.FILENAME, metaDataBlock.getMetaData().getMetaData(MetaData.SOURCE), ScriptContext.ENGINE_SCOPE);