tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

functions.tentative.window.js (4835B)


      1 const xslt_functions = [
      2  "QName",
      3  "abs",
      4  "accumulator-after",
      5  "accumulator-before",
      6  "adjust-date-to-timezone",
      7  "adjust-dateTime-to-timezone",
      8  "adjust-time-to-timezone",
      9  "analyze-string",
     10  "apply",
     11  "available-environment-variables",
     12  "available-system-properties",
     13  "avg",
     14  "base-uri",
     15  "boolean",
     16  "ceiling",
     17  "codepoint-equal",
     18  "codepoints-to-string",
     19  "collation-key",
     20  "collection",
     21  "compare",
     22  "concat",
     23  "contains",
     24  "contains-token",
     25  "copy-of",
     26  "count",
     27  "current",
     28  "current-date",
     29  "current-dateTime",
     30  "current-group",
     31  "current-grouping-key",
     32  "current-merge-group",
     33  "current-merge-key",
     34  "current-output-uri",
     35  "current-time",
     36  "data",
     37  "dateTime",
     38  "day-from-date",
     39  "day-from-dateTime",
     40  "days-from-duration",
     41  "deep-equal",
     42  "default-collation",
     43  "default-language",
     44  "distinct-values",
     45  "doc",
     46  "doc-available",
     47  "document",
     48  "document-uri",
     49  "element-available",
     50  "element-with-id",
     51  "empty",
     52  "encode-for-uri",
     53  "ends-with",
     54  "environment-variable",
     55  "error",
     56  "escape-html-uri",
     57  "exactly-one",
     58  "exists",
     59  "false",
     60  "filter",
     61  "floor",
     62  "fold-left",
     63  "fold-right",
     64  "for-each",
     65  "for-each-pair",
     66  "format-date",
     67  "format-dateTime",
     68  "format-integer",
     69  "format-number",
     70  "format-time",
     71  "function-arity",
     72  "function-available",
     73  "function-lookup",
     74  "function-name",
     75  "generate-id",
     76  "has-children",
     77  "head",
     78  "hours-from-dateTime",
     79  "hours-from-duration",
     80  "hours-from-time",
     81  "id",
     82  "idref",
     83  "implicit-timezone",
     84  "in-scope-prefixes",
     85  "index-of",
     86  "innermost",
     87  "insert-before",
     88  "iri-to-uri",
     89  "json-doc",
     90  "json-to-xml",
     91  "key",
     92  "lang",
     93  "last",
     94  "load-xquery-module",
     95  "local-name",
     96  "local-name-from-QName",
     97  "lower-case",
     98  "matches",
     99  "max",
    100  "min",
    101  "minutes-from-dateTime",
    102  "minutes-from-duration",
    103  "minutes-from-time",
    104  "month-from-date",
    105  "month-from-dateTime",
    106  "months-from-duration",
    107  "name",
    108  "namespace-uri",
    109  "namespace-uri-for-prefix",
    110  "namespace-uri-from-QName",
    111  "nilled",
    112  "node-name",
    113  "normalize-space",
    114  "normalize-unicode",
    115  "not",
    116  "number",
    117  "one-or-more",
    118  "outermost",
    119  "parse-ietf-date",
    120  "parse-json",
    121  "parse-xml",
    122  "parse-xml-fragment",
    123  "path",
    124  "position",
    125  "prefix-from-QName",
    126  "put",
    127  "random-number-generator",
    128  "regex-group",
    129  "remove",
    130  "replace",
    131  "resolve-QName",
    132  "resolve-uri",
    133  "reverse",
    134  "root",
    135  "round",
    136  "round-half-to-even",
    137  "seconds-from-dateTime",
    138  "seconds-from-duration",
    139  "seconds-from-time",
    140  "serialize",
    141  "snapshot",
    142  "sort",
    143  "starts-with",
    144  "static-base-uri",
    145  "stream-available",
    146  "string",
    147  "string-join",
    148  "string-length",
    149  "string-to-codepoints",
    150  "subsequence",
    151  "substring",
    152  "substring-after",
    153  "substring-before",
    154  "sum",
    155  "system-property",
    156  "tail",
    157  "timezone-from-date",
    158  "timezone-from-dateTime",
    159  "timezone-from-time",
    160  "tokenize",
    161  "trace",
    162  "transform",
    163  "translate",
    164  "true",
    165  "type-available",
    166  "unordered",
    167  "unparsed-entity-public-id",
    168  "unparsed-entity-uri",
    169  "unparsed-text",
    170  "unparsed-text-available",
    171  "unparsed-text-lines",
    172  "upper-case",
    173  "uri-collection",
    174  "xml-to-json",
    175  "year-from-date",
    176  "year-from-dateTime",
    177  "years-from-duration",
    178  "zero-or-one",
    179 ];
    180 
    181 const xslt1_functions = [
    182  "boolean",
    183  "ceiling",
    184  "concat",
    185  "contains",
    186  "count",
    187  "current",
    188  "document",
    189  "element-available",
    190  "false",
    191  "floor",
    192  "format-number",
    193  "function-available",
    194  "generate-id",
    195  "id",
    196  "key",
    197  "lang",
    198  "last",
    199  "local-name",
    200  "name",
    201  "namespace-uri",
    202  "normalize-space",
    203  "not",
    204  "number",
    205  "position",
    206  "round",
    207  "starts-with",
    208  "string",
    209  "string-length",
    210  "substring",
    211  "substring-after",
    212  "substring-before",
    213  "sum",
    214  "system-property",
    215  "translate",
    216  "true",
    217  "unparsed-entity-uri",
    218 ];
    219 
    220 for (const fn of xslt_functions) {
    221  test(() => {
    222    const xsltSrc = `<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    223 <xsl:output method="html" encoding="utf-8" version="5"/>
    224 <xsl:template match="/">
    225      <xsl:choose>
    226        <xsl:when test='function-available("${fn}")'>
    227          <div>available</div>
    228        </xsl:when>
    229        <xsl:otherwise>
    230          <div>unavailable</div>
    231        </xsl:otherwise>
    232      </xsl:choose>
    233 </xsl:template>
    234 </xsl:stylesheet>`;
    235 
    236    const processor = new XSLTProcessor();
    237    const parser = new DOMParser();
    238    processor.importStylesheet(
    239      parser.parseFromString(xsltSrc, "application/xml")
    240    );
    241    const output = processor.transformToFragment(
    242      parser.parseFromString("<x/>", "application/xml"),
    243      document
    244    );
    245 
    246    // Note we only expect functions defined in XSLT 1.0 to be defined.
    247    assert_equals(
    248      output.textContent.trim(),
    249      xslt1_functions.indexOf(fn) >= 0 ? "available" : "unavailable"
    250    );
    251  }, fn);
    252 }