我有一个类从不同的模块A导入类并实例化它。B在我对 class 的测试中,A我想存根/模拟 class 的一些方法B。
一些示例代码:
// Formatter.ts
export class Formatter {
format(msg: string): string {
return `--- [INFO] ${msg}\n`;
}
}
// FormattedStore.ts
import {Formatter} from '@/Formatter'
export class FormattedStore implements Store {
public store: string[];
construct() {
this.formatter = new Formatter();
this.store = [];
}
write(msg: string): void {
this.store.push(this.formatter.format(msg));
}
}
// FormattedStore.spec.ts
import {FormattedStore} from '@/FormattedStore';
import {Formatter} from '@/Formatter'
import {vi, expect, test} from 'vitest';
vi.mock( '@/Formatter', …Run Code Online (Sandbox Code Playgroud) 我希望生成的输出文件包含指向相对于样式表的路径的文件路径.样式表的位置可以更改,我不想使用样式表的参数.我的解决方案是获取完整的样式表URI:
<xsl:variable name="stylesheetURI" select="document-uri(document(''))" />
Run Code Online (Sandbox Code Playgroud)
现在我只需要切断文件名$stylesheetURI.这激发了我编写PHP函数basename和dirname的 XSLT 2.0克隆:
<xsl:function name="de:basename">
<xsl:param name="file"></xsl:param>
<xsl:sequence select="tokenize($file, '/')[last()]" />
</xsl:function>
<xsl:function name="de:dirname">
<xsl:param name="file"></xsl:param>
<xsl:sequence
select="string-join(tokenize($file, '/')[position() != last()], '/')" />
</xsl:function>
Run Code Online (Sandbox Code Playgroud)
现在我可以在我的模板中做这样的事情:
<img src="{concat(de:dirname($stylesheetURI),'/img/myimage,png')}" />
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有更好/更快的方法来实现本机XSLT 2.0?
我正在使用Symfony 2从MySQL数据库中的数据生成我的页面.对于大多数内容,用户必须经过身份验证,但内容本身不会经常更改,也不需要为用户进行自定义.那么在保持auth检查的同时避免数据库调用的缓存策略是什么?
除了标准leaflet.js地图上的一个国家外,是否可以调暗或隐藏"世界其他地方"?Mabye与国家的轮廓形成了某种"倒多边形"?任何代码示例或链接将不胜感激.
我继承了JavaScript代码,其中Ajax处理程序的成功回调启动另一个Ajax调用,其中成功回调可能会也可能不会启动另一个Ajax调用.这导致了深层嵌套的匿名函数.也许有一个聪明的编程模式,避免深度嵌套,更干.此外,还存在整个函数中使用的内部变量myVar1和myVar2的问题.
jQuery.extend(Application.Model.prototype, {
process: function() {
var myVar1;
// processing using myVar1;
jQuery.ajax({
url:myurl1,
dataType:'json',
success:function(data) {
var myVar2;
// process data using myVar1, set state of myVar2,
// then send it back
jQuery.ajax({
url:myurl2,
dataType:'json',
success:function(data) {
// do stuff with myVar1 and myVar2
if(!data.ok) {
jQuery.ajax({
url:myurl2,
dataType:'json',
success:mycallback
});
}
else {
mycallback(data);
}
}
});
}
});
}
});
Run Code Online (Sandbox Code Playgroud) 我正在写一个词法分析器(带有re2c)和一个解析器(带有Lemon),用于稍微复杂的数据格式:类似CSV,但在特定位置使用特定的字符串类型(仅限字母数字字符,字母数字字符和减号,除了引号和逗号但带有平衡括号等),括号和字符串中的字符串看起来像函数调用,可以包含可以包含参数的开括号和右括号.
我的第一个镜头是一个有很多州的词法分析器,每个州都适应特定的字符串格式.但是,在词法分析器的许多无意义的"意外输入"消息(它变得非常大)之后,我意识到它可能正在尝试进行解析器的工作.我取消了我的第一次尝试并且使用只有一个状态的词法分析器,许多字符标记和一个将标记组合成不同字符串类型的解析器.这样做效果更好,当某些东西关闭时,我从解析器中获得更多有用的语法错误,但它仍然感觉不太正确.我正在考虑向词法分析器添加一个或两个状态,但是从解析器启动状态,它具有更好的"概述",在给定的实例中需要哪种字符串类型.总的来说我觉得有点傻:(
我没有正式的CS背景,并且有点偏离数学重的理论.但也许有一个教程或书籍可以解释词法分析者应该(而且不应该)做什么以及解析器应该做哪些工作.如何构造良好的令牌模式,何时使用词法分析器状态,何时以及如何使用递归规则(使用LALR解析器),如何避免使用恶意规则.一本实用的食谱,教授基础知识."Lex和YACC入门/ HOWTO"很不错,但还不够.由于我只想解析一种数据格式,因此关于编译器构建的书籍(如红龙书)对我来说看起来有点过分.
或者也许有人可以在这里给我一些简单的规则.
我有一个矩形(称为目标),并希望在旁边放置另一个矩形(称为卫星).卫星具有一个位置(顶部,底部,左侧,右侧),用于确定相对于目标的放置边缘.它还有一个对齐方式 (左侧,中间,右侧为顶部和底部位置,顶部,中间和底部为左侧和右侧位置).
例:
+----------+----------------------------+
| | |
| Target | Satellite, Position=RIGHT, |
| | Align=TOP |
| | |
| |----------------------------+
| |
+----------+
Run Code Online (Sandbox Code Playgroud)
我知道目标的左上角坐标以及它的宽度和高度.我也知道卫星的宽度和高度,并想要计算它的左上角坐标.我可以将其作为一系列12 if条款来实现,但也许有更优雅,数学或算法的方法来实现它.还有另一种方法:
# s = satellite, t = target
if pos == "top" && align == "left"
s.x = t.x
s.y = t.y - s.height
else if pos == "top" && align == "center"
s.x = t.x + t.width / 2 - s.width …Run Code Online (Sandbox Code Playgroud) 如何在没有root权限的Linux服务器上安装mongodb?这可能吗?步骤是什么?有没有办法配置mongo不使用/ data/db?
暂时我不能使用ES6/ES2015而且我坚持使用ES5来编写Redux减速器.由于reducer的state参数必须是不可变的,即使它未定义,我想出了以下模式:
function myState( state, action ) {
if ( typeof state === 'undefined' ) {
return myState( { value1: 'foo', value2: 'bar' }, action );
}
// actual state calculation here
}
Run Code Online (Sandbox Code Playgroud)
有关如何使用ES5确保默认值的任何其他建议或意见?
编辑:经过一些问题和建议:我做递归调用的原因是我非常认真地对待"状态是不可变的".所以即使state参数是undefined,我也不会改变参数变量本身.我把不变性带到了太远了吗?
我有以下导出常量的模块:
/** @module my_constants */
module.exports = {
/** @const {number} */
STATE_FOO: 1,
/** @const {number} */
STATE_BAR: 2
}
Run Code Online (Sandbox Code Playgroud)
现在我有另一个模块,其中返回对象可以包含这些常量之一。我怎样才能参考它?
我已经尝试过如下:
/**
* @typedef {Object} Result
* @property {string} name
* @property {my_constants.STATE_FOO|my_constants.STATE_BAR}
*/
Run Code Online (Sandbox Code Playgroud)
在 JSDoc 输出中,常量逐字打印且未链接。有什么方法可以链接到常量或模块吗my_constants?
javascript ×4
php ×2
ajax ×1
caching ×1
callback ×1
character ×1
constants ×1
coordinates ×1
dataformat ×1
ecmascript-5 ×1
filepath ×1
function ×1
jquery ×1
jsdoc ×1
leaflet ×1
lexer ×1
math ×1
mocking ×1
module ×1
mongodb ×1
node.js ×1
parsing ×1
redux ×1
ruby ×1
string ×1
symfony ×1
typescript ×1
vitest ×1
xslt ×1