diff --git a/console.vbs b/console.vbs index 229cc10..c01f5ed 100644 --- a/console.vbs +++ b/console.vbs @@ -4,147 +4,138 @@ On Error Resume Next Private input, output, runButton, clearButton Private Sub ConsoleLog(message, color) - Dim entry - Set entry = document.createElement("div") - With entry.style - .margin = "0" - .padding = "1px" - .borderBottom = "1px solid lightgray" - If Not IsNull(color) Then - .color = color - End If - End With - entry.appendChild(document.createTextNode(CStr(message))) - output.appendChild(entry) + Dim entry + Set entry = document.createElement("div") + With entry.style + .margin = "0" + .padding = "1px" + .borderBottom = "1px solid lightgray" + If Not IsNull(color) Then + .color = color + End If + End With + entry.appendChild(document.createTextNode(CStr(message))) + output.appendChild(entry) End Sub Sub Log(message) - ConsoleLog message, Null + ConsoleLog message, Null End Sub Sub Debug(message) - ConsoleLog message, "darkgray" + ConsoleLog message, "darkgray" End Sub Sub Info(message) - ConsoleLog message, Null + ConsoleLog message, Null End Sub Sub Warn(message) - ConsoleLog message, "orange" + ConsoleLog message, "orange" End Sub Sub Error(message) - ConsoleLog message, "red" + ConsoleLog message, "red" End Sub Sub Assert(condition, message) - If Not condition Then - Error message - End If + If Not condition Then + Error message + End If End Sub Sub Clear - output.innerHTML = "" + output.innerHTML = "" End Sub Private Function RemoveCr (text) - RemoveCr = Replace(text, vbCrLf, vbLf) + RemoveCr = Replace(text, vbCrLf, vbLf) End Function Private Function GetSelectedText (element) - Dim normalizedValue, range, inputRange, endRange - Set range = document.selection.createRange() - If Not IsNull(range) And range.parentElement() = element Then - normalizedValue = RemoveCr(element.value) - Set inputRange = element.createTextRange() - inputRange.moveToBookmark range.getBookmark() - Set endRange = element.createTextRange() - endRange.collapse False - - 'Selection does not begin at the end of the input - If inputRange.compareEndPoints("StartToEnd", endRange) < 0 Then - Dim selectionStart, selectionEnd - selectionStart = UBound(Split(Right(normalizedValue, Len(normalizedValue) - selectionStart), vbLf)) - inputRange.moveStart("character", -Len(element.value)) - - selectionEnd = Len(element.value) - If inputRange.compareEndPoints("EndToEnd", endRange) < 0 Then - selectionEnd = UBound(Split(Right(normalizedValue, Len(normalizedValue) - selectionEnd), vbCrLf)) - inputRange.moveEnd("character", -Len(element.value)) - End If - - GetSelectedText = Left(Right(element.value, Len(element.value) - selectionStart), selectionEnd - selectionStart) - Else - GetSelectedText = "" - End If - - Else - GetSelectedText = "" - End If + Dim normalizedValue, range, inputRange, endRange + Set range = document.selection.createRange() + If Not IsNull(range) And range.parentElement() = element Then + normalizedValue = RemoveCr(element.value) + Set inputRange = element.createTextRange() + inputRange.moveToBookmark range.getBookmark() + Set endRange = element.createTextRange() + endRange.collapse False + + 'Selection does not begin at the end of the input + If inputRange.compareEndPoints("StartToEnd", endRange) < 0 Then + Dim selectionStart, selectionEnd + selectionStart = UBound(Split(Right(normalizedValue, Len(normalizedValue) - selectionStart), vbLf)) - inputRange.moveStart("character", -Len(element.value)) + + selectionEnd = Len(element.value) + If inputRange.compareEndPoints("EndToEnd", endRange) < 0 Then + selectionEnd = UBound(Split(Right(normalizedValue, Len(normalizedValue) - selectionEnd), vbCrLf)) - inputRange.moveEnd("character", -Len(element.value)) + End If + + GetSelectedText = Left(Right(element.value, Len(element.value) - selectionStart), selectionEnd - selectionStart) + Else + GetSelectedText = "" + End If + Else + GetSelectedText = "" + End If End Function Private Sub Run - Dim selected, code - selected = GetSelectedText(input) - code = selected - If IsEmpty(selected) Then - code = input.value - End If - If IsEmpty(Trim(code)) Then - Exit Sub - End If - ConsoleLog code, "lightblue" - Err.Clear - Execute code - If Err.Number <> 0 Then - Error "Error " & Err.Number & " at " & Err.Source & ": " & Err.Description - End If + Dim selected, code + selected = GetSelectedText(input) + code = selected + If IsEmpty(selected) Then code = input.value + If IsEmpty(Trim(code)) Then Exit Sub + ConsoleLog code, "lightblue" + Err.Clear + Execute code + If Err.Number <> 0 Then + Error "Error " & Err.Number & " at " & Err.Source & ": " & Err.Description + End If End Sub Private Sub InputKeyPress - If window.event.keyCode = 13 And window.event.shiftKey Then - Run - End If + If window.event.keyCode = 13 And window.event.shiftKey Then Run End Sub 'Auto-detect the wizard's browser extensions Private Function InWebWizard() - InWebWizard = TypeName(window.external) = "INewWDEvents" + InWebWizard = TypeName(window.external) = "INewWDEvents" End Function Private Function InIE7() - InIE7 = InStr(navigator.userAgent, "MSIE 7.0") + InIE7 = InStr(navigator.userAgent, "MSIE 7.0") End Function Sub window_onload - With document - Set input = .getElementById("input") - Set output = .getElementById("output") - Set runButton = .getElementById("runButton") - Set clearButton = .getElementById("clearButton") - End With + With document + Set input = .getElementById("input") + Set output = .getElementById("output") + Set runButton = .getElementById("runButton") + Set clearButton = .getElementById("clearButton") + End With - runButton.onclick = GetRef("Run") - clearButton.onclick = GetRef("Clear") - input.onkeypress = GetRef("InputKeyPress") + runButton.onclick = GetRef("Run") + clearButton.onclick = GetRef("Clear") + input.onkeypress = GetRef("InputKeyPress") - If InWebWizard() Then - window.external.SetHeaderText "VBScript Console", "Explore this wizard's VBScript environment." - window.external.SetWizardButtons True, False, False - End If + If InWebWizard() Then + window.external.SetHeaderText "VBScript Console", "Explore this wizard's VBScript environment." + window.external.SetWizardButtons True, False, False + End If - 'For some reason, IE 7 messes up the textarea's width and height - 'pretty badly. We hardcode the height, removing a little margin, - 'and add some margin to the output. - 'Setting the input's width causes it to somehow divide itself by 2 on every keystroke. - If InIE7() Then - input.style.height = document.documentElement.clientHeight - 7 & "px" - output.style.marginLeft = "7px" - End If + 'For some reason, IE 7 messes up the textarea's width and height + 'pretty badly. We hardcode the height, removing a little margin, + 'and add some margin to the output. + 'Setting the input's width causes it to somehow divide itself by 2 on every keystroke. + If InIE7() Then + input.style.height = document.documentElement.clientHeight - 7 & "px" + output.style.marginLeft = "7px" + End If End Sub 'The web wizard specification requires every page to have an OnBack procedure Sub OnBack - If InWebWizard() Then - window.external.FinalBack - End If + If InWebWizard() Then window.external.FinalBack End Sub \ No newline at end of file