From c89014b915fb28acc20f8bcb97bef1ce9a2030ac Mon Sep 17 00:00:00 2001 From: Tim Voronov Date: Mon, 12 Nov 2018 22:26:02 -0500 Subject: [PATCH] Added SCROLL_TOP and SCROLL_BOTTOM (#174) --- pkg/stdlib/html/scroll.go | 56 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 pkg/stdlib/html/scroll.go diff --git a/pkg/stdlib/html/scroll.go b/pkg/stdlib/html/scroll.go new file mode 100644 index 000000000..41d4d2be9 --- /dev/null +++ b/pkg/stdlib/html/scroll.go @@ -0,0 +1,56 @@ +package html + +import ( + "context" + "github.com/MontFerret/ferret/pkg/html/dynamic" + "github.com/MontFerret/ferret/pkg/runtime/core" + "github.com/MontFerret/ferret/pkg/runtime/values" +) + +// ScrollTop Scrolls the document's window to its top. +// @param doc (Document) - Target document. +func ScrollTop(_ context.Context, args ...core.Value) (core.Value, error) { + err := core.ValidateArgs(args, 1, 1) + + if err != nil { + return values.None, err + } + + err = core.ValidateType(args[0], core.HTMLDocumentType) + + if err != nil { + return values.None, err + } + + doc, ok := args[0].(*dynamic.HTMLDocument) + + if !ok { + return values.None, core.Errors(core.ErrInvalidType, ErrNotDynamic) + } + + return values.None, doc.ScrollTop() +} + +// ScrollTop Scrolls the document's window to its bottom. +// @param doc (Document) - Target document. +func ScrollBottom(_ context.Context, args ...core.Value) (core.Value, error) { + err := core.ValidateArgs(args, 1, 1) + + if err != nil { + return values.None, err + } + + err = core.ValidateType(args[0], core.HTMLDocumentType) + + if err != nil { + return values.None, err + } + + doc, ok := args[0].(*dynamic.HTMLDocument) + + if !ok { + return values.None, core.Errors(core.ErrInvalidType, ErrNotDynamic) + } + + return values.None, doc.ScrollBottom() +}