diff --git a/web/src/pygments_data.ts b/web/src/pygments_data.ts new file mode 100644 index 0000000000..6a2a404324 --- /dev/null +++ b/web/src/pygments_data.ts @@ -0,0 +1,6 @@ +import generated_pygments_data from "../generated/pygments_data.json"; + +type PygmentsLanguage = {priority: number; pretty_name: string}; +const langs: Record = generated_pygments_data.langs; + +export {langs}; diff --git a/web/src/realm_playground.ts b/web/src/realm_playground.ts index a77f5a6aba..fb20d182a6 100644 --- a/web/src/realm_playground.ts +++ b/web/src/realm_playground.ts @@ -1,7 +1,9 @@ -import generated_pygments_data from "../generated/pygments_data.json"; +import assert from "minimalistic-assert"; + import * as typeahead from "../shared/src/typeahead"; import {$t} from "./i18n"; +import * as pygments_data from "./pygments_data"; type RealmPlayground = { id: number; @@ -42,10 +44,12 @@ export function get_playground_info_for_languages( function sort_pygments_pretty_names_by_priority( comparator_func: (a: string, b: string) => number, ): void { - const priority_sorted_pygments_data = Object.entries(generated_pygments_data.langs).sort( - ([a], [b]) => comparator_func(a, b), + const priority_sorted_pygments_data = Object.entries(pygments_data.langs).sort(([a], [b]) => + comparator_func(a, b), ); - for (const [alias, {pretty_name}] of priority_sorted_pygments_data) { + for (const [alias, data] of priority_sorted_pygments_data) { + assert(data !== undefined); + const pretty_name = data.pretty_name; // JS Map remembers the original order of insertion of keys. if (map_pygments_pretty_name_to_aliases.has(pretty_name)) { map_pygments_pretty_name_to_aliases.get(pretty_name)!.push(alias); @@ -64,9 +68,9 @@ function sort_pygments_pretty_names_by_priority( // deduplicate them. export function get_pygments_typeahead_list_for_composebox(): string[] { const playground_pygment_langs = [...map_language_to_playground_info.keys()]; - const generated_pygment_langs = Object.keys(generated_pygments_data.langs); + const pygment_langs = Object.keys(pygments_data.langs); - return [...playground_pygment_langs, ...generated_pygment_langs]; + return [...playground_pygment_langs, ...pygment_langs]; } // This gets the candidate list for showing autocomplete in settings when diff --git a/web/src/settings_org.js b/web/src/settings_org.js index 1a07ca7357..0ed9b829a7 100644 --- a/web/src/settings_org.js +++ b/web/src/settings_org.js @@ -1,6 +1,5 @@ import $ from "jquery"; -import pygments_data from "../generated/pygments_data.json"; import render_settings_deactivate_realm_modal from "../templates/confirm_dialog/confirm_deactivate_realm.hbs"; import render_settings_admin_auth_methods_list from "../templates/settings/admin_auth_methods_list.hbs"; @@ -14,6 +13,7 @@ import {$t, $t_html, get_language_name} from "./i18n"; import * as keydown_util from "./keydown_util"; import * as loading from "./loading"; import {page_params} from "./page_params"; +import * as pygments_data from "./pygments_data"; import * as realm_icon from "./realm_icon"; import * as realm_logo from "./realm_logo"; import {realm_user_settings_defaults} from "./realm_user_settings_defaults"; diff --git a/web/src/typeahead_helper.js b/web/src/typeahead_helper.js index 257859d208..0dcae8218a 100644 --- a/web/src/typeahead_helper.js +++ b/web/src/typeahead_helper.js @@ -1,7 +1,6 @@ import Handlebars from "handlebars/runtime"; import _ from "lodash"; -import pygments_data from "../generated/pygments_data.json"; import * as typeahead from "../shared/src/typeahead"; import render_typeahead_list_item from "../templates/typeahead_list_item.hbs"; @@ -10,6 +9,7 @@ import * as compose_state from "./compose_state"; import {page_params} from "./page_params"; import * as people from "./people"; import * as pm_conversations from "./pm_conversations"; +import * as pygments_data from "./pygments_data"; import * as recent_senders from "./recent_senders"; import * as stream_data from "./stream_data"; import * as stream_list_sort from "./stream_list_sort"; diff --git a/web/src/ui_init.js b/web/src/ui_init.js index fdf580366d..657a0eeeb8 100644 --- a/web/src/ui_init.js +++ b/web/src/ui_init.js @@ -2,7 +2,6 @@ import $ from "jquery"; import _ from "lodash"; import generated_emoji_codes from "../../static/generated/emoji/emoji_codes.json"; -import generated_pygments_data from "../generated/pygments_data.json"; import * as fenced_code from "../shared/src/fenced_code"; import render_compose from "../templates/compose.hbs"; import render_message_feed_bottom_whitespace from "../templates/message_feed_bottom_whitespace.hbs"; @@ -87,6 +86,7 @@ import * as pm_list from "./pm_list"; import * as popover_menus from "./popover_menus"; import * as popovers from "./popovers"; import * as presence from "./presence"; +import * as pygments_data from "./pygments_data"; import * as realm_logo from "./realm_logo"; import * as realm_playground from "./realm_playground"; import * as realm_user_settings_defaults from "./realm_user_settings_defaults"; @@ -699,7 +699,7 @@ export function initialize_everything() { typing.initialize(); starred_messages_ui.initialize(); user_status_ui.initialize(); - fenced_code.initialize(generated_pygments_data); + fenced_code.initialize(pygments_data); message_edit_history.initialize(); hotkey.initialize(); desktop_integration.initialize(); diff --git a/web/tests/composebox_typeahead.test.js b/web/tests/composebox_typeahead.test.js index 1b04ebd1e6..f99af30eab 100644 --- a/web/tests/composebox_typeahead.test.js +++ b/web/tests/composebox_typeahead.test.js @@ -51,7 +51,7 @@ const compose_pm_pill = zrequire("compose_pm_pill"); const compose_recipient = zrequire("compose_recipient"); const composebox_typeahead = zrequire("composebox_typeahead"); const settings_config = zrequire("settings_config"); -const pygments_data = zrequire("../generated/pygments_data.json"); +const pygments_data = zrequire("pygments_data"); const ct = composebox_typeahead; diff --git a/web/tests/markdown.test.js b/web/tests/markdown.test.js index e037453dfa..6e3c66cd9b 100644 --- a/web/tests/markdown.test.js +++ b/web/tests/markdown.test.js @@ -49,11 +49,11 @@ mock_esm("../src/settings_data", { const emoji = zrequire("emoji"); const emoji_codes = zrequire("../../static/generated/emoji/emoji_codes.json"); const linkifiers = zrequire("linkifiers"); -const pygments_data = zrequire("../generated/pygments_data.json"); const fenced_code = zrequire("../shared/src/fenced_code"); const markdown_config = zrequire("markdown_config"); const markdown = zrequire("markdown"); const people = zrequire("people"); +const pygments_data = zrequire("pygments_data"); const stream_data = zrequire("stream_data"); const user_groups = zrequire("user_groups"); diff --git a/web/tests/realm_playground.test.js b/web/tests/realm_playground.test.js index 8c0496c010..03055f32ba 100644 --- a/web/tests/realm_playground.test.js +++ b/web/tests/realm_playground.test.js @@ -5,9 +5,8 @@ const {strict: assert} = require("assert"); const {zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); -const pygments_data = zrequire("../generated/pygments_data.json"); - const {$t} = zrequire("i18n"); +const pygments_data = zrequire("pygments_data"); const realm_playground = zrequire("realm_playground"); const typeahead_helper = zrequire("typeahead_helper"); diff --git a/web/tests/typeahead_helper.test.js b/web/tests/typeahead_helper.test.js index af8494fbf0..c4a336d46d 100644 --- a/web/tests/typeahead_helper.test.js +++ b/web/tests/typeahead_helper.test.js @@ -18,7 +18,7 @@ const stream_data = zrequire("stream_data"); const stream_list_sort = zrequire("stream_list_sort"); const compose_state = zrequire("compose_state"); const emoji = zrequire("emoji"); -const pygments_data = zrequire("../generated/pygments_data.json"); +const pygments_data = zrequire("pygments_data"); const util = zrequire("util"); const actual_pygments_data = {...pygments_data}; const ct = zrequire("composebox_typeahead");