Search in sources :

Example 1 with ISubFormatter

use of org.eclipse.xtext.formatting2.ISubFormatter in project xtext-core by eclipse.

the class FormattableDocumentTest method conditionalFormatting2.

@Test
public void conditionalFormatting2() {
    final Procedure1<GenericFormatterTestRequest> _function = (GenericFormatterTestRequest it) -> {
        final Procedure1<MapBasedPreferenceValues> _function_1 = (MapBasedPreferenceValues it_1) -> {
            it_1.<Integer>put(FormatterPreferenceKeys.maxLineWidth, Integer.valueOf(30));
        };
        it.preferences(_function_1);
        StringConcatenation _builder = new StringConcatenation();
        _builder.append("kwlist  kw1  kw2");
        _builder.newLine();
        it.setToBeFormatted(_builder);
        final GenericFormatter<KWList> _function_2 = new GenericFormatter<KWList>() {

            @Override
            protected void format(final KWList model, @Extension final ITextRegionExtensions regions, @Extension final IFormattableDocument document) {
                final ISubFormatter _function = (IFormattableSubDocument doc) -> {
                    @Extension final IFormattableSubDocument fits = doc.requireFitsInLine();
                    final Procedure1<IHiddenRegionFormatter> _function_1 = (IHiddenRegionFormatter it_1) -> {
                        it_1.oneSpace();
                    };
                    fits.append(regions.regionFor(model).keyword("kwlist"), _function_1);
                    final Procedure1<IHiddenRegionFormatter> _function_2 = (IHiddenRegionFormatter it_1) -> {
                        it_1.oneSpace();
                    };
                    fits.append(regions.regionFor(model).keyword("kw1"), _function_2);
                };
                final ISubFormatter _function_1 = (IFormattableSubDocument doc) -> {
                    final Procedure1<IHiddenRegionFormatter> _function_2 = (IHiddenRegionFormatter it_1) -> {
                        it_1.newLine();
                    };
                    doc.append(regions.regionFor(model).keyword("kwlist"), _function_2);
                    final Procedure1<IHiddenRegionFormatter> _function_3 = (IHiddenRegionFormatter it_1) -> {
                        it_1.newLine();
                    };
                    doc.append(regions.regionFor(model).keyword("kw1"), _function_3);
                };
                document.formatConditionally(model, _function, _function_1);
            }
        };
        it.setFormatter(_function_2);
        StringConcatenation _builder_1 = new StringConcatenation();
        _builder_1.append("kwlist kw1 kw2");
        _builder_1.newLine();
        it.setExpectation(_builder_1);
    };
    this._genericFormatterTester.assertFormatted(_function);
}
Also used : GenericFormatterTestRequest(org.eclipse.xtext.formatting2.internal.GenericFormatterTestRequest) KWList(org.eclipse.xtext.formatting2.internal.formattertestlanguage.KWList) IHiddenRegionFormatter(org.eclipse.xtext.formatting2.IHiddenRegionFormatter) IFormattableDocument(org.eclipse.xtext.formatting2.IFormattableDocument) MapBasedPreferenceValues(org.eclipse.xtext.preferences.MapBasedPreferenceValues) IFormattableSubDocument(org.eclipse.xtext.formatting2.IFormattableSubDocument) ITextRegionExtensions(org.eclipse.xtext.formatting2.regionaccess.ITextRegionExtensions) Extension(org.eclipse.xtext.xbase.lib.Extension) GenericFormatter(org.eclipse.xtext.formatting2.internal.GenericFormatter) ISubFormatter(org.eclipse.xtext.formatting2.ISubFormatter) Procedure1(org.eclipse.xtext.xbase.lib.Procedures.Procedure1) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) Test(org.junit.Test)

Example 2 with ISubFormatter

use of org.eclipse.xtext.formatting2.ISubFormatter in project xtext-core by eclipse.

the class ConditionalReplacer method createReplacements.

@Override
public ITextReplacerContext createReplacements(ITextReplacerContext context) {
    context.setNextReplacerIsChild();
    for (ISubFormatter formatter : subFormatters) {
        try {
            ITextSegment region = getRegion();
            SubDocument subDocument = new SubDocument(region, getDocument());
            for (ITextReplacer replacer : replacers) subDocument.addReplacer(replacer);
            formatter.format(subDocument);
            ITextReplacerContext first = context.withReplacer(subDocument);
            ITextReplacerContext last = subDocument.createReplacements(first);
            return last;
        } catch (FormattingNotApplicableException e) {
        // no need to do anything.
        // Try the next SubFormatter until one doens't throw a FormattingNotApplicableException
        }
    }
    throw new FormattingNotApplicableException();
}
Also used : ITextReplacer(org.eclipse.xtext.formatting2.ITextReplacer) ISubFormatter(org.eclipse.xtext.formatting2.ISubFormatter) ITextSegment(org.eclipse.xtext.formatting2.regionaccess.ITextSegment) FormattingNotApplicableException(org.eclipse.xtext.formatting2.FormattingNotApplicableException) ITextReplacerContext(org.eclipse.xtext.formatting2.ITextReplacerContext)

Example 3 with ISubFormatter

use of org.eclipse.xtext.formatting2.ISubFormatter in project xtext-core by eclipse.

the class FormattableDocumentTest method conditionalFormatting1.

@Test
public void conditionalFormatting1() {
    final Procedure1<GenericFormatterTestRequest> _function = (GenericFormatterTestRequest it) -> {
        final Procedure1<MapBasedPreferenceValues> _function_1 = (MapBasedPreferenceValues it_1) -> {
            it_1.<Integer>put(FormatterPreferenceKeys.maxLineWidth, Integer.valueOf(10));
        };
        it.preferences(_function_1);
        StringConcatenation _builder = new StringConcatenation();
        _builder.append("kwlist  kw1  kw2");
        _builder.newLine();
        it.setToBeFormatted(_builder);
        final GenericFormatter<KWList> _function_2 = new GenericFormatter<KWList>() {

            @Override
            protected void format(final KWList model, @Extension final ITextRegionExtensions regions, @Extension final IFormattableDocument document) {
                final ISubFormatter _function = (IFormattableSubDocument doc) -> {
                    @Extension final IFormattableSubDocument fits = doc.requireFitsInLine();
                    final Procedure1<IHiddenRegionFormatter> _function_1 = (IHiddenRegionFormatter it_1) -> {
                        it_1.oneSpace();
                    };
                    fits.append(regions.regionFor(model).keyword("kwlist"), _function_1);
                    final Procedure1<IHiddenRegionFormatter> _function_2 = (IHiddenRegionFormatter it_1) -> {
                        it_1.oneSpace();
                    };
                    fits.append(regions.regionFor(model).keyword("kw1"), _function_2);
                };
                final ISubFormatter _function_1 = (IFormattableSubDocument doc) -> {
                    final Procedure1<IHiddenRegionFormatter> _function_2 = (IHiddenRegionFormatter it_1) -> {
                        it_1.newLine();
                    };
                    doc.append(regions.regionFor(model).keyword("kwlist"), _function_2);
                    final Procedure1<IHiddenRegionFormatter> _function_3 = (IHiddenRegionFormatter it_1) -> {
                        it_1.newLine();
                    };
                    doc.append(regions.regionFor(model).keyword("kw1"), _function_3);
                };
                document.formatConditionally(model, _function, _function_1);
            }
        };
        it.setFormatter(_function_2);
        StringConcatenation _builder_1 = new StringConcatenation();
        _builder_1.append("kwlist");
        _builder_1.newLine();
        _builder_1.append("kw1");
        _builder_1.newLine();
        _builder_1.append("kw2");
        _builder_1.newLine();
        it.setExpectation(_builder_1);
    };
    this._genericFormatterTester.assertFormatted(_function);
}
Also used : GenericFormatterTestRequest(org.eclipse.xtext.formatting2.internal.GenericFormatterTestRequest) KWList(org.eclipse.xtext.formatting2.internal.formattertestlanguage.KWList) IHiddenRegionFormatter(org.eclipse.xtext.formatting2.IHiddenRegionFormatter) IFormattableDocument(org.eclipse.xtext.formatting2.IFormattableDocument) MapBasedPreferenceValues(org.eclipse.xtext.preferences.MapBasedPreferenceValues) IFormattableSubDocument(org.eclipse.xtext.formatting2.IFormattableSubDocument) ITextRegionExtensions(org.eclipse.xtext.formatting2.regionaccess.ITextRegionExtensions) Extension(org.eclipse.xtext.xbase.lib.Extension) GenericFormatter(org.eclipse.xtext.formatting2.internal.GenericFormatter) ISubFormatter(org.eclipse.xtext.formatting2.ISubFormatter) Procedure1(org.eclipse.xtext.xbase.lib.Procedures.Procedure1) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) Test(org.junit.Test)

Aggregations

ISubFormatter (org.eclipse.xtext.formatting2.ISubFormatter)3 StringConcatenation (org.eclipse.xtend2.lib.StringConcatenation)2 IFormattableDocument (org.eclipse.xtext.formatting2.IFormattableDocument)2 IFormattableSubDocument (org.eclipse.xtext.formatting2.IFormattableSubDocument)2 IHiddenRegionFormatter (org.eclipse.xtext.formatting2.IHiddenRegionFormatter)2 GenericFormatter (org.eclipse.xtext.formatting2.internal.GenericFormatter)2 GenericFormatterTestRequest (org.eclipse.xtext.formatting2.internal.GenericFormatterTestRequest)2 KWList (org.eclipse.xtext.formatting2.internal.formattertestlanguage.KWList)2 ITextRegionExtensions (org.eclipse.xtext.formatting2.regionaccess.ITextRegionExtensions)2 MapBasedPreferenceValues (org.eclipse.xtext.preferences.MapBasedPreferenceValues)2 Extension (org.eclipse.xtext.xbase.lib.Extension)2 Procedure1 (org.eclipse.xtext.xbase.lib.Procedures.Procedure1)2 Test (org.junit.Test)2 FormattingNotApplicableException (org.eclipse.xtext.formatting2.FormattingNotApplicableException)1 ITextReplacer (org.eclipse.xtext.formatting2.ITextReplacer)1 ITextReplacerContext (org.eclipse.xtext.formatting2.ITextReplacerContext)1 ITextSegment (org.eclipse.xtext.formatting2.regionaccess.ITextSegment)1