Mason Bricks 多个变量和循环

问题描述 投票:0回答:1

我正在使用

Mason Bricks

我知道,你也可以有文件中的循环。但是还有一种方法可以使用循环从给定的 args 创建

files
吗?

这是我想要完成的结构:

my_example_flow/
├── view.dart               # Contains the MyExampleFlow class
└── views/
    ├── view_1/
    │   └── view.dart       # Contains class MyExampleFlowView1
    ├── view_2/
    │   └── view.dart       # Contains class MyExampleFlowView2
    └── view_3/
        └── view.dart       # Contains class MyExampleFlowView3

但浏览量应该是动态的。

我的

yaml
目前看起来像这样:

name: view_brick
description: Generates views and a flow structure
version: 0.1.0+1
environment:
  mason: ">=0.1.0-dev.41 <0.1.0"

vars:
  flow_name:
    type: string
    description: "The name of the general flow"
  views:
    type: list
    description: "Comma-separated list of views (PascalCase, e.g. View1,View2)"

但我现在陷入困境了。如何得到上面的结构呢?如果您需要更多信息,请告诉我!

mason
有可能实现这样的事情吗?

更新:

我还尝试按照 @Randals 的建议添加 \ 而不是 / 。这就是它的样子:

enter image description here

但是仍然没有错误,但它只是生成:

my_example_flow/
  ├── view.dart 
dart code-generation mason
1个回答
0
投票

是的,您可以使用 Mason 动态实现所需的目录结构。在 Mason 中,您可以定义文件和目录模板,还可以利用循环根据输入参数创建多个文件。以下是如何在梅森砖中进行设置的方法。

更新您的 mason.yaml 文件:

首先,确保您的 mason.yaml 文件设置为正确接受视图列表。您需要将视图列表解析为可以迭代的格式。这是 mason.yaml 的修订版本:

name: view_brick
description: Generates views and a flow structure
version: 0.1.0+1
environment:
  mason: ">=0.1.0-dev.41 <0.1.0"

vars:
  flow_name:
    type: string
    description: "The name of the general flow"
  views:
    type: list
    description: "List of views (PascalCase, e.g. View1, View2)"

定义文件结构:

在 mason.yaml 中,使用 {{#each}} 循环定义目录结构,以根据传入的视图创建每个视图文件夹和文件。该结构应如下所示: 文件:

- path: "{{flow_name}}/view.dart"
    template: view.dart

  - path: "{{flow_name}}/views/{{#each views}}{{this}}/{{/each}}view.dart"
    template: view.dart

创建模板文件:

在brick目录中,为view.dart创建一个模板(将用于主流程和单个视图)。例如,创建一个名为 view.dart.mason 的文件,其中包含以下内容:

// This is the main flow view
class MyExampleFlow {
  // Your flow implementation
}
For the view files, you can have something like this in a separate view.dart.mason template:
// This is the view file for {{name}}
class MyExampleFlow{{name}} {
  // Implementation for this view
}

运行 Mason 生成文件:

当您运行 Mason 生成文件时,请确保提供 flow_name 和 PascalCase 格式的以逗号分隔的视图列表:

mason make view_brick --flow_name my_example_flow --views View1,View2,View3

• 确保您的视图列表正确传递,并且 mason.yaml 中的结构与您正在创建的模板一致。 • 如果您遇到任何问题或没有生成任何内容,请仔细检查您的路径定义并确保您的模板正确命名并放置在brick 文件夹中。

© www.soinside.com 2019 - 2024. All rights reserved.