{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.XPathEvaluator
       (newXPathEvaluator, createExpression, createExpression_,
        createNSResolver, createNSResolver_, evaluate, evaluate_,
        XPathEvaluator(..), gTypeXPathEvaluator)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation> 
newXPathEvaluator :: (MonadDOM m) => m XPathEvaluator
newXPathEvaluator :: forall (m :: * -> *). MonadDOM m => m XPathEvaluator
newXPathEvaluator
  = DOM XPathEvaluator -> m XPathEvaluator
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSVal -> XPathEvaluator
XPathEvaluator (JSVal -> XPathEvaluator) -> JSM JSVal -> DOM XPathEvaluator
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> JSM JSVal -> () -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new (String -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg String
"XPathEvaluator") ())

-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
createExpression ::
                 (MonadDOM m, ToJSString expression) =>
                   XPathEvaluator ->
                     Maybe expression -> Maybe XPathNSResolver -> m XPathExpression
createExpression :: forall (m :: * -> *) expression.
(MonadDOM m, ToJSString expression) =>
XPathEvaluator
-> Maybe expression -> Maybe XPathNSResolver -> m XPathExpression
createExpression XPathEvaluator
self Maybe expression
expression Maybe XPathNSResolver
resolver
  = DOM XPathExpression -> m XPathExpression
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((XPathEvaluator
self XPathEvaluator
-> Getting (JSM JSVal) XPathEvaluator (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createExpression"
          [Maybe expression -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe expression
expression, Maybe XPathNSResolver -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe XPathNSResolver
resolver])
         JSM JSVal -> (JSVal -> DOM XPathExpression) -> DOM XPathExpression
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM XPathExpression
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
createExpression_ ::
                  (MonadDOM m, ToJSString expression) =>
                    XPathEvaluator -> Maybe expression -> Maybe XPathNSResolver -> m ()
createExpression_ :: forall (m :: * -> *) expression.
(MonadDOM m, ToJSString expression) =>
XPathEvaluator -> Maybe expression -> Maybe XPathNSResolver -> m ()
createExpression_ XPathEvaluator
self Maybe expression
expression Maybe XPathNSResolver
resolver
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (XPathEvaluator
self XPathEvaluator
-> Getting (JSM JSVal) XPathEvaluator (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createExpression"
            [Maybe expression -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe expression
expression, Maybe XPathNSResolver -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe XPathNSResolver
resolver]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
createNSResolver ::
                 (MonadDOM m, IsNode nodeResolver) =>
                   XPathEvaluator -> Maybe nodeResolver -> m XPathNSResolver
createNSResolver :: forall (m :: * -> *) nodeResolver.
(MonadDOM m, IsNode nodeResolver) =>
XPathEvaluator -> Maybe nodeResolver -> m XPathNSResolver
createNSResolver XPathEvaluator
self Maybe nodeResolver
nodeResolver
  = DOM XPathNSResolver -> m XPathNSResolver
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((XPathEvaluator
self XPathEvaluator
-> Getting (JSM JSVal) XPathEvaluator (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createNSResolver" [Maybe nodeResolver -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe nodeResolver
nodeResolver]) JSM JSVal -> (JSVal -> DOM XPathNSResolver) -> DOM XPathNSResolver
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM XPathNSResolver
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
createNSResolver_ ::
                  (MonadDOM m, IsNode nodeResolver) =>
                    XPathEvaluator -> Maybe nodeResolver -> m ()
createNSResolver_ :: forall (m :: * -> *) nodeResolver.
(MonadDOM m, IsNode nodeResolver) =>
XPathEvaluator -> Maybe nodeResolver -> m ()
createNSResolver_ XPathEvaluator
self Maybe nodeResolver
nodeResolver
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (XPathEvaluator
self XPathEvaluator
-> Getting (JSM JSVal) XPathEvaluator (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"createNSResolver" [Maybe nodeResolver -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe nodeResolver
nodeResolver]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
evaluate ::
         (MonadDOM m, ToJSString expression, IsNode contextNode) =>
           XPathEvaluator ->
             Maybe expression ->
               Maybe contextNode ->
                 Maybe XPathNSResolver ->
                   Maybe Word -> Maybe XPathResult -> m XPathResult
evaluate :: forall (m :: * -> *) expression contextNode.
(MonadDOM m, ToJSString expression, IsNode contextNode) =>
XPathEvaluator
-> Maybe expression
-> Maybe contextNode
-> Maybe XPathNSResolver
-> Maybe Word
-> Maybe XPathResult
-> m XPathResult
evaluate XPathEvaluator
self Maybe expression
expression Maybe contextNode
contextNode Maybe XPathNSResolver
resolver Maybe Word
type' Maybe XPathResult
inResult
  = DOM XPathResult -> m XPathResult
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((XPathEvaluator
self XPathEvaluator
-> Getting (JSM JSVal) XPathEvaluator (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"evaluate"
          [Maybe expression -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe expression
expression, Maybe contextNode -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe contextNode
contextNode, Maybe XPathNSResolver -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe XPathNSResolver
resolver,
           Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
type', Maybe XPathResult -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe XPathResult
inResult])
         JSM JSVal -> (JSVal -> DOM XPathResult) -> DOM XPathResult
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM XPathResult
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
evaluate_ ::
          (MonadDOM m, ToJSString expression, IsNode contextNode) =>
            XPathEvaluator ->
              Maybe expression ->
                Maybe contextNode ->
                  Maybe XPathNSResolver -> Maybe Word -> Maybe XPathResult -> m ()
evaluate_ :: forall (m :: * -> *) expression contextNode.
(MonadDOM m, ToJSString expression, IsNode contextNode) =>
XPathEvaluator
-> Maybe expression
-> Maybe contextNode
-> Maybe XPathNSResolver
-> Maybe Word
-> Maybe XPathResult
-> m ()
evaluate_ XPathEvaluator
self Maybe expression
expression Maybe contextNode
contextNode Maybe XPathNSResolver
resolver Maybe Word
type' Maybe XPathResult
inResult
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (XPathEvaluator
self XPathEvaluator
-> Getting (JSM JSVal) XPathEvaluator (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"evaluate"
            [Maybe expression -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe expression
expression, Maybe contextNode -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe contextNode
contextNode, Maybe XPathNSResolver -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe XPathNSResolver
resolver,
             Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
type', Maybe XPathResult -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe XPathResult
inResult]))