问题标签 [preprocessor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Django 的模板加载器中预处理 SHPAML?
如果 Django 的模板加载器认为 HTML 已过时,是否有任何方法可以让 Django 的模板加载器通过 SHPAML 运行它加载的所有模板(即直接或通过扩展/包含)?
我知道如何在整个目录上递归调用 SHPAML,但我希望能够按需运行它,这样我就不必记住每次更改 SHPAML 源时都要同步 HTML。
我想从 manage.py 调用 SHPAML 也可以(至少对于测试服务器而言),但是能够侵入 Django 的模板引擎并使其运行通过预处理器加载的每个文件会更好。
php - Drupal:为管理员样式创建一个独特的选择器?
我想在管理员中以不同的方式设置某些组件的样式。如何在 body 元素上生成唯一的 id/class,以便单独设置管理元素的样式?
ruby - 在 PHPish 标记中匹配标记的正则表达式?
我正在创建一个项目,我需要能够使用正则表达式(或者如果其他东西更可取?)
基本上,我需要转换一个 PHPish 标记代码页,以便将“非代码”转换为“代码”。例如:
原件:
转换:
在考虑报价的同时,这如何工作?(喜欢<?code $var='<?code stuff ?>';?>
另外,如果有人向我提供了一些东西来检测包含的文件,(替换为首先“预先拥有”文件然后包含它的东西)(其中包含类似于 PHP)
这甚至可以用正则表达式吗?我知道您不应该尝试使用正则表达式解析 HTML,但这并不是在尝试解析它,它对于标记和所有内容的方式真的很愚蠢..
此外,这个项目实际上将在 Ruby(即预处理器)中实现,所以如果 Ruby 有一些东西可以帮助实现这一点,那就去做吧。
我知道代码看起来与 PHP 非常相似,但那是因为它是,但它不会在 PHP 中实现,并且使用的“代码”实际上也不是 PHP,但它将使用一种<?
类型机制在标记中包含代码。
编辑:还请注意,标记内的语言对于所有实际目的都可以是 Ruby。因此它可以包含带有结束代码标记的引号和注释。
windows - 预处理器向 Windows 的 CMD 添加功能?
作为一名 SQL Server DBA,我需要编写一些脚本。有时,我需要将修复脚本部署到非常受限的环境中,其中唯一的脚本选项可能是 DOS Batch。在这样的环境中,甚至 VBScript/WSH 都不可能,更不用说 PowerShell。任何在 DOS 和 Windows 上编写过足够多的批处理文件的人都知道,当您需要做任何过于复杂的事情时,它是非常有限的并且是一个巨大的 PIA。对于使用过 Unix shell 脚本、Perl、Tcl、Python、Ruby 等的人来说尤其如此。
一个可能的解决方案是 CMD 预处理器,它可以从更强大的脚本语言中添加一些有用的功能。我试图找到这样的实用程序,但到目前为止我还没有运气。
这最终引出了我的问题:有人知道这样的 CMD 预处理器吗?如果没有,您希望在其中看到什么功能?
附录:
如果您不熟悉预处理器的概念,请参阅此 Wikipedia entry。
为了澄清,我正在考虑一个可以添加以下功能的工具:
...可能还有其他人。这是我希望 CMD 拥有的两个特性,并且可以想办法用 CMD 预处理器来实现它们。可以使用 env vars 和 GOTO/labels 来实现功能;通过管道到临时文件并使用 set /p =< 将结果读入 env var 来反引号。
您已经可以实现这些相同的目的,但它变得非常乏味和冗长 - 这就是我想到让预处理器处理此类功能的样板的想法的原因。
例子
使用反引号的示例,这是我假设的 Batch++ 中未处理的代码示例和已处理的 vanilla 批处理脚本,准备好由 CMD.exe 运行:
Batch++ 源代码 (test.batpp)
通过预处理器运行它
生成的 CMD/BAT 代码 (post_test.bat)
php - 访问用户配置文件变量
使用配置文件模块,我创建了一个名为profile_real_name的文本字段,用户在注册时填写该字段。如何在 node.tpl.php 中访问这个变量?
我使用该dsm($user)
函数输出用户变量,它包含除profile_real_name数据之外的所有内容
我也跑dsm($vars)
了phptemplate_preprocess_user_profile
,我可以看到它包含一个名为 account 的对象,它确实包含我需要的信息,但这个对象在 $user 变量中不可用。
非常感谢
php - drupal:将搜索字段添加到文章
如何在我的文章中添加搜索字段(搜索我网站中的所有内容和标签)?
我已经安装并激活了该模块,但我想将它添加到一篇文章而不是我网站的一个块中
谢谢
java - 用 Java 管理高度重复的代码和文档
高度重复的代码通常是一件坏事,有一些设计模式可以帮助减少这种情况。但是,有时由于语言本身的限制,这只是不可避免的。从以下示例中获取java.util.Arrays
:
上面的代码片段在源代码中出现了 8 次,文档/方法签名几乎没有变化,但方法体完全相同,每个根数组类型int[]
, short[]
, char[]
, byte[]
, boolean[]
, double[]
,float[]
和Object[]
.
我相信,除非人们求助于反思(这本身就是一个完全不同的主题),否则这种重复是不可避免的。我知道作为一个实用程序类,如此高度集中的重复 Java 代码是非常不典型的,但即使采用最佳实践,重复也会发生!重构并不总是有效,因为它并不总是可能的(明显的情况是文档中有重复)。
显然维护这个源代码是一场噩梦。文档中的轻微错字或实现中的小错误会乘以多次重复。事实上,最好的例子恰好涉及到这个确切的类:
谷歌研究博客 - 额外的,额外的 - 阅读所有相关信息:几乎所有的二进制搜索和合并排序都被破坏了(作者 Joshua Bloch,软件工程师)
这个错误非常微妙,发生在许多人认为只是一种简单直接的算法中。
上面的代码在源代码中出现了 11 次!
所以我的问题是:
- 在实践中如何处理这些重复的 Java 代码/文档?它们是如何开发、维护和测试的?
- 你是从“原版”开始,尽可能的成熟,然后根据需要复制粘贴,希望你没有弄错?
- 如果您确实在原始文件中犯了错误,那么只需在所有地方进行修复,除非您对删除副本并重复整个复制过程感到满意?
- 你也对测试代码应用同样的过程吗?
- Java 会从针对此类事物的某种有限使用源代码预处理中受益吗?
- 也许 Sun 有自己的预处理器来帮助编写、维护、记录和测试这些重复的库代码?
评论要求另一个示例,所以我从 Google 集合中提取了这个示例:com.google.common.base.Predicates第 276-310 行(AndPredicate
)与第 312-346 行(OrPredicate
)。
这两个类的来源是相同的,除了:
AndPredicate
vsOrPredicate
(每个在同类中出现 5 次)"And("
vsOr("
(在各自的toString()
方法中)#and
vs#or
(在@see
Javadoc 注释中)true
vsfalse
(inapply
;!
可以改写出表达式)-1 /* all bits on */
与0 /* all bits off */
在hashCode()
&=
与|=
在hashCode()
java - 可以用ant修改源代码吗?
我想在我的程序中进行条件编译。我知道,如果您声明一个公共静态最终布尔值,编译器将忽略未遍历的分支。是否可以在构建程序之前让 ant 目标更改变量?
例如,如果我有:
final public static boolean windows = false;
我想要两个 ant 目标:Windows 和 Mac。我希望命令
ant windows
将布尔值更改为 true,同时
ant mac
保持变量不变。
谢谢。
fortran - 在 gfortran 中预处理 !DEC$ 指令
我有一个最初针对英特尔编译器的大型 Fortran 代码库。我现在正准备用 gfortran 编译。不幸的是,代码中充斥着英特尔风格的预处理指令,例如:
从我通过谷歌搜索和 gfortran 文档可以看出,除了 C 风格的预处理之外,没有任何内部 gfortran 支持,例如:
有没有其他人遇到过这个问题并提出了一个优雅的解决方案?显然,在将代码传递给 gfortran 进行编译之前,我可以编写一个调用外部预处理器的 shell 脚本,但这对我来说似乎不是一个很好的解决方案。
有什么想法吗?谢谢大师!
javascript - 防止drupal加载其他模块的javascript
我有一个drupal 页面,我使用的方式与该站点的所有其他页面非常不同。
我有一个模块可以在此页面上加载一组专门的 js。我发现我的 JS 不适用于其他模块的 js 或者可能是 drupal 核心。
如何防止其他模块在该特定页面上执行 drupal_add_js。
谢谢!