首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有工具可以重构YAML文件,排序行,从点格式切换到缩进?

是否有工具可以重构YAML文件,排序行,从点格式切换到缩进?
EN

Stack Overflow用户
提问于 2014-06-01 07:29:00
回答 1查看 719关注 0票数 1

在Symfony 2中,我使用translation:update命令从我已经定义了翻译字符串的模板中生成翻译YML文件。

我得到.yml文件,其中所有的东西都是混在一起的。

我正在寻找一个工具,一个可以重构它的脚本:

代码语言:javascript
复制
menu.home: __en.menu.home
menu.projects: __en.menu.projects
information.address: __en.information.address
information.agent.languages.english: __en.information.agent.languages.english
information.agent.languages.russian: __en.information.agent.languages.russian
information.agent.name: __en.information.agent.name

致:

代码语言:javascript
复制
information:
  address: __en.information.address
  agent:
    languages:
      english: __en.information.agent.languages.english
      russian: __en.information.agent.languages.russian
    name: __en.information.agent.name
menu:
  home: __en.menu.home
  projects: __en.menu.projects
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-01 10:17:54

下面是您要求的代码片段:

代码语言:javascript
复制
use Symfony\Component\Yaml\Yaml;
use Symfony\Component\Yaml\Dumper;
// ...

$dottedYaml = Yaml::parse(file_get_contents('dotted-file.yml'));

$nestedYaml = array();
foreach ($dottedYaml as $dottedKey => $value) {
    $levels = explode('.', $dottedKey);
    $levelYaml =& $nestedYaml;
    do {
        $level = array_shift($levels);
        if (!isset($levelYaml[$level])) {
            $levelYaml[$level] = array();
        }
        $levelYaml =& $levelYaml[$level];
    } while (count($levels));
    $levelYaml = $value;
}

$dumper = new Dumper();
file_put_contents('nested-file.yml', $dumper->dump($nestedYaml, 5));

请注意,即使我的代码适用于您的示例,如果您有以下内容:

代码语言:javascript
复制
menu: "here is the problem"
menu.home: __en.menu.home
menu.projects: __en.menu.projects

如果某个级别包含标量值和嵌套值数组,则无法实际转换为嵌套表示法,除非确定某种约定:

代码语言:javascript
复制
menu:
  home: __en.menu.home
  projects: __en.menu.projects
  value: "here is the problem" # we made up a "value" attribute to store the top level value
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23977657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档