| /* |
| * MIT License |
| * |
| * Copyright (c) 2019 Petr Hosek |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a copy |
| * of this software and associated documentation files (the "Software"), to deal |
| * in the Software without restriction, including without limitation the rights |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| * copies of the Software, and to permit persons to whom the Software is |
| * furnished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included in all |
| * copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| */ |
| |
| /* |
| * highlight.js GN syntax highlighting definition |
| * |
| * @see https://github.com/highlightjs/highlight.js |
| * |
| * @package: highlightjs-GN |
| * @author: Petr Hosek <petrhosek@gmail.com> |
| * @since: 2019-05-28 |
| * |
| * Description: GN is a meta-build system that generates build files for Ninja. |
| * Category: common |
| */ |
| |
| /** @type LanguageFn */ |
| export default function(hljs) { |
| var SUBST = { |
| className: 'subst', relevance: 2, |
| variants: [ |
| { |
| begin: '\\$[A-Za-z0-9_]+' |
| }, |
| { |
| begin: '\\${', end: '}', |
| contains: [{ |
| className: 'variable', |
| begin: hljs.UNDERSCORE_IDENT_RE, |
| relevance: 0 |
| }] |
| } |
| ], |
| }; |
| |
| var LINK = { |
| className: 'link', relevance: 5, |
| begin: ':\\w+', |
| } |
| |
| var NUMBER = { |
| className: 'number', relevance: 0, |
| begin: hljs.NUMBER_RE |
| }; |
| |
| var STRING = { |
| className: 'string', relevance: 0, |
| begin: '"', |
| end: '"', |
| illegal: '\\n', |
| contains: [hljs.BACKSLASH_ESCAPE, SUBST, LINK], |
| }; |
| |
| var KEYWORDS = { |
| keyword: |
| 'if else', |
| literal: |
| 'true false ' + |
| 'current_cpu current_os current_toolchain ' + |
| 'default_toolchain host_cpu host_os ' + |
| 'root_build_dir root_gen_dir root_out_dir ' + |
| 'target_cpu target_gen_dir target_out_dir ' + |
| 'target_os target_name invoker', |
| type: |
| 'action action_foreach copy executable group ' + |
| 'shared_library source_set static_library ' + |
| 'loadable_module generated_file', |
| built_in: |
| 'assert config declare_args defined exec_script ' + |
| 'foreach get_label_info get_path_info ' + |
| 'get_target_outputs getenv import print ' + |
| 'process_file_template read_file rebase_path ' + |
| 'set_default_toolchain set_defaults ' + |
| 'set_sources_assignment_filter template tool ' + |
| 'toolchain toolchain_args propagates_configs ' + |
| 'write_file forward_variables_from target ' + |
| 'get_name_info not_needed', |
| symbol: |
| 'all_dependent_configs allow_circular_includes_from ' + |
| 'args asmflags cflags cflags_c cflags_cc cflags_objc ' + |
| 'cflags_objcc check_includes complete_static_lib ' + |
| 'configs data data_deps defines depfile deps ' + |
| 'include_dirs inputs ldflags lib_dirs libs ' + |
| 'output_extension output_name outputs public ' + |
| 'public_configs public_deps script sources testonly ' + |
| 'visibility contents output_conversion rebase ' + |
| 'data_keys walk_keys', |
| }; |
| |
| return { |
| aliases: ['gn', 'gni'], |
| keywords: KEYWORDS, |
| contains: [ |
| NUMBER, |
| STRING, |
| hljs.HASH_COMMENT_MODE, |
| ] |
| }; |
| } |