* John Magolske <[email protected]> [120814 23:02]:
> I'm looking for a way to pipe the HTML of a page open in ELinks to
> another application without having to re-download the page.
>
> I have a ELinks mapping & script that automates saving a web-page
> to text -- with two keypresses the HTML is converted to text and
> automatically opened in Vim for editing & saving to an appropriate
> location. Very handy, but this approach uses URI passing and %c,
> which involves re-downloading the HTML source over the net.
> [...]
> What I'd like to be able to do is pipe the source of an open page
> through `elinks -dump` without an internet connection, and without
> having to manually save it somewhere first.
After reading a few helpful threads [1] from the archives of this list
and looking over the contrib/lua/hooks.lua file, I pieced together a
solution which seems to work fairly well. Not having much experience
with Lua, it's quite possible this can be more correct/clean. Any
suggestions for improvement are welcome. Might be time to pick up the
Programming in Lua book...
The relevant bits from my ~/.elinks/hooks.lua file:
-- Convert HTML to plaintext & open file in Vim
function save_to_text ()
-- See if we can obtain the local document.
local doc = current_document()
if doc then
-- Create a temporary file
local tmp = tmpname ()
-- Write document into the temporary file.
writeto (tmp) write (doc) writeto()
-- convert HTML to plaintext and open Vim in a new tmux window
execute(
"elinks -dump -no-references -no-numbering " ..tmp.. ">|" ..tmp..".txt
;\
echo \"\n\n[saved on: `date +%Y\/%m\/%d\\ %a\\ %k:%M\\ %Z` ]\" >>"
..tmp..".txt ;\
echo " ..current_url ().. " >>" ..tmp..".txt;\
tmux new-window -n vim-elink \"vim \""..tmp..".txt")
-- Tell elinks to delete after this function.
table.insert (tmp_files, tmp)
end
end
-- Convert HTML to markdown & open file in Vim
function save_to_markd ()
-- See if we can obtain the local document.
local doc = current_document()
if doc then
-- Create a temporary file
local tmp = tmpname ()
-- Write document into the temporary file.
writeto (tmp) write (doc) writeto()
-- convert HTML to markdown and open Vim in a new tmux window
execute(
"pandoc -r html -w markdown --no-wrap --reference-links " ..tmp.. ">|"
..tmp..".txt ;\
echo \"\n\n[saved on: `date +%Y\/%m\/%d\\ %a\\ %k:%M\\ %Z` ]\" >>"
..tmp..".txt ;\
echo " ..current_url ().. " >>" ..tmp..".txt ;\
tmux new-window -n vim-elink \"vim \"" ..tmp..".txt")
-- Tell elinks to delete after this function.
table.insert (tmp_files, tmp)
end
end
console_hook_functions = {
txt = save_to_text,
mkd = save_to_markd,
}
bind_key ("main", "Ctrl-H", save_to_text)
bind_key ("main", "Ctrl-G", save_to_markd)
----
[1]
http://archives.linuxfromscratch.org/mail-archives/elinks-users/2006-March/001109.html
http://archives.linuxfromscratch.org/mail-archives/elinks-users/2006-April/001120.html
Regards,
John
--
John Magolske
http://B79.net/contact
_______________________________________________
elinks-users mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-users