{"version":3,"sources":["webpack:///./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/yaml.js"],"names":["module","exports","hljs","LITERALS","URI_CHARACTERS","STRING","className","relevance","variants","begin","end","contains","BACKSLASH_ESCAPE","CONTAINER_STRING","inherit","TIMESTAMP","VALUE_CONTAINER","endsWithParent","excludeEnd","keywords","OBJECT","illegal","ARRAY","MODES","subLanguage","excludeBegin","UNDERSCORE_IDENT_RE","HASH_COMMENT_MODE","beginKeywords","literal","C_NUMBER_RE","VALUE_MODES","concat","pop","push","name","case_insensitive","aliases"],"mappings":"8EA4KAA,EAAOC,QAnKP,SAAcC,GACZ,IAAIC,EAAW,yBAEXC,EAAiB,gCA6BjBC,EAAS,CACXC,UAAW,SACXC,UAAW,EACXC,SAAU,CAAC,CACTC,MAAO,IACPC,IAAK,KACJ,CACDD,MAAO,IACPC,IAAK,KACJ,CACDD,MAAO,QAETE,SAAU,CAACT,EAAKU,iBAxBO,CACvBN,UAAW,oBACXE,SAAU,CAAC,CACTC,MAAO,KACPC,IAAK,MAEP,CACED,MAAO,KACPC,IAAK,SAoBLG,EAAmBX,EAAKY,QAAQT,EAAQ,CAC1CG,SAAU,CAAC,CACTC,MAAO,IACPC,IAAK,KACJ,CACDD,MAAO,IACPC,IAAK,KACJ,CACDD,MAAO,mBAOPM,EAAY,CACdT,UAAW,SACXG,MAAO,iIAELO,EAAkB,CACpBN,IAAK,IACLO,gBAAgB,EAChBC,YAAY,EACZP,SAAU,GACVQ,SAAUhB,EACVI,UAAW,GAETa,EAAS,CACXX,MAAO,IACPC,IAAK,IACLC,SAAU,CAACK,GACXK,QAAS,MACTd,UAAW,GAETe,EAAQ,CACVb,MAAO,MACPC,IAAK,MACLC,SAAU,CAACK,GACXK,QAAS,MACTd,UAAW,GAETgB,EAAQ,CAjFF,CACRjB,UAAW,OACXE,SAAU,CAAC,CACTC,MAAO,gCACN,CACDA,MAAO,kCAET,CACEA,MAAO,oCAyEO,CAChBH,UAAW,OACXG,MAAO,UACPF,UAAW,IACV,CAMDD,UAAW,SACXG,MAAO,6DACN,CAEDA,MAAO,WACPC,IAAK,UACLc,YAAa,OACbC,cAAc,EACdP,YAAY,EACZX,UAAW,GACV,CAEDD,UAAW,OACXG,MAAO,SAAWL,GAEpB,CAEEE,UAAW,OACXG,MAAO,KAAOL,EAAiB,KAC9B,CAEDE,UAAW,OACXG,MAAO,IAAML,GACZ,CAEDE,UAAW,OACXG,MAAO,KAAOL,GACb,CAEDE,UAAW,OACXG,MAAO,IAAMP,EAAKwB,oBAAsB,KACvC,CAEDpB,UAAW,OACXG,MAAO,MAAQP,EAAKwB,oBAAsB,KACzC,CAEDpB,UAAW,SAEXG,MAAO,eACPF,UAAW,GACVL,EAAKyB,kBAAmB,CACzBC,cAAezB,EACfgB,SAAU,CACRU,QAAS1B,IAEVY,EAEH,CACET,UAAW,SACXG,MAAOP,EAAK4B,YAAc,OACzBV,EAAQE,EAAOjB,GACd0B,EAAc,GAAGC,OAAOT,GAI5B,OAHAQ,EAAYE,MACZF,EAAYG,KAAKrB,GACjBG,EAAgBL,SAAWoB,EACpB,CACLI,KAAM,OACNC,kBAAkB,EAClBC,QAAS,CAAC,MAAO,QACjB1B,SAAUY","file":"react-syntax-highlighter_languages_highlight_yaml-78d84ff64be1f8fc60b7.js","sourcesContent":["/*\nLanguage: YAML\nDescription: Yet Another Markdown Language\nAuthor: Stefan Wienert <stwienert@gmail.com>\nContributors: Carl Baxter <carl@cbax.tech>\nRequires: ruby.js\nWebsite: https://yaml.org\nCategory: common, config\n*/\nfunction yaml(hljs) {\n  var LITERALS = 'true false yes no null'; // YAML spec allows non-reserved URI characters in tags.\n\n  var URI_CHARACTERS = '[\\\\w#;/?:@&=+$,.~*\\\\\\'()[\\\\]]+'; // Define keys as starting with a word character\n  // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods\n  // ...and ending with a colon followed immediately by a space, tab or newline.\n  // The YAML spec allows for much more than this, but this covers most use-cases.\n\n  var KEY = {\n    className: 'attr',\n    variants: [{\n      begin: '\\\\w[\\\\w :\\\\/.-]*:(?=[ \\t]|$)'\n    }, {\n      begin: '\"\\\\w[\\\\w :\\\\/.-]*\":(?=[ \\t]|$)'\n    }, // double quoted keys\n    {\n      begin: '\\'\\\\w[\\\\w :\\\\/.-]*\\':(?=[ \\t]|$)'\n    } // single quoted keys\n    ]\n  };\n  var TEMPLATE_VARIABLES = {\n    className: 'template-variable',\n    variants: [{\n      begin: '{{',\n      end: '}}'\n    }, // jinja templates Ansible\n    {\n      begin: '%{',\n      end: '}'\n    } // Ruby i18n\n    ]\n  };\n  var STRING = {\n    className: 'string',\n    relevance: 0,\n    variants: [{\n      begin: /'/,\n      end: /'/\n    }, {\n      begin: /\"/,\n      end: /\"/\n    }, {\n      begin: /\\S+/\n    }],\n    contains: [hljs.BACKSLASH_ESCAPE, TEMPLATE_VARIABLES]\n  }; // Strings inside of value containers (objects) can't contain braces,\n  // brackets, or commas\n\n  var CONTAINER_STRING = hljs.inherit(STRING, {\n    variants: [{\n      begin: /'/,\n      end: /'/\n    }, {\n      begin: /\"/,\n      end: /\"/\n    }, {\n      begin: /[^\\s,{}[\\]]+/\n    }]\n  });\n  var DATE_RE = '[0-9]{4}(-[0-9][0-9]){0,2}';\n  var TIME_RE = '([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?';\n  var FRACTION_RE = '(\\\\.[0-9]*)?';\n  var ZONE_RE = '([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';\n  var TIMESTAMP = {\n    className: 'number',\n    begin: '\\\\b' + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + '\\\\b'\n  };\n  var VALUE_CONTAINER = {\n    end: ',',\n    endsWithParent: true,\n    excludeEnd: true,\n    contains: [],\n    keywords: LITERALS,\n    relevance: 0\n  };\n  var OBJECT = {\n    begin: '{',\n    end: '}',\n    contains: [VALUE_CONTAINER],\n    illegal: '\\\\n',\n    relevance: 0\n  };\n  var ARRAY = {\n    begin: '\\\\[',\n    end: '\\\\]',\n    contains: [VALUE_CONTAINER],\n    illegal: '\\\\n',\n    relevance: 0\n  };\n  var MODES = [KEY, {\n    className: 'meta',\n    begin: '^---\\s*$',\n    relevance: 10\n  }, {\n    // multi line string\n    // Blocks start with a | or > followed by a newline\n    //\n    // Indentation of subsequent lines must be the same to\n    // be considered part of the block\n    className: 'string',\n    begin: '[\\\\|>]([0-9]?[+-])?[ ]*\\\\n( *)[\\\\S ]+\\\\n(\\\\2[\\\\S ]+\\\\n?)*'\n  }, {\n    // Ruby/Rails erb\n    begin: '<%[%=-]?',\n    end: '[%-]?%>',\n    subLanguage: 'ruby',\n    excludeBegin: true,\n    excludeEnd: true,\n    relevance: 0\n  }, {\n    // named tags\n    className: 'type',\n    begin: '!\\\\w+!' + URI_CHARACTERS\n  }, // https://yaml.org/spec/1.2/spec.html#id2784064\n  {\n    // verbatim tags\n    className: 'type',\n    begin: '!<' + URI_CHARACTERS + \">\"\n  }, {\n    // primary tags\n    className: 'type',\n    begin: '!' + URI_CHARACTERS\n  }, {\n    // secondary tags\n    className: 'type',\n    begin: '!!' + URI_CHARACTERS\n  }, {\n    // fragment id &ref\n    className: 'meta',\n    begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$'\n  }, {\n    // fragment reference *ref\n    className: 'meta',\n    begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n  }, {\n    // array listing\n    className: 'bullet',\n    // TODO: remove |$ hack when we have proper look-ahead support\n    begin: '\\\\-(?=[ ]|$)',\n    relevance: 0\n  }, hljs.HASH_COMMENT_MODE, {\n    beginKeywords: LITERALS,\n    keywords: {\n      literal: LITERALS\n    }\n  }, TIMESTAMP, // numbers are any valid C-style number that\n  // sit isolated from other words\n  {\n    className: 'number',\n    begin: hljs.C_NUMBER_RE + '\\\\b'\n  }, OBJECT, ARRAY, STRING];\n  var VALUE_MODES = [].concat(MODES);\n  VALUE_MODES.pop();\n  VALUE_MODES.push(CONTAINER_STRING);\n  VALUE_CONTAINER.contains = VALUE_MODES;\n  return {\n    name: 'YAML',\n    case_insensitive: true,\n    aliases: ['yml', 'YAML'],\n    contains: MODES\n  };\n}\n\nmodule.exports = yaml;"],"sourceRoot":""}