本文整理汇总了TypeScript中config-parser.Ast类的典型用法代码示例。如果您正苦于以下问题:TypeScript Ast类的具体用法?TypeScript Ast怎么用?TypeScript Ast使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Ast类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: updateMissionSqm
function updateMissionSqm(missionSqmPath: string): Parser.Node {
var missionSqm = fs.readFileSync(missionSqmPath, 'UTF-8');
var ast = Parser.create(missionSqm, Lexer.create(missionSqm)).parse();
_.remove(Ast.select(ast, 'Mission.Entities')[0].fields, n => {
var dataType = Ast.select(n, 'dataType')[0];
return dataType && dataType.value != 'Group';
});
var groupItems = Ast.select(ast, 'Mission.Entities.Item*').filter(e => Ast.select(e, 'dataType')[0].value == 'Group');
_.each(groupItems, g => {
_.chain(Ast.select(g, 'Entities.Item*'))
.each(v => { removeRolePrefix(v); })
.value();
});
var hmgGroups = Ast.select(ast, 'Mission.Entities.Item*')
.filter(e => Ast.select(e, 'dataType')[0].value == 'Group')
.filter(e => Ast.select(e, 'Entities.Item0.Attributes.description')[0].value.indexOf('HMG') >= 0);
_.each(hmgGroups, g => {
_.remove(Ast.select(g, 'Entities')[0].fields, u => {
var description = Ast.select(u, 'Attributes.description')[0];
return description
&& description.value.indexOf('HMG') >= 0
&& description.value.indexOf('Assistant') >= 0;
});
Ast.select(g, 'Entities.items')[0].value = Ast.select(g, 'Entities.Item*').length;
Ast.select(g, 'Entities.Item2')[0].fieldName = "Item1";
});
Ast.select(ast, 'Mission.Entities.items')[0].value = Ast.select(ast, 'Mission.Entities.Item*').length;
return ast;
}
示例2:
_.each(hmgGroups, g => {
_.remove(Ast.select(g, 'Entities')[0].fields, u => {
var description = Ast.select(u, 'Attributes.description')[0];
return description
&& description.value.indexOf('HMG') >= 0
&& description.value.indexOf('Assistant') >= 0;
});
Ast.select(g, 'Entities.items')[0].value = Ast.select(g, 'Entities.Item*').length;
Ast.select(g, 'Entities.Item2')[0].fieldName = "Item1";
});
示例3: updateMissionSqm
function updateMissionSqm(missionSqmPath: string) {
var missionSqm = fs.readFileSync(missionSqmPath, 'UTF-8');
var ast = Parser.create(missionSqm, Lexer.create(missionSqm)).parse();
_.remove(Ast.select(ast, 'Mission.Entities')[0].fields, n => {
var dataType = Ast.select(n, 'dataType')[0];
return dataType && dataType.value != 'Group'
});
Ast.select(ast, 'Mission.Entities.items')[0].value = Ast.select(ast, 'Mission.Entities.Item*').length;
var groupItems = Ast.select(ast, 'Mission.Entities.Item*').filter(e => Ast.select(e, 'dataType')[0].value == 'Group');
_.each(groupItems, g => {
_.chain(Ast.select(g, 'Entities.Item*'))
.each(v => { removeRolePrefix(v); })
.value();
});
fs.writeFileSync(missionSqmPath, PrettyPrinter.create('\t').print(ast), 'UTF-8');
}
示例4: getTemplates
function getTemplates(filePath: string, parentSelector: string): Template[] {
var ast = parseFile(filePath);
var templateAst = Ast.select(ast, `${parentSelector}.*`);
return templateAst.map(ut => ({
id: ut.fieldName,
name: ut.fieldName,
description: ''
}));
}
示例5: generateMission
export function generateMission(terrainId: string): Mission.GeneratedMission {
var mission = defaultMission(terrainId);
var generatedMission = Mission.generateMission(mission);
var missionSqmPath = `${generatedMission.missionDir}/mission.sqm`;
var missionAst = updateMissionSqm(missionSqmPath);
var maxPlayers = Mission.getPlayableUnitCount(missionAst);
var fullMissionName = `ark_${Mission.missionTypeToMissionNamePrefix(Mission.stringToMissionType(mission.missionTypeName))}${maxPlayers}_${mission.briefingName.toLowerCase()}`;
updateDescriptionExt(`${generatedMission.missionDir}/description.ext`, maxPlayers);
generatedMission.downloadMissionName = `${fullMissionName}.${mission.terrainId}`;
Ast.select(missionAst, 'ScenarioData.Header.maxPlayers')[0].value = maxPlayers;
Ast.select(missionAst, 'Mission.Intel.briefingName')[0].value = fullMissionName;
fs.writeFileSync(missionSqmPath, PrettyPrinter.create('\t').print(missionAst), 'UTF-8');
fs.copySync(`${RE_HOME}/blufor_briefing.sqf`, `${generatedMission.missionDir}/hull3/briefing/blufor.sqf`);
fs.copySync(`${RE_HOME}/opfor_briefing.sqf`, `${generatedMission.missionDir}/hull3/briefing/opfor.sqf`);
return generatedMission;
}
示例6:
templates.forEach(t => {
Ast.select(admiralAst, 'Admiral.' + t.selector)[0].value = t.value;
})
示例7: removeRolePrefix
_.each(groupItems, g => {
_.chain(Ast.select(g, 'Entities.Item*'))
.each(v => { removeRolePrefix(v); })
.value();
});
示例8:
var groupItems = Ast.select(ast, 'Mission.Entities.Item*').filter(e => Ast.select(e, 'dataType')[0].value == 'Group');