use of com.eden.orchid.api.theme.pages.OrchidPage in project Orchid by JavaEden.
the class AssetsGenerator method startIndexing.
@Override
public List<? extends OrchidPage> startIndexing() {
List<OrchidResource> resourcesList = resources.getResourceEntries("assets", null, true);
List<OrchidPage> assets = new ArrayList<>();
for (OrchidResource entry : resourcesList) {
// entry.getReference().setBasePath("assets");
assets.add(new OrchidPage(entry));
}
return assets;
}
use of com.eden.orchid.api.theme.pages.OrchidPage in project Orchid by JavaEden.
the class PebbleWrapperTemplateFunction method doExecute.
private Object doExecute(Map<String, Object> args, EvaluationContext context) {
TemplateFunction freshFunction = contextProvider.get().resolve(functionClass);
Object pageVar = context.getVariable("page");
final OrchidPage actualPage;
if (pageVar instanceof OrchidPage) {
actualPage = (OrchidPage) pageVar;
} else {
actualPage = null;
}
freshFunction.extractOptions(contextProvider.get(), args);
Object output = freshFunction.apply(contextProvider.get(), actualPage);
if (freshFunction.isSafeString()) {
return new SafeString(output.toString());
} else {
return output;
}
}
use of com.eden.orchid.api.theme.pages.OrchidPage in project Orchid by JavaEden.
the class NonDynamicTabbedTagParser method render.
@Override
public void render(PebbleTemplateImpl self, Writer writer, EvaluationContextImpl context) throws IOException {
OrchidContext orchidContext = contextProvider.get();
// create a new tag
TemplateTag freshTag = orchidContext.resolve(tagClass);
// evaluate its own params and populate the main Tag class with them
Map<String, Object> evaluatedParamExpressionMap = evaluateParams(paramExpressionMap, self, context);
Object pageVar = context.getVariable("page");
final OrchidPage actualPage;
if (pageVar instanceof OrchidPage) {
actualPage = (OrchidPage) pageVar;
} else {
actualPage = null;
}
freshTag.extractOptions(orchidContext, evaluatedParamExpressionMap);
// populate the content of each tab
for (Map.Entry<String, Expression<?>> tagBodyExpression : tagBodyExpressions.entrySet()) {
// get the tab body content
String key = tagBodyExpression.getKey();
String bodyContent = StringUtils.toString(tagBodyExpression.getValue().evaluate(self, context)).trim();
// Get a new Tab instance, evaluate that tab's options, and then populate the Tab instance with them
TemplateTag.Tab tab = freshTag.getNewTab(key, bodyContent);
Map<String, Object> tabParams = evaluateParams(tagBodyParams.get(key), self, context);
tab.extractOptions(orchidContext, tabParams);
// add the tab to the Tag
freshTag.setContent(key, tab);
}
freshTag.onRender(orchidContext, actualPage);
if (freshTag.rendersContent()) {
writer.append(freshTag.renderContent(orchidContext, actualPage));
}
}
use of com.eden.orchid.api.theme.pages.OrchidPage in project Orchid by JavaEden.
the class DynamicTabbedTagParser method render.
@Override
public void render(PebbleTemplateImpl self, Writer writer, EvaluationContextImpl context) throws IOException {
OrchidContext orchidContext = contextProvider.get();
// create a new tag
TemplateTag freshTag = orchidContext.resolve(tagClass);
context.getScopeChain().pushScope(MapsKt.mapOf(new Pair<>("__parentTabbedTag", freshTag)));
// evaluate its own params and populate the main Tag class with them
Map<String, Object> evaluatedParamExpressionMap = evaluateParams(paramExpressionMap, self, context);
Object pageVar = context.getVariable("page");
final OrchidPage actualPage;
if (pageVar instanceof OrchidPage) {
actualPage = (OrchidPage) pageVar;
} else {
actualPage = null;
}
freshTag.extractOptions(orchidContext, evaluatedParamExpressionMap);
String bodyContent = StringUtils.toString(tagBodyExpression.evaluate(self, context)).trim();
TemplateTag.Tab tab = new TemplateTag.SimpleTab(null, null, bodyContent);
freshTag.onRender(orchidContext, actualPage);
if (freshTag.rendersContent()) {
writer.append(freshTag.renderContent(orchidContext, actualPage));
}
context.getScopeChain().popScope();
}
use of com.eden.orchid.api.theme.pages.OrchidPage in project Orchid by JavaEden.
the class GeneratorServiceTest method setUp.
@BeforeEach
public void setUp() {
context = mock(OrchidContext.class);
extractor = mock(OptionsExtractor.class);
theme = mock(Theme.class);
buildMetrics = new BuildMetrics(context);
internalIndex = new OrchidRootIndex(context, "internal");
when(context.resolve(OptionsExtractor.class)).thenReturn(extractor);
when(context.findTheme(any())).thenReturn(theme);
when(context.getIndex()).thenReturn(internalIndex);
when(context.includeDrafts()).thenReturn(false);
when(context.getEmbeddedData(anyString(), anyString())).thenReturn(new EdenPair<>("", new HashMap<>()));
generators = new HashSet<>();
mockPage1Reference = new OrchidReference(context, "page1.html");
mockPage1Resource = new StringResource(mockPage1Reference, "");
mockPage1 = spy(new OrchidPage(mockPage1Resource, RenderService.RenderMode.TEMPLATE, "mockPage1", ""));
pages1 = new ArrayList<>();
pages1.add(mockPage1);
generator1 = spy(new MockGenerator("gen1", OrchidGenerator.Stage.COLLECTION, pages1));
generators.add(generator1);
mockPage2Reference = new OrchidReference(context, "page2.html");
mockFreeableResource = spy(new OrchidResource(mockPage2Reference) {
@Nonnull
@Override
public InputStream getContentStream() {
return OrchidExtensionsKt.asInputStream("");
}
});
mockPage2 = spy(new OrchidPage(mockFreeableResource, RenderService.RenderMode.TEMPLATE, "mockPage2", ""));
pages2 = new ArrayList<>();
pages2.add(mockPage2);
generator2 = spy(new MockGenerator("gen2", OrchidGenerator.Stage.CONTENT, pages2));
generators.add(generator2);
pages3 = new ArrayList<>();
generator3 = new MockGenerator("gen3", OrchidGenerator.Stage.WARM_UP, pages3);
generator3 = spy(generator3);
generators.add(generator3);
when(context.resolveSet(OrchidGenerator.class)).thenReturn(generators);
// test the service directly
service = new GeneratorServiceImpl();
service.initialize(context);
// test that the default implementation is identical to the real implementation
underTest = new GeneratorService() {
public void initialize(OrchidContext context) {
}
public <T extends OrchidService> T getService(Class<T> serviceClass) {
return (T) service;
}
};
}
Aggregations