所以它不起作用的原因是因为我没有意识到它在元素中被编码为只支持几种语言。
我的解决方案是编辑/分叉 prism + prism-element 组件。
(注意:如果您编辑 bower_components 中的文件而不更改名称或目录,您可能会在下次更新时丢失更改)
我编辑了prism-element/prism-highlighter.html 文件以包含其他语言:
if (lang === 'js' || lang.substr(0, 2) === 'es') {
return Prism.languages.javascript;
} else if (lang === 'css') {
return Prism.languages.css;
} else if (lang === 'c') {
return Prism.languages.clike;
} else if (lang === 'bash') { // Check for bash markdown
return Prism.languages.bash;
} else if (lang === 'python') { // Check for python markdown
return Prism.languages.python;
} else {
...
prism/gulpfile.js 导入更多语言组件:
paths = {
componentsFile: 'components.js',
components: ['components/**/*.js', '!components/**/*.min.js'],
main: [
'components/prism-core.js',
'components/prism-markup.js',
'components/prism-css.js',
'components/prism-clike.js',
'components/prism-javascript.js',
'components/prism-bash.js', // Include bash component
'components/prism-python.js', // Include python component
'plugins/file-highlight/prism-file-highlight.js'
],
...
如果您更改了prism 的名称/路径,请务必更改prism-element/prism-import.html 中的相对路径。
然后在prism文件夹中运行npm install安装依赖,gulp运行gulpfile.js并编译成prism/prism.js。
由于我将 fork prism-highlighter-plus 命名为,我的最终代码如下所示:
<link rel="import" href="../../bower_components/marked-element/marked-element.html">
<link rel="import" href="../../bower_components/prism-element-plus/prism-highlighter-plus.html">
<dom-module id="backup-script">
<template>
<style>
:host {
display: block;
}
.markdown-html {
overflow-x: auto;
}
</style>
<prism-highlighter-plus></prism-highlighter-plus>
<marked-element>
<div class="markdown-html"></div>
<script type="text/markdown">
```bash
#!/bin/bash
...
excluded_databases="Database|information_schema|performance_schema|mysql"
databases=`mysql -u $mysql_user -p$mysql_password -Bse "SHOW DATABASES;" | egrep -v $excluded_databases`
for db in $databases; do
mysqldump -u $mysql_user -p$mysql_password --databases $db > $mysql_output/$today/$db.sql
done
...
</script>
</marked-element>
</template>
<script>
Polymer({
is: 'backup-script'
});
</script>
</dom-module>