001package org.nasdanika.html.model.html.gen; 002 003import java.io.IOException; 004import java.io.InputStream; 005import java.util.Objects; 006 007import org.eclipse.emf.common.notify.impl.AdapterImpl; 008import org.eclipse.emf.ecore.EObject; 009import org.nasdanika.common.Context; 010import org.nasdanika.common.ExecutionException; 011import org.nasdanika.common.Function; 012import org.nasdanika.common.FunctionFactory; 013import org.nasdanika.common.ProgressMonitor; 014import org.nasdanika.common.Supplier; 015import org.nasdanika.common.SupplierFactory; 016import org.nasdanika.common.Util; 017import org.nasdanika.emf.EObjectAdaptable; 018import org.nasdanika.exec.content.Filter; 019import org.nasdanika.html.HTMLFactory; 020import org.nasdanika.html.TagName; 021import org.nasdanika.html.model.html.Script; 022 023public class ScriptSupplierFactoryAdapter extends AdapterImpl implements SupplierFactory<org.nasdanika.html.Tag> { 024 025 protected ScriptSupplierFactoryAdapter(Script script) { 026 setTarget(script); 027 } 028 029 private FunctionFactory<InputStream,org.nasdanika.html.Tag> filterFactory = ctx -> new Function<InputStream, org.nasdanika.html.Tag>() { 030 031 @Override 032 public double size() { 033 return 1; 034 } 035 036 @Override 037 public String name() { 038 return "Script"; 039 } 040 041 @Override 042 public org.nasdanika.html.Tag execute(InputStream input, ProgressMonitor progressMonitor) { 043 HTMLFactory htmlFactory = ctx.get(HTMLFactory.class, HTMLFactory.INSTANCE); 044 try { 045 return htmlFactory.tag(TagName.script, Util.toString(ctx, input)); 046 } catch (IOException e) { 047 throw new ExecutionException(e, this); 048 } 049 } 050 051 }; 052 053 @Override 054 public Supplier<org.nasdanika.html.Tag> create(Context context) { 055 EObject source = ((Filter) getTarget()).getSource(); 056 SupplierFactory<InputStream> ssf = Objects.requireNonNull(EObjectAdaptable.adaptToSupplierFactory(source, InputStream.class), "Cannot adapt to SupplierFactory: " + source); 057 return ssf.then(filterFactory).create(context); 058 } 059 060} 061