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