DEV: Strip unicode from color scheme stylesheet filenames (#10628)

This commit is contained in:
Penar Musaraj 2020-09-08 15:00:16 -04:00 committed by GitHub
parent 4dd07843c6
commit d4a7058cb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 1 deletions

View File

@ -313,7 +313,7 @@ class Stylesheet::Manager
if is_theme? if is_theme?
"#{@target}_#{theme.id}" "#{@target}_#{theme.id}"
elsif @color_scheme elsif @color_scheme
"#{@target}_#{Slug.for(@color_scheme.name)}_#{@color_scheme&.id.to_s}" "#{@target}_#{scheme_slug}_#{@color_scheme&.id.to_s}"
else else
scheme_string = theme && theme.color_scheme ? "_#{theme.color_scheme.id}" : "" scheme_string = theme && theme.color_scheme ? "_#{theme.color_scheme.id}" : ""
"#{@target}#{scheme_string}" "#{@target}#{scheme_string}"
@ -333,6 +333,10 @@ class Stylesheet::Manager
!!(@target.to_s =~ THEME_REGEX) !!(@target.to_s =~ THEME_REGEX)
end end
def scheme_slug
Slug.for(ActiveSupport::Inflector.transliterate(@color_scheme.name), 'scheme')
end
# digest encodes the things that trigger a recompile # digest encodes the things that trigger a recompile
def digest def digest
@digest ||= begin @digest ||= begin

View File

@ -273,6 +273,21 @@ describe Stylesheet::Manager do
expect(stylesheet).to include("--special: rebeccapurple") expect(stylesheet).to include("--special: rebeccapurple")
end end
context 'encoded slugs' do
before { SiteSetting.slug_generation_method = 'encoded' }
after { SiteSetting.slug_generation_method = 'ascii' }
it "strips unicode in color scheme stylesheet filenames" do
cs = Fabricate(:color_scheme, name: 'Grün')
cs2 = Fabricate(:color_scheme, name: '어두운')
link = Stylesheet::Manager.color_scheme_stylesheet_link_tag(cs.id)
expect(link).to include("/stylesheets/color_definitions_grun_#{cs.id}_")
link2 = Stylesheet::Manager.color_scheme_stylesheet_link_tag(cs2.id)
expect(link2).to include("/stylesheets/color_definitions_scheme_#{cs2.id}_")
end
end
end end
# this test takes too long, we don't run it by default # this test takes too long, we don't run it by default