package com.stardust.autojs.script; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.stardust.io.ConcatReader; import java.io.Reader; import java.io.StringReader; /** * Created by Stardust on 2017/4/2. */ public class SequenceScriptSource extends ScriptSource { private String mScript; private ScriptSource mSecondScriptSource; private ScriptSource mFirstScriptSource; public SequenceScriptSource(String name, ScriptSource firstScriptSource, ScriptSource secondScriptSource) { super(name); mSecondScriptSource = secondScriptSource; mFirstScriptSource = firstScriptSource; } @NonNull @Override public String getScript() { concatScriptsIfNeeded(); return mScript; } private void concatScriptsIfNeeded() { if (mScript != null) return; mScript = mFirstScriptSource.getScript() + mSecondScriptSource.getScript(); } @Nullable @Override public Reader getScriptReader() { if (mScript != null) return new StringReader(mScript); return new ConcatReader(mFirstScriptSource.getNonNullScriptReader(), mSecondScriptSource.getNonNullScriptReader()); } @Override public String toString() { return mSecondScriptSource.toString(); } }