| 615 | this.close(); |
| 616 | } |
| 617 | generateDefines(tool, prefix, defines) { |
| 618 | let name; |
| 619 | |
| 620 | for (name in defines) { |
| 621 | let value = defines[name]; |
| 622 | name = name.toUpperCase(); |
| 623 | |
| 624 | switch (typeof value) { |
| 625 | case "number": |
| 626 | case "boolean": |
| 627 | this.line(`#define ${prefix + name} (${value})`); |
| 628 | break; |
| 629 | |
| 630 | case "string": |
| 631 | if ("#" == value.charAt(0)) |
| 632 | this.line(`#define ${prefix + name} "${value.substring(1)}"`); |
| 633 | else |
| 634 | this.line(`#define ${prefix + name} ${value}`); |
| 635 | break; |
| 636 | |
| 637 | case "object": |
| 638 | if (null === value) |
| 639 | this.line(`#define ${prefix + name} NULL`); |
| 640 | else if (Array.isArray(value)) { |
| 641 | if (value.every(item => "number" == typeof item)) { |
| 642 | this.write(`#define ${prefix + name} {`); |
| 643 | for (let i = 0, length = value.length; i < length; i++) { |
| 644 | if (i) |
| 645 | this.write(", "); |
| 646 | this.write(value[i]); |
| 647 | } |
| 648 | this.write("}\n"); |
| 649 | } |
| 650 | else |
| 651 | if (value.every(item => "string" == typeof item)) { |
| 652 | this.write(`#define ${prefix + name} \\\n`); |
| 653 | for (let i = 0, length = value.length; i < length; i++) { |
| 654 | if (i) |
| 655 | this.write("\\\n"); |
| 656 | this.write(value[i]); |
| 657 | } |
| 658 | this.write("\n"); |
| 659 | } |
| 660 | } |
| 661 | else |
| 662 | this.generateDefines(tool, prefix + name + "_", value); |
| 663 | break; |
| 664 | } |
| 665 | } |
| 666 | } |
| 667 | } |
| 668 | |
| 669 | class XcodeFile extends PrerequisiteFile { |