package jetbrains.mps.baseLanguage.textGen; /*Generated by MPS */ import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.text.rt.TextGenContext; import jetbrains.mps.text.impl.TextGenSupport; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.baseLanguage.behavior.Classifier__BehaviorDescriptor; import jetbrains.mps.baseLanguage.behavior.ClassifierMember__BehaviorDescriptor; public abstract class BaseClassConceptTextGen { public static void membersWithBrackets(SNode classifier, boolean newLineOnEmptyMembers, final TextGenContext ctx) { final TextGenSupport tgs = new TextGenSupport(ctx); if (Sequence.fromIterable(Classifier__BehaviorDescriptor.members_id1hodSy8nQmC.invoke(classifier)).isNotEmpty() || newLineOnEmptyMembers) { tgs.append("{"); tgs.newLine(); ctx.getBuffer().area().increaseIndent(); BaseClassConceptTextGen.members(classifier, ctx); ctx.getBuffer().area().decreaseIndent(); tgs.indent(); tgs.append("}"); } else { tgs.append("{}"); } } public static void members(SNode classifier, final TextGenContext ctx) { final TextGenSupport tgs = new TextGenSupport(ctx); // just for first element boolean isWrappedElementBefore = true; SNode lastMember = Sequence.fromIterable(Classifier__BehaviorDescriptor.members_id1hodSy8nQmC.invoke(classifier)).last(); // FIXME can't use members child as there are still uses of deprecated containment roles (e.g. Classifier.method) for (SNode member : Classifier__BehaviorDescriptor.members_id1hodSy8nQmC.invoke(classifier)) { boolean needsLineBefore = (boolean) ClassifierMember__BehaviorDescriptor.needsEmptyLineBefore_idzB21h1tQit.invoke(member); boolean needsLineAfter = (boolean) ClassifierMember__BehaviorDescriptor.needsEmptyLineAfter_idzB21h1tQNm.invoke(member); BaseLanguageTextGen.newLine(needsLineBefore && !(isWrappedElementBefore), ctx); tgs.appendNode(member); BaseLanguageTextGen.newLine(needsLineAfter && !((lastMember == member)), ctx); isWrappedElementBefore = needsLineAfter; } } }