问题标签 [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.

0 投票
2 回答
563 浏览

python - 在 Django 的模板加载器中预处理 SHPAML?

如果 Django 的模板加载器认为 HTML 已过时,是否有任何方法可以让 Django 的模板加载器通过 SHPAML 运行它加载的所有模板(即直接或通过扩展/包含)?

我知道如何在整个目录上递归调用 SHPAML,但我希望能够按需运行它,这样我就不必记住每次更改 SHPAML 源时都要同步 HTML。

我想从 manage.py 调用 SHPAML 也可以(至少对于测试服务器而言),但是能够侵入 Django 的模板引擎并使其运行通过预处理器加载的每个文件会更好。

0 投票
1 回答
181 浏览

php - Drupal:为管理员样式创建一个独特的选择器?

我想在管理员中以不同的方式设置某些组件的样式。如何在 body 元素上生成唯一的 id/class,以便单独设置管理元素的样式?

0 投票
2 回答
163 浏览

ruby - 在 PHPish 标记中匹配标记的正则表达式?

我正在创建一个项目,我需要能够使用正则表达式(或者如果其他东西更可取?)

基本上,我需要转换一个 PHPish 标记代码页,以便将“非代码”转换为“代码”。例如:

原件:

转换:

在考虑报价的同时,这如何工作?(喜欢<?code $var='<?code stuff ?>';?>

另外,如果有人向我提供了一些东西来检测包含的文件,(替换为首先“预先拥有”文件然后包含它的东西)(其中包含类似于 PHP)

这甚至可以用正则表达式吗?我知道您不应该尝试使用正则表达式解析 HTML,但这并不是在尝试解析它,它对于标记和所有内容的方式真的很愚蠢..

此外,这个项目实际上将在 Ruby(即预处理器)中实现,所以如果 Ruby 有一些东西可以帮助实现这一点,那就去做吧。

我知道代码看起来与 PHP 非常相似,但那是因为它是,但它不会在 PHP 中实现,并且使用的“代码”实际上也不是 PHP,但它将使用一种<?类型机制在标记中包含代码。

编辑:还请注意,标记内的语言对于所有实际目的都可以是 Ruby。因此它可以包含带有结束代码标记的引号和注释。

0 投票
1 回答
946 浏览

windows - 预处理器向 Windows 的 CMD 添加功能?

作为一名 SQL Server DBA,我需要编写一些脚本。有时,我需要将修复脚本部署到非常受限的环境中,其中唯一的脚本选项可能是 DOS Batch。在这样的环境中,甚至 VBScript/WSH 都不可能,更不用说 PowerShell。任何在 DOS 和 Windows 上编写过足够多的批处理文件的人都知道,当您需要做任何过于复杂的事情时,它是非常有限的并且是一个巨大的 PIA。对于使用过 Unix shell 脚本、Perl、Tcl、Python、Ruby 等的人来说尤其如此。

一个可能的解决方案是 CMD 预处理器,它可以从更强大的脚本语言中添加一些有用的功能。我试图找到这样的实用程序,但到目前为止我还没有运气。

这最终引出了我的问题:有人知道这样的 CMD 预处理器吗?如果没有,您希望在其中看到什么功能?


附录:
如果您不熟悉预处理器的概念,请参阅此 Wikipedia entry

为了澄清,我正在考虑一个可以添加以下功能的工具:

  1. 功能
  2. 反引号 (`) ala Unix shell

...可能还有其他人。这是我希望 CMD 拥有的两个特性,并且可以想办法用 CMD 预处理器来实现它们。可以使用 env vars 和 GOTO/labels 来实现功能;通过管道到临时文件并使用 set /p =< 将结果读入 env var 来反引号。

您已经可以实现这些相同的目的,但它变得非常乏味和冗长 - 这就是我想到让预处理器处理此类功能的样板的想法的原因。

例子

使用反引号的示例,这是我假设的 Batch++ 中未处理的代码示例和已处理的 vanilla 批处理脚本,准备好由 CMD.exe 运行:

Batch++ 源代码 (test.batpp)

通过预处理器运行它

生成的 CMD/BAT 代码 (post_test.bat)

0 投票
3 回答
4321 浏览

php - 访问用户配置文件变量

使用配置文件模块,我创建了一个名为profile_real_name的文本字段,用户在注册时填写该字段。如何在 node.tpl.php 中访问这个变量?

我使用该dsm($user)函数输出用户变量,它包含除profile_real_name数据之外的所有内容

我也跑dsm($vars)phptemplate_preprocess_user_profile,我可以看到它包含一个名为 account 的对象,它确实包含我需要的信息,但这个对象在 $user 变量中不可用。

非常感谢

0 投票
1 回答
326 浏览

php - drupal:将搜索字段添加到文章

如何在我的文章中添加搜索字段(搜索我网站中的所有内容和标签)?

我已经安装并激活了该模块,但我想将它添加到一篇文章而不是我网站的一个块中

谢谢

0 投票
9 回答
5511 浏览

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)。

这两个类的来源是相同的,除了:

  • AndPredicatevs OrPredicate(每个在同类中出现 5 次)
  • "And("vs Or("(在各自的toString()方法中)
  • #andvs #or(在@seeJavadoc 注释中)
  • truevs false(in apply;!可以改写出表达式)
  • -1 /* all bits on */0 /* all bits off */hashCode()
  • &=|=hashCode()
0 投票
5 回答
4906 浏览

java - 可以用ant修改源代码吗?

我想在我的程序中进行条件编译。我知道,如果您声明一个公共静态最终布尔值,编译器将忽略未遍历的分支。是否可以在构建程序之前让 ant 目标更改变量?

例如,如果我有:

final public static boolean windows = false;

我想要两个 ant 目标:Windows 和 Mac。我希望命令 ant windows 将布尔值更改为 true,同时 ant mac 保持变量不变。

谢谢。

0 投票
1 回答
3814 浏览

fortran - 在 gfortran 中预处理 !DEC$ 指令

我有一个最初针对英特尔编译器的大型 Fortran 代码库。我现在正准备用 gfortran 编译。不幸的是,代码中充斥着英特尔风格的预处理指令,例如:

从我通过谷歌搜索和 gfortran 文档可以看出,除了 C 风格的预处理之外,没有任何内部 gfortran 支持,例如:

有没有其他人遇到过这个问题并提出了一个优雅的解决方案?显然,在将代码传递给 gfortran 进行编译之前,我可以编写一个调用外部预处理器的 shell 脚本,但这对我来说似乎不是一个很好的解决方案。

有什么想法吗?谢谢大师!

0 投票
1 回答
711 浏览

javascript - 防止drupal加载其他模块的javascript

我有一个drupal 页面,我使用的方式与该站点的所有其他页面非常不同。

我有一个模块可以在此页面上加载一组专门的 js。我发现我的 JS 不适用于其他模块的 js 或者可能是 drupal 核心。

如何防止其他模块在该特定页面上执行 drupal_add_js。

谢谢!