有没有办法解析胶水里面的变量
Posted
技术标签:
【中文标题】有没有办法解析胶水里面的变量【英文标题】:Is there a way to parse variables inside glue 【发布时间】:2021-12-06 02:48:25 【问题描述】:我正在尝试使用 R 中的胶水包解析变量。但看起来有些问题。谁能帮忙
由于我这里的变量将来会是反应性的,我正在尝试使用胶水解析它...................... .....
library(glue)
asd <- "XYZ"
html(glue('<html>
<head>
<style>
.dropdown
position: relative;
display: inline-block;
.dropdown-content
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
padding: 12px 16px;
z-index: 1;
.dropdown:hover .dropdown-content
display: block;
</style>
</head>
<body>
<div class="dropdown">
<span>asd</span>
<div class="dropdown-content">
<p>Hello World!</p>
</div>
</div>
</body>
</html>
'))
Error in eval(parse(text = text, keep.source = FALSE), envir) :
object 'position' not found
预期输出
<html>
<head>
<style>
.dropdown
position: relative;
display: inline-block;
.dropdown-content
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
padding: 12px 16px;
z-index: 1;
.dropdown:hover .dropdown-content
display: block;
</style>
</head>
<body>
<div class="dropdown">
<span>XYZ</span>
<div class="dropdown-content">
<p>Hello World!</p>
</div>
</div>
</body>
</html>
我正在尝试使用 R 中的胶水包解析变量。但看起来有些问题。谁能帮忙
由于我这里的变量将来会是反应性的,我正在尝试使用胶水解析它...................... .....
【问题讨论】:
已编辑...... 【参考方案1】:sprintf
应该在这里工作
str1 <- sprintf('<html>
<head>
<style>
.dropdown
position: relative;
display: inline-block;
.dropdown-content
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
padding: 12px 16px;
z-index: 1;
.dropdown:hover .dropdown-content
display: block;
</style>
</head>
<body>
<div class="dropdown">
<span>%s</span>
<div class="dropdown-content">
<p>Hello World!</p>
</div>
</div>
</body>
</html>
', asd)
OP 代码中的错误来自它在.transformer
参数中使用的eval(parse
。默认情况下,它进入identity_transformer
,因此对整个字符串的评估/解析会产生问题。使用sprintf
或创建自定义.transformer
函数可能会更好
【讨论】:
谢谢...但如果我使用胶水,我不确定我的代码有什么问题。你能试一下吗?否则任何知道胶水的人都可以帮助我 @manup 你可以使用原始字符串r
@manup 它与.transformer
相关,它确实评估为identity_transformer以上是关于有没有办法解析胶水里面的变量的主要内容,如果未能解决你的问题,请参考以下文章
xsl:variable的应用和赋值的解析,不同赋值的类型不同