public static void ApplyModAndMeta( MutableGrammarBlock newBlock, GrammarBlock sourceBlock, GBlockConvertListener listener, GBlockConverter metaConv = null, GBlockConverter modConv = null ) { if (sourceBlock.metaInfo != null) { var metaLis = new MixedGBlockConvertListener { _subBlockConverter = listener.metaConverter, _metaConverter = PassThroughGBlockConverter.instance, _modConverter = PassThroughGBlockConverter.instance }; var result = listener.metaConverter.ConvertGBlock(sourceBlock.metaInfo, metaLis); if (result.result != null) { newBlock.AddMetaInfo(result.result); } } if (sourceBlock.modifier != null) { var modLis = new MixedGBlockConvertListener { _subBlockConverter = listener.modConverter, _metaConverter = listener.metaConverter, _modConverter = listener.modConverter, _baseLisetner = listener }; var result = listener.modConverter.ConvertGBlock(sourceBlock.modifier, modLis); if (result.result != null) { newBlock.AddModifier(result.result); } } listener.AdditionalEdit(newBlock); }
void GBlockConvertListener.AdditionalEdit(MutableGrammarBlock mgBlock) { _baseLisetner?.AdditionalEdit(mgBlock); }