検索条件
お知らせ
現在サイトのリニューアル作業中のため、全体的にページの表示が乱れています。
パッケージマネージャーで入れられるならそれに越したことはない
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
tar vzfx go1.9.linux-amd64.tar.gz
sudo mv go /usr/local/
# goの実行パスとGOPATH(~/go/bin)をPATHに指定する
# GOPATHはglobalなnpm_modulesみたいなもんだと思う
export PATH=$PATH:/usr/local/go/bin:~/go/bin
Env |
Ver |
Jinja |
2.11.0 |
Python |
3.8.5 |
- 変数名[begin:end]で指定する
{% set some_variable = string_variable[0:100] %}
Env |
Ver |
Jinja |
2.11.0 |
Python |
3.8.5 |
- Jinja2でループ処理の中で変数の足しこみとかをするやつ
- 代入先の変数宣言は
{% set ns = namespace(title = "") %}
のようにしてやる必要がある
- 後はループの中で
set
してやれば上手くいく
- 変数は宣言したブロックがスコープになるので、スコープを広げたいときは適当にブロックを上げてやると良い
- MkDocsのテンプレートでパンくずリストを生成するコード
{% set ns = namespace(title = "") %}
{% for doc in page.ancestors %}
{% set ns.title = "[" + doc.title + "] " + ns.title %}
{% endfor %}
Env |
Ver |
Jinja |
2.11.0 |
Python |
3.8.5 |
─src
├─app
│ ├─configs
│ │ └config.yaml
│ ├─templates
│ │ └─main.html
│ └─__init__.py
└─main.py
from jinja2 import Environment, PackageLoader, select_autoescape
env = Environment(
# appはフォルダ構成のappフォルダを指す
loader=PackageLoader('app', 'templates'),
autoescape=select_autoescape(['html', 'xml'])
)
template = env.get_template('main.html')
# `render()` の引数は埋め込み変数を KeyValue 形式で指定
print(template.render(the='variables', go='here'))
Env |
Ver |
Jinja |
2.11.0 |
Python |
3.8.5 |
─src
├─app
│ ├─configs
│ │ └config.yaml
│ ├─templates
│ │ └─main.html
│ └─__init__.py
└─main.py
from yaml import safe_load as yamlLoad
from jinja2 import Environment, PackageLoader, select_autoescape
env = Environment(
loader=PackageLoader('app', 'templates'),
autoescape=select_autoescape(['html', 'xml'])
)
template = env.get_template('main.html')
with open('app/configs/config.yaml') as fYaml:
print(template.render(yamlLoad(fYaml)))
スプレッド演算子で引き渡した内容の内、一部だけを利用するケースを想定
type FooBar = {
foo: string;
bar: number;
};
/**
* `foo` と `bar` しか使われない関数
* @param arg
*/
export const spreadExample = (arg: FooBar) => {
return new Promise((resolve) => {
resolve([arg.foo, arg.bar]);
});
};
import * as spex from '../spreadExample';
const spiedSpreadExample = jest.spyOn(spex, 'spreadExample');
describe('spreadExample', () => {
it('example', async () => {
const test = {
foo: 'hoge',
bar: 123,
baz: true, // 今回の課題となる項目
};
// 余計な `baz` が流し込まれているため、
// 普通に検査しようとすると `baz` が邪魔で上手く行かないケース
await spex.spreadExample({ ...test });
expect(spiedSpreadExample).toBeCalled();
// コールバックで `expect.objectContaining()` を呼ぶことにより
// 見たい項目だけを検査することが可能(`baz` を見なくて済む
expect(spiedSpreadExample).toHaveBeenCalledWith(
expect.objectContaining({
foo: 'hoge',
bar: 123,
})
);
});
});
export const getBar = () => {
return new Date().toDateString();
};
import Foo from 'src/Foo';
const spiedGetBar = jest
.spyOn(Foo, 'getBar')
.mockReturnValue('Fri Mar 19 2021');