diff --git a/README.md b/README.md index 41ce1e8ae..0660205a8 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,9 @@ This tool is used to generate `dom.generated.d.ts` and `webworker.generated.d.ts` for TypeScript, and `domWeb.js` and `domWindows.js` for Visual Studio JavaScript language service. The input file is the XML spec file generated by the Microsoft Edge browser. ## Build Instruction -To build the tool, simply clone the repo, and run `build.cmd` in command line or powershell. If it runs successfully, the output files will be generated under the `generated` folder. +To build the tool, simply clone the repo, and run `build.cmd` (Windows) or `build.sh` (OS X/Unix) in command line. If it runs successfully, the output files will be generated under the `generated` folder. -## Code Structure -- `Shared.fs`: handles the parsing from XML spec file, and stores the common data structures for later use; -- `TS.fs`: handles the emitting of the `lib.d.ts` file; -- `JS.fs`: handles the emitting of the `domWeb.js` and `domWindows.js` +Note: for OS X/ Unix users, [Mono 4.2](http://www.mono-project.com/download/alpha/) is required. ## Contribution Guide The `dom.generated.d.ts` and `webworker.generated.d.ts` files in the TypeScript repo are used as baselines. @@ -21,6 +18,17 @@ For common changes, it is sufficient to change the json files. There are three json files that are used to alter the file generation: `addedTypes.json`, `overridingTypes.json` and `removedTypes.json`. The format of each file can be inferred from their existing content. +The common steps to send a pull request are: + 0. Open or refer to an issue in the [TypeScript repo](https://github.com/Microsoft/TypeScript). + 1. Add missing elements to `inputfiles/addedTypes.json`, overriding elements to `inputfiles/overridingTypes.json`, or elements to remove to `inputfiles/removedTypes.json`. + 2. Run the script locally to obtain new `dom.generated.d.ts` and `webworker.generated.d.ts`. + 3. Update the files in the `baselines` folder using the newly generated files. + +## Code Structure +- `Shared.fs`: handles the parsing from XML spec file, and stores the common data structures for later use; +- `TS.fs`: handles the emitting of the `lib.d.ts` file; +- `JS.fs`: handles the emitting of the `domWeb.js` and `domWindows.js` + ## Input Files: - `browser.webidl.xml`: the XML spec file generated by Microsoft Edge (due to the different updating schedules between Edge and TypeScript, this may **not** be the most up-to-date version of the spec.); - `webworker.webidl.xml`: contains additional types for webworker.