github.com/jancarloviray/community@v0.41.1-0.20170124221257-33a66c87cf2f/app/public/codemirror/mode/javascript/test.js (about)

     1  // CodeMirror, copyright (c) by Marijn Haverbeke and others
     2  // Distributed under an MIT license: http://codemirror.net/LICENSE
     3  
     4  (function() {
     5    var mode = CodeMirror.getMode({indentUnit: 2}, "javascript");
     6    function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
     7  
     8    MT("locals",
     9       "[keyword function] [def foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }");
    10  
    11    MT("comma-and-binop",
    12       "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }");
    13  
    14    MT("destructuring",
    15       "([keyword function]([def a], [[[def b], [def c] ]]) {",
    16       "  [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);",
    17       "  [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];",
    18       "})();");
    19  
    20    MT("class_body",
    21       "[keyword class] [def Foo] {",
    22       "  [property constructor]() {}",
    23       "  [property sayName]() {",
    24       "    [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];",
    25       "  }",
    26       "}");
    27  
    28    MT("class",
    29       "[keyword class] [def Point] [keyword extends] [variable SuperThing] {",
    30       "  [property get] [property prop]() { [keyword return] [number 24]; }",
    31       "  [property constructor]([def x], [def y]) {",
    32       "    [keyword super]([string 'something']);",
    33       "    [keyword this].[property x] [operator =] [variable-2 x];",
    34       "  }",
    35       "}");
    36  
    37    MT("import",
    38       "[keyword function] [def foo]() {",
    39       "  [keyword import] [def $] [keyword from] [string 'jquery'];",
    40       "  [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];",
    41       "}");
    42  
    43    MT("const",
    44       "[keyword function] [def f]() {",
    45       "  [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];",
    46       "}");
    47  
    48    MT("for/of",
    49       "[keyword for]([keyword let] [def of] [keyword of] [variable something]) {}");
    50  
    51    MT("generator",
    52       "[keyword function*] [def repeat]([def n]) {",
    53       "  [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])",
    54       "    [keyword yield] [variable-2 i];",
    55       "}");
    56  
    57    MT("quotedStringAddition",
    58       "[keyword let] [def f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];");
    59  
    60    MT("quotedFatArrow",
    61       "[keyword let] [def f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];");
    62  
    63    MT("fatArrow",
    64       "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);",
    65       "[variable a];", // No longer in scope
    66       "[keyword let] [def f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];",
    67       "[variable c];");
    68  
    69    MT("spread",
    70       "[keyword function] [def f]([def a], [meta ...][def b]) {",
    71       "  [variable something]([variable-2 a], [meta ...][variable-2 b]);",
    72       "}");
    73  
    74    MT("comprehension",
    75       "[keyword function] [def f]() {",
    76       "  [[([variable x] [operator +] [number 1]) [keyword for] ([keyword var] [def x] [keyword in] [variable y]) [keyword if] [variable pred]([variable-2 x]) ]];",
    77       "  ([variable u] [keyword for] ([keyword var] [def u] [keyword of] [variable generateValues]()) [keyword if] ([variable-2 u].[property color] [operator ===] [string 'blue']));",
    78       "}");
    79  
    80    MT("quasi",
    81       "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
    82  
    83    MT("quasi_no_function",
    84       "[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]");
    85  
    86    MT("indent_statement",
    87       "[keyword var] [def x] [operator =] [number 10]",
    88       "[variable x] [operator +=] [variable y] [operator +]",
    89       "  [atom Infinity]",
    90       "[keyword debugger];");
    91  
    92    MT("indent_if",
    93       "[keyword if] ([number 1])",
    94       "  [keyword break];",
    95       "[keyword else] [keyword if] ([number 2])",
    96       "  [keyword continue];",
    97       "[keyword else]",
    98       "  [number 10];",
    99       "[keyword if] ([number 1]) {",
   100       "  [keyword break];",
   101       "} [keyword else] [keyword if] ([number 2]) {",
   102       "  [keyword continue];",
   103       "} [keyword else] {",
   104       "  [number 10];",
   105       "}");
   106  
   107    MT("indent_for",
   108       "[keyword for] ([keyword var] [def i] [operator =] [number 0];",
   109       "     [variable i] [operator <] [number 100];",
   110       "     [variable i][operator ++])",
   111       "  [variable doSomething]([variable i]);",
   112       "[keyword debugger];");
   113  
   114    MT("indent_c_style",
   115       "[keyword function] [def foo]()",
   116       "{",
   117       "  [keyword debugger];",
   118       "}");
   119  
   120    MT("indent_else",
   121       "[keyword for] (;;)",
   122       "  [keyword if] ([variable foo])",
   123       "    [keyword if] ([variable bar])",
   124       "      [number 1];",
   125       "    [keyword else]",
   126       "      [number 2];",
   127       "  [keyword else]",
   128       "    [number 3];");
   129  
   130    MT("indent_funarg",
   131       "[variable foo]([number 10000],",
   132       "    [keyword function]([def a]) {",
   133       "  [keyword debugger];",
   134       "};");
   135  
   136    MT("indent_below_if",
   137       "[keyword for] (;;)",
   138       "  [keyword if] ([variable foo])",
   139       "    [number 1];",
   140       "[number 2];");
   141  
   142    MT("multilinestring",
   143       "[keyword var] [def x] [operator =] [string 'foo\\]",
   144       "[string bar'];");
   145  
   146    MT("scary_regexp",
   147       "[string-2 /foo[[/]]bar/];");
   148  
   149    MT("indent_strange_array",
   150       "[keyword var] [def x] [operator =] [[",
   151       "  [number 1],,",
   152       "  [number 2],",
   153       "]];",
   154       "[number 10];");
   155  
   156    MT("param_default",
   157       "[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {",
   158       "  [keyword return] [variable-2 x];",
   159       "}");
   160  
   161    MT("new_target",
   162       "[keyword function] [def F]([def target]) {",
   163       "  [keyword if] ([variable-2 target] [operator &&] [keyword new].[keyword target].[property name]) {",
   164       "    [keyword return] [keyword new]",
   165       "      .[keyword target];",
   166       "  }",
   167       "}");
   168  
   169    var jsonld_mode = CodeMirror.getMode(
   170      {indentUnit: 2},
   171      {name: "javascript", jsonld: true}
   172    );
   173    function LD(name) {
   174      test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1));
   175    }
   176  
   177    LD("json_ld_keywords",
   178      '{',
   179      '  [meta "@context"]: {',
   180      '    [meta "@base"]: [string "http://example.com"],',
   181      '    [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],',
   182      '    [property "likesFlavor"]: {',
   183      '      [meta "@container"]: [meta "@list"]',
   184      '      [meta "@reverse"]: [string "@beFavoriteOf"]',
   185      '    },',
   186      '    [property "nick"]: { [meta "@container"]: [meta "@set"] },',
   187      '    [property "nick"]: { [meta "@container"]: [meta "@index"] }',
   188      '  },',
   189      '  [meta "@graph"]: [[ {',
   190      '    [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],',
   191      '    [property "name"]: [string "John Lennon"],',
   192      '    [property "modified"]: {',
   193      '      [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],',
   194      '      [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]',
   195      '    }',
   196      '  } ]]',
   197      '}');
   198  
   199    LD("json_ld_fake",
   200      '{',
   201      '  [property "@fake"]: [string "@fake"],',
   202      '  [property "@contextual"]: [string "@identifier"],',
   203      '  [property "user@domain.com"]: [string "@graphical"],',
   204      '  [property "@ID"]: [string "@@ID"]',
   205      '}');
   206  })();