prefix first draft ✍

pull/4740/head
§Domenik Reitzner 6 years ago
parent e3fef0f740
commit 1c2cf7e52b

@ -29,6 +29,7 @@ import add_to_set from './utils/add_to_set';
import check_graph_for_cycles from './utils/check_graph_for_cycles'; import check_graph_for_cycles from './utils/check_graph_for_cycles';
import { print, x, b } from 'code-red'; import { print, x, b } from 'code-red';
import { is_reserved_keyword } from './utils/reserved_keywords'; import { is_reserved_keyword } from './utils/reserved_keywords';
import get_prefix from './utils/get_prefix';
interface ComponentOptions { interface ComponentOptions {
namespace?: string; namespace?: string;
@ -133,7 +134,8 @@ export default class Component {
source, source,
ast, ast,
compile_options.filename, compile_options.filename,
compile_options.dev compile_options.dev,
get_prefix(compile_options.prefix),
); );
this.stylesheet.validate(this); this.stylesheet.validate(this);

@ -291,14 +291,14 @@ export default class Stylesheet {
nodes_with_css_class: Set<CssNode> = new Set(); nodes_with_css_class: Set<CssNode> = new Set();
constructor(source: string, ast: Ast, filename: string, dev: boolean) { constructor(source: string, ast: Ast, filename: string, dev: boolean, prefix: string) {
this.source = source; this.source = source;
this.ast = ast; this.ast = ast;
this.filename = filename; this.filename = filename;
this.dev = dev; this.dev = dev;
if (ast.css && ast.css.children.length) { if (ast.css && ast.css.children.length) {
this.id = `svelte-${hash(ast.css.content.styles)}`; this.id = `${prefix}${hash(ast.css.content.styles)}`;
this.has_styles = true; this.has_styles = true;

@ -1,6 +1,7 @@
import Node from './shared/Node'; import Node from './shared/Node';
import map_children from './shared/map_children'; import map_children from './shared/map_children';
import hash from '../utils/hash'; import hash from '../utils/hash';
import get_prefix from '../utils/get_prefix';
export default class Head extends Node { export default class Head extends Node {
type: 'Head'; type: 'Head';
@ -22,7 +23,7 @@ export default class Head extends Node {
})); }));
if (this.children.length > 0) { if (this.children.length > 0) {
this.id = `svelte-${hash(this.component.source.slice(this.start, this.end))}`; this.id = `${get_prefix(this.component.compile_options.prefix)}${hash(this.component.source.slice(this.start, this.end))}`;
} }
} }
} }

@ -0,0 +1,9 @@
export default function get_prefix(str?: string): string {
const standard_prefix = 'svelte-';
if (!str
|| typeof str !== 'string') return standard_prefix;
str = str.replace(/^[^_-a-z]+|[^_-a-z0-9]/gi, '');
return str.length
? str
: standard_prefix;
}

@ -123,6 +123,7 @@ export interface CompileOptions {
tag?: string; tag?: string;
css?: boolean; css?: boolean;
loopGuardTimeout?: number; loopGuardTimeout?: number;
prefix?: string;
preserveComments?: boolean; preserveComments?: boolean;
preserveWhitespace?: boolean; preserveWhitespace?: boolean;

@ -0,0 +1,5 @@
export default {
compileOptions: {
prefix: ' $!*'
}
};

@ -0,0 +1,7 @@
<div></div>
<style>
div {
color: blue;
}
</style>

@ -0,0 +1,5 @@
export default {
compileOptions: {
prefix: 'me$-'
}
};

@ -0,0 +1,7 @@
<div></div>
<style>
div {
color: blue;
}
</style>

@ -0,0 +1,5 @@
export default {
compileOptions: {
prefix: 'me -'
}
};

@ -0,0 +1,7 @@
<div></div>
<style>
div {
color: blue;
}
</style>

@ -0,0 +1,5 @@
export default {
compileOptions: {
prefix: true
}
};

@ -0,0 +1,7 @@
<div></div>
<style>
div {
color: blue;
}
</style>

@ -0,0 +1,5 @@
export default {
compileOptions: {
prefix: '0me-'
}
};

@ -0,0 +1,7 @@
<div></div>
<style>
div {
color: blue;
}
</style>

@ -0,0 +1,5 @@
export default {
compileOptions: {
prefix: ' me-'
}
};

@ -0,0 +1,7 @@
<div></div>
<style>
div {
color: blue;
}
</style>

@ -0,0 +1,5 @@
export default {
compileOptions: {
prefix: 'me-'
}
};

@ -0,0 +1,7 @@
<div></div>
<style>
div {
color: blue;
}
</style>
Loading…
Cancel
Save