相关疑难解决方法(0)

我是否需要YAML中的字符串引号?

我正在尝试编写一个YAML字典,用于Rails项目的国际化.我有点困惑,因为在一些文件中,我看到双引号中的字符串,而有些没有.需要考虑以下几点:

  • 示例1 - 所有字符串都使用双引号;
  • 例2 - 没有字符串(除了最后两个)使用引号;
  • YAML菜谱说:双引号引起的字符串允许您使用escapings代表ASCII和Unicode字符.这是否意味着我只有在想要逃避某些字符时才需要使用双引号?如果是的话 - 为什么他们在第一个例子中到处使用双引号 - 只是为了统一/风格的原因?
  • 示例2的最后两行使用!- 非特定标记,而第一个示例的最后两行不使用 - 它们都有效.

我的问题是:在YAML中使用不同类型的引号有哪些规则?

可以这么说:

  • 一般来说,你不需要引号;
  • 如果你想转义字符使用双引号;
  • 使用!单引号,当...?!?

syntax quotes yaml

349
推荐指数
4
解决办法
14万
查看次数

我不明白YAML标签是什么

我在某种程度上得到它,但我还没有看到一个没有提出更多问题而不是答案的例子.

http://rhnh.net/2011/01/31/yaml-tutorial

# Set.new([1,2]).to_yaml
--- !ruby/object:Set 
hash: 
  1: true
  2: true
Run Code Online (Sandbox Code Playgroud)

我知道我们正在声明一个Set标签​​.我不知道后续哈希映射与它有什么关系.我们是在宣布架构吗?有人能给我看一个带有多个标签声明的例子吗?

我已经阅读了规范:http://yaml.org/spec/1.2/spec.html#id2761292

%TAG ! tag:clarkevans.com,2002:
Run Code Online (Sandbox Code Playgroud)

这是宣告架构吗?为了成功解析文件,解析器还需要做些什么吗?某种类型的模式文件?

http://www.yaml.org/refcard.html

Tag property: # Usually unspecified.
    none    : Unspecified tag (automatically resolved by application).
    '!'     : Non-specific tag (by default, "!!map"/"!!seq"/"!!str").
    '!foo'  : Primary (by convention, means a local "!foo" tag).
    '!!foo' : Secondary (by convention, means "tag:yaml.org,2002:foo").
    '!h!foo': Requires "%TAG !h! <prefix>" (and then means "<prefix>foo").
    '!<foo>': Verbatim tag (always means "foo").
Run Code Online (Sandbox Code Playgroud)

为什么与主标记和辅助标记相关,为什么辅助标记引用URI?有这些问题正在解决什么问题?

我似乎看到很多"他们是什么",没有"为什么他们在那里",或"他们用于什么".

tags yaml specifications pyyaml

34
推荐指数
1
解决办法
1万
查看次数

Rails i18N翻译yml文件中的惊叹号是什么意思?

我正在使用Rails i18n本地化我的网站.

在翻译yml文件中,我看到了

time:
    am: am
    formats:
      default: ! '%a, %d %b %Y %H:%M:%S %z'
      long: ! '%d %B, %Y %H:%M'
      short: ! '%d %b %H:%M'
    pm: pm
Run Code Online (Sandbox Code Playgroud)

(取自https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en-GB.yml)

感叹号是什么意思?如果你带走感叹号,它会有什么不同?

谢谢

ruby-on-rails internationalization

11
推荐指数
2
解决办法
2548
查看次数

反转.gitlab-ci.yml中的测试

我想防止使用gitlab CI测试规则来检查TODO注释(或其他有问题的字符串)。我在这里添加了最后一行:

.job_template: &template_test
  image: python:3.6-stretch
  tags:
    - python
  # ...

stages:
  - test

test:
  <<: *template_test
  stage: test
  script:
    - flake8 *.py
    - ! grep TODO *.py
Run Code Online (Sandbox Code Playgroud)

但是,当我查看运行器的输出时,它失败了:

$ flake8 *.py
$ grep TODO *.py
ERROR: Job failed: exit code 1
Run Code Online (Sandbox Code Playgroud)

Gitlab似乎吞下了感叹号!,该感叹号在外壳中用于抵消grep的返回值

gitlab-ci-runner

6
推荐指数
2
解决办法
211
查看次数