1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-12-04 14:46:47 -05:00
elinks/src/scripting/python/document.c
2022-01-29 12:21:13 +01:00

119 lines
3.0 KiB
C

/* Information about current document and current link for Python. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "scripting/python/pythoninc.h"
#include "elinks.h"
#include "cache/cache.h"
#include "document/document.h"
#include "document/view.h"
#include "scripting/python/core.h"
#include "scripting/python/document.h"
#include "session/session.h"
/* Python interface to get the current document's body. */
char python_current_document_doc[] =
PYTHON_DOCSTRING("current_document() -> string or None\n\
\n\
If a document is being viewed, return its body; otherwise return None.\n");
PyObject *
python_current_document(PyObject *self, PyObject *args)
{
if (python_ses && python_ses->doc_view
&& python_ses->doc_view->document) {
struct cache_entry *cached = python_ses->doc_view->document->cached;
struct fragment *f = (struct fragment *)(cached ? cached->frag.next : NULL);
if (f) return PyUnicode_FromStringAndSize(f->data, f->length);
}
Py_INCREF(Py_None);
return Py_None;
}
/* Python interface to get the current document's header. */
char python_current_header_doc[] =
PYTHON_DOCSTRING("current_header() -> string or None\n\
\n\
If a document is being viewed and it has a header, return the header;\n\
otherwise return None.\n");
PyObject *
python_current_header(PyObject *self, PyObject *args)
{
if (python_ses && python_ses->doc_view
&& python_ses->doc_view->document) {
struct cache_entry *cached = python_ses->doc_view->document->cached;
if (cached && cached->head)
return PyUnicode_FromString(cached->head);
}
Py_INCREF(Py_None);
return Py_None;
}
/* Python interface to get the currently-selected link's URL. */
char python_current_link_url_doc[] =
PYTHON_DOCSTRING("current_link_url() -> string or None\n\
\n\
If a link is selected, return its URL; otherwise return None.\n");
PyObject *
python_current_link_url(PyObject *self, PyObject *args)
{
char url[MAX_STR_LEN];
if (python_ses && get_current_link_url(python_ses, url, MAX_STR_LEN))
return PyUnicode_FromString(url);
Py_INCREF(Py_None);
return Py_None;
}
/* Python interface to get the current document's title. */
char python_current_title_doc[] =
PYTHON_DOCSTRING("current_title() -> string or None\n\
\n\
If a document is being viewed, return its title; otherwise return None.\n");
PyObject *
python_current_title(PyObject *self, PyObject *args)
{
char title[MAX_STR_LEN];
if (python_ses && get_current_title(python_ses, title, MAX_STR_LEN))
return PyUnicode_FromString(title);
Py_INCREF(Py_None);
return Py_None;
}
/* Python interface to get the current document's URL. */
char python_current_url_doc[] =
PYTHON_DOCSTRING("current_url() -> string or None\n\
\n\
If a document is being viewed, return its URL; otherwise return None.\n");
PyObject *
python_current_url(PyObject *self, PyObject *args)
{
char url[MAX_STR_LEN];
if (python_ses && get_current_url(python_ses, url, MAX_STR_LEN))
return PyUnicode_FromString(url);
Py_INCREF(Py_None);
return Py_None;
}