mirror of
https://github.com/discourse/discourse.git
synced 2025-05-26 06:21:33 +08:00
DEV: Don't use js.erb
for constants
Adds a new rake task to auto generate a constants.js file with the constants present. This makes migrating to Ember CLI easier, but also slightly speeds up asset compilation by having to do less work. If the constants change you need to run: `rake javascripts:update_constants`
This commit is contained in:
@ -1 +0,0 @@
|
|||||||
export const searchPriorities = <%= Searchable::PRIORITIES.to_json %>;
|
|
@ -2,7 +2,7 @@ import discourseComputed from "discourse-common/utils/decorators";
|
|||||||
import { empty, and } from "@ember/object/computed";
|
import { empty, and } from "@ember/object/computed";
|
||||||
import { setting } from "discourse/lib/computed";
|
import { setting } from "discourse/lib/computed";
|
||||||
import { buildCategoryPanel } from "discourse/components/edit-category-panel";
|
import { buildCategoryPanel } from "discourse/components/edit-category-panel";
|
||||||
import { searchPriorities } from "discourse/components/concerns/category-search-priorities";
|
import { SearchPriorities } from "discourse/lib/constants";
|
||||||
import Group from "discourse/models/group";
|
import Group from "discourse/models/group";
|
||||||
|
|
||||||
const categorySortCriteria = [];
|
const categorySortCriteria = [];
|
||||||
@ -71,7 +71,7 @@ export default buildCategoryPanel("settings", {
|
|||||||
searchPrioritiesOptions() {
|
searchPrioritiesOptions() {
|
||||||
const options = [];
|
const options = [];
|
||||||
|
|
||||||
Object.entries(searchPriorities).forEach(entry => {
|
Object.entries(SearchPriorities).forEach(entry => {
|
||||||
const [name, value] = entry;
|
const [name, value] = entry;
|
||||||
|
|
||||||
options.push({
|
options.push({
|
||||||
|
@ -1 +0,0 @@
|
|||||||
export const PHRASE_MATCH_REGEXP_PATTERN = '<%= Search::PHRASE_MATCH_REGEXP_PATTERN %>';
|
|
13
app/assets/javascripts/discourse/app/lib/constants.js
Normal file
13
app/assets/javascripts/discourse/app/lib/constants.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// DO NOT EDIT THIS FILE!!!
|
||||||
|
// Update it by running `rake javascript:update_constants`
|
||||||
|
|
||||||
|
export const SearchPriorities = {
|
||||||
|
ignore: 1,
|
||||||
|
very_low: 2,
|
||||||
|
low: 3,
|
||||||
|
normal: 0,
|
||||||
|
high: 4,
|
||||||
|
very_high: 5
|
||||||
|
};
|
||||||
|
|
||||||
|
export const SearchPhraseRegexp = '"([^"]+)"';
|
@ -1,4 +1,4 @@
|
|||||||
import { PHRASE_MATCH_REGEXP_PATTERN } from "discourse/lib/concerns/search-constants";
|
import { SearchPhraseRegexp } from "discourse/lib/constants";
|
||||||
import highlightHTML from "discourse/lib/highlight-html";
|
import highlightHTML from "discourse/lib/highlight-html";
|
||||||
|
|
||||||
export const CLASS_NAME = "search-highlight";
|
export const CLASS_NAME = "search-highlight";
|
||||||
@ -7,7 +7,7 @@ export default function(elem, term, opts = {}) {
|
|||||||
if (!_.isEmpty(term)) {
|
if (!_.isEmpty(term)) {
|
||||||
// special case ignore "l" which is used for magic sorting
|
// special case ignore "l" which is used for magic sorting
|
||||||
let words = _.reject(
|
let words = _.reject(
|
||||||
term.match(new RegExp(`${PHRASE_MATCH_REGEXP_PATTERN}|[^\\s]+`, "g")),
|
term.match(new RegExp(`${SearchPhraseRegexp}|[^\\s]+`, "g")),
|
||||||
t => t === "l"
|
t => t === "l"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import { defaultHomepage } from "discourse/lib/utilities";
|
|||||||
import TopicList from "discourse/models/topic-list";
|
import TopicList from "discourse/models/topic-list";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
import PreloadStore from "discourse/lib/preload-store";
|
import PreloadStore from "discourse/lib/preload-store";
|
||||||
import { searchPriorities } from "discourse/components/concerns/category-search-priorities";
|
import { SearchPriorities } from "discourse/lib/constants";
|
||||||
import { hash } from "rsvp";
|
import { hash } from "rsvp";
|
||||||
import Site from "discourse/models/site";
|
import Site from "discourse/models/site";
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ export function openNewCategoryModal(context) {
|
|||||||
allow_badges: true,
|
allow_badges: true,
|
||||||
topic_featured_link_allowed: true,
|
topic_featured_link_allowed: true,
|
||||||
custom_fields: {},
|
custom_fields: {},
|
||||||
search_priority: searchPriorities.normal
|
search_priority: SearchPriorities.normal
|
||||||
});
|
});
|
||||||
|
|
||||||
showModal("edit-category", { model }).set("selectedTab", "general");
|
showModal("edit-category", { model }).set("selectedTab", "general");
|
||||||
|
@ -12,8 +12,24 @@ def library_src
|
|||||||
"#{Rails.root}/node_modules"
|
"#{Rails.root}/node_modules"
|
||||||
end
|
end
|
||||||
|
|
||||||
task 'javascript:update' do
|
task 'javascript:update_constants' => :environment do
|
||||||
|
constants_js = <<~JS
|
||||||
|
// DO NOT EDIT THIS FILE!!!
|
||||||
|
// Update it by running `rake javascript:update_constants`
|
||||||
|
|
||||||
|
export const SearchPriorities = #{Searchable::PRIORITIES.to_json};
|
||||||
|
|
||||||
|
export const SearchPhraseRegexp = '#{Search::PHRASE_MATCH_REGEXP_PATTERN}';
|
||||||
|
JS
|
||||||
|
|
||||||
|
output_path = "#{Rails.root}/app/assets/javascripts/discourse/app/lib/constants.js"
|
||||||
|
File.write(output_path, constants_js)
|
||||||
|
puts "contants.js created"
|
||||||
|
%x{yarn run prettier --write #{output_path}}
|
||||||
|
puts "constants.js prettified"
|
||||||
|
end
|
||||||
|
|
||||||
|
task 'javascript:update' do
|
||||||
require 'uglifier'
|
require 'uglifier'
|
||||||
|
|
||||||
yarn = system("yarn install")
|
yarn = system("yarn install")
|
||||||
|
Reference in New Issue
Block a user