Instant /help
/*
{
Instant /help by jaytea
Displays information from the help file to the active
window. Ideal for a quick syntax reference or copying
and pasting excerpts from the help file to users in
a format that closely resembles the original.
Use /hf <search term> to look up '<search term>' and
display the matching section in the active window. By
default, /help has been overwritten to allow you to
use /help <search term> which might have become habit.
<search term> can contain wildcards; if more than one
result is found, you will be prompted to clarify which
one you want to view. For example:
/help /*
Prompts you to select a command to view information on.
/help /draw*
Choose a /draw command to view information on.
For questions, suggestions or comments related to this
snippet, please drop by #mSL on irc.swiftirc.net and
let me know.
Thanks to my man FiberOPtics for $_htmlconv().
}
*/
alias help hf $1- | if ($isid) returnex $chr(32) | ; Comment out or delete this line to get your old /help back.
alias hf {
if (!$isfile($scriptdirhf\mirc.hhk)) {
echo -eagc info Unable to find mirc.hhk. Try /hf_init to (re)initialize
return
}
if (!$hf_find($1-)) {
echo -eagc info No matches found.
}
}
on *:load:{
hf_init
}
alias hf_init {
if ($1 == 2) {
if ($isfile($scriptdirhf\mirc.hhk)) {
.timer $+ $ctimer off
echo -agc info2 Preparing data files ...
noop $findfile($scriptdirhf, *.htm, 0, hf_parse $1-)
hf_hhk
echo -agc info2 Initialization successfully completed.
}
return
}
var %chm = $findfile(., mirc.chm, 1).shortfn
if (!%chm) %chm = $findfile($nofile($mircini), mirc.chm, 1).shortfn
if (!%chm) {
echo -eagc info * Error: mirc.chm not found. Cannot proceed.
return
}
mkdir $qt($scriptdirhf)
if ($isfile($scriptdirhf\mirc.hhk)) .remove $qt($scriptdirhf\mirc.hhk)
run hh -decompile $shortfn($scriptdirhf) mirc.chm
echo -agc info2 Unpacking mirc.chm. Please wait ...
.timerhf -m 0 500 hf_init 2
}
; $hf_find(search term)
alias hf_find {
if (" isin $1) || ($1 == $null) return 0
if ($fopen(hff)) .fclose hff
if (!$isfile($scriptdirhf\mirc.hhk)) {
echo -eagc info * /hf_find: no such file $scriptdirhf\mirc.hhk
goto end
}
.fopen hff $qt($scriptdirhf\mirc.hhk)
var %search = $1"*"*, %result
.fseek -w hff %search
while (!$feof) {
tokenize 34 $fread(hff)
%result = %result $+ , $+ $iif($!?* iswm $1, $!! $+ $mid($1, 2), $1)
if ($len(%result) > 4000) break
.fseek -w hff %search
}
%result = $mid(%result, 2)
if (, isin %result) {
%result = $input(Multiple results found. Please select one:, m, Help!, , [ %result ] )
}
else %result = $eval(%result, 2)
if (!%result) return 0
.fseek hff 0
.fseek -w hff %result $+ "*
tokenize 34 $fread(hff)
.fclose hff
return $hf_load($2, $3)
:end
.fclose hff
}
; $hf_load(file, label)
alias hf_load {
if ($fopen(hfl)) .fclose hfl
if (!$isfile($scriptdirhf\ $+ $1)) {
echo -eagc info * /hf_load: no such file $scriptdirhf\ $+ $1
return 0
}
var %first
if ($2) {
noop $read($scriptdirhf\ $+ $1, wn, $qt($2))
if (!$readn) return 0
%first = $readn + 1
}
else %first = 1
noop $read($scriptdirhf\ $+ $1, wn, "*", %first)
loadbuf $+(%first, -, $iif($readn, $calc($v1 - 1), $lines($scriptdirhf\ $+ $1))) -ap $qt($scriptdirhf\ $+ $1)
return 1
}
; /hf_hhk
alias hf_hhk {
if ($fopen(hfh)) .fclose hfh
if (!$isfile($scriptdirhf\mirc.hhk)) {
echo -eagc info * /hf_hhk: no such file $scriptdirhf\mirc.hhk
goto end
}
.fopen hfh $qt($scriptdirhf\mirc.hhk)
noop $fread(hfh, $file($scriptdirhf\mirc.hhk).size, &hfh)
.fseek hfh 0
var %i = 1, %name
while ($bfind(&hfh, %i, name="Name")) {
%name = $gettok($bvar(&hfh, $v1, 100).text, 4, 34)
%i = $bfind(&hfh, $v1, name="Local")
tokenize 35 $gettok($bvar(&hfh, %i, 100).text, 4, 34)
.fwrite -n hfh $replace($+(%name, ", $1, ", $2), &, &, <, <, >, >, , $chr(32))
}
btrunc $qt($scriptdirhf\mirc.hhk) $fopen(hfh).pos
:end
.fclose hfh
}
; /hf_parse <file>
alias hf_parse {
if ($fopen(hfp)) .fclose hfp
if (!$isfile($1-)) {
echo -eagc info * /hf_parse: no such file $1-
goto end
}
.fopen hfp $qt($1-)
bunset &hfp
noop $fread(hfp, $file($1-).size, &hfp)
var %i = 1
while ($bfind(&hfp, %i, <a name=)) {
%i = 1 + $v1
bset &hfp $v1 < ! ! ! > < p >
if ($bfind(&hfp, $v1, ></a>)) {
bset &hfp $v1 < b r 32 >
%i = $v1
}
else {
echo -eagc info * /hf_parse: error #1 with $1-
goto end
}
}
var %list = f_Bolddefault,48 50,f_Heading1,50 31,f_Highlight,49 50,f_Subheading,48 52
var %i = 1
while ($bfind(&hfp, %i, <span class=")) {
var %label = $gettok($bvar(&hfp, $v1, 100).text, 2, 34)
%i = $v1
if (?? ?? iswm $replace(%label, [ %list ] )) {
%i = $bfind(&hfp, %i, >) - 5
bset &hfp %i " > 2 3 $v2
%i = $bfind(&hfp, %i, </span>)
bset &hfp %i 15 $iif($bvar(&hfp, %i, 11).text == </span></p>, < p > 160 32 32, < ! > < ! >)
}
else {
echo -eagc info * /hf_parse: error #2 with $1-
goto end
}
}
.fseek hfp 0
.fwrite -b hfp &hfp
.fclose hfp
if (!$_htmlconv($1-)) echo -eagc info * /hf_parse: error #3 with $1-
return
:end
.fclose hfp
}
; $_htmlconv
; Author: FiberOPtics - mirc.fiberoptics@gmail.com
;
alias _htmlconv {
if (!$isfile($1)) || ($os isin 9598) return 0
var %in = $shortfn($1), %out = $shortfn($2), %mss = mss $+ $ticks
if ($2 == $null) %out = %in
.comopen %mss MSScriptControl.ScriptControl
if ($comerr) return 0
var %t, %n = $crlf
%t = $com(%mss,language,4,bstr*,vbscript)
%t = $&
set html = createobject("htmlfile") %n $&
set fso = createobject("scripting.filesystemobject") %n $&
set inf = fso.opentextfile( $+(",%in,") ) %n $&
src = inf.readall %n $&
inf.close %n $&
html.write "<html><body>" & src & "</body></html>" %n $&
set outf = fso.createtextfile( $+(",%out,") ,true) %n $&
outf.write html.body.innertext %n $&
outf.close
%t = $com(%mss,executestatement,1,bstr*,%t)
.comclose %mss
return %t
:error
if ($com(%mss)) .comclose %mss
return 0
}
Comments 0