<RefactorLibrary>
<!--
Description: Map MSScriptControl API to ClearScript API

Activation:

   <Registry type="MigFile" source="msscript.ocx" target="mig.mscript.ocx.ClearScript" />

See: Introduction to Windows Script Technologies
https://docs.microsoft.com/en-us/previous-versions/tn-archive/ee176792(v=technet.10)

See: ClearScript is an open source project on GitHub:
https://github.com/microsoft/ClearScript

Notes: 

If BuildFile==off, use libType=LocalImport" to suppress ActiveX interop conventions.
else use libType=Internal" to suppress stub generation and reference.

The concept of Modules id not present in ClearScript. I found using a ScriptEngine
instance is adequate for most purposes.  Modules have migStatus=static to 
to remove instance creation and destruction. Some additional work is typically needed.
-->
<Refactor id="[msscript.ocx]">
<Migrate location="..\bin\ClearScript.dll"
         migName="Microsoft.ClearScript.Windows"
         assemblyName="ClearScript"
         libtype="localImport"
/>

<Migrate id="IScriptControl.AddCode" migName="Execute" />
<Migrate id="IScriptControl.Run" type="Variant" nPram="3" cshPattern="((object)%1d.Script.%2u(%3d))" vbnPattern="(%1d.Evaluate(String.Format(\s%2u({0}, {1})\s,%3d)))" />
<Migrate id="IScriptControl.Run.Parameters" type="Object"  status="ParamArray" />
<Migrate id="IScriptControl.Language" migStatus="delete" />
<Migrate id="IScriptControl.Eval" migName="Evaluate" />
<Migrate id="IScriptControl.AddCode" migName="ExecuteCommand" />
<Migrate id="IScriptControl.AddObject" migName="AddHostObject" />
<Migrate id="IScriptControl.AddObject.AddMembers" optional="DEF.Overload" />

<Migrate id="IScriptModule.AddCode" migName="ExecuteCommand" />
<Migrate id="IScriptModule.Run" migName="Execute" />
<Migrate id="IScriptModule.Run.Parameters" status="ParamArray" />

<!--
Not used for %P approach
<Migrate id="IScriptModuleCollection.Add" migStatus="delete"/>
-->
<Migrate id="IScriptModuleCollection.Add" nPram="3" migPattern="%1P" />
<Migrate id="IScriptModuleCollection.Add.Object" status="ByVal" />

<!--
Not used for %P approach
<Migrate id="Module" migName="VBScriptEngine" role="define" migStatus="static"/>
-->
<Migrate id="Module" migName="VBScriptEngine" role="define" />
<Migrate id="ScriptControl" migPattern="VBScriptEngine" role="define" migStatus=""/>

<migClass id="NetControl.ScriptControl"
          parent="ScriptControl">
<!-- no designer code for this component -->
</migClass> 

</Refactor>
</RefactorLibrary>
