|
4 | 4 |
|
5 | 5 | A modular, clean and powerful extension of the OCaml standard library.
|
6 | 6 |
|
| 7 | +https://c-cube.github.io/ocaml-containers/last/[(Jump to the current API documentation)]. |
| 8 | + |
7 | 9 | Containers is an extension of OCaml's standard library (under BSD license)
|
8 | 10 | focused on data structures, combinators and iterators, without dependencies on
|
9 | 11 | unix, str or num. Every module is independent and is prefixed with 'CC' in the
|
@@ -91,7 +93,7 @@ and <<tutorial,the tutorial below>> for a gentle introduction.
|
91 | 93 |
|
92 | 94 | == Documentation
|
93 | 95 |
|
94 |
| -In general, see http://c-cube.github.io/ocaml-containers/ or |
| 96 | +In general, see http://c-cube.github.io/ocaml-containers/last/ or |
95 | 97 | http://cedeela.fr/~simon/software/containers for the **API documentation**.
|
96 | 98 |
|
97 | 99 | Some examples can be found link:doc/containers.adoc[there].
|
@@ -135,18 +137,54 @@ To build the small benchmarking suite (requires https://github.com/chris00/ocaml
|
135 | 137 |
|
136 | 138 | == Contributing
|
137 | 139 |
|
138 |
| -PRs on github are welcome (patches by email too, if you prefer so). |
| 140 | +PRs on github are very welcome (patches by email too, if you prefer so). |
| 141 | + |
| 142 | +[[first-time-contribute]] |
| 143 | +=== First-Time Contributors |
| 144 | + |
| 145 | +Assuming your are in a clone of the repository: |
| 146 | + |
| 147 | +. Some dependencies are required, you'll need |
| 148 | + `opam install benchmark qcheck qtest sequence`. |
| 149 | +. run `make devel` to enable everything (including tests). |
| 150 | +. make your changes, commit, push, and open a PR. |
| 151 | +. use `make test` without moderation! It must pass before a PR |
| 152 | + is merged. There are around 900 tests right now, and new |
| 153 | + features should come with their own tests. |
139 | 154 |
|
140 |
| -A few guidelines: |
| 155 | +If you feel like writing new tests, that is totally worth a PR |
| 156 | +(and my gratefulness). |
| 157 | + |
| 158 | +=== General Guidelines |
| 159 | + |
| 160 | +A few guidelines to follow the philosophy of containers: |
141 | 161 |
|
142 | 162 | - no dependencies between basic modules (even just for signatures);
|
143 | 163 | - add `@since` tags for new functions;
|
144 |
| -- add tests if possible (using `qtest`). |
| 164 | +- add tests if possible (using https://github.com/vincent-hugot/iTeML/[qtest]). There are numerous inline tests already, |
| 165 | +to see what it looks like search for comments starting with `(*$` |
| 166 | +in source files. |
145 | 167 |
|
146 |
| -It is helpful to run `make devel` to enable everything. Some dependencies |
147 |
| -are required, you'll need `opam install benchmark qcheck qtest sequence`. |
| 168 | +=== For Total Beginners |
148 | 169 |
|
149 |
| -Powered by image:http://oasis.forge.ocamlcore.org/oasis-badge.png[alt="OASIS", style="border: none;", link="http://oasis.forge.ocamlcore.org/"] |
| 170 | +Thanks for wanting to contribute! |
| 171 | +To contribute a change, here are the steps (roughly): |
| 172 | + |
| 173 | +. click "fork" on https://github.com/c-cube/ocaml-containers on the top right of the page. This will create a copy of the repository on your own github account. |
| 174 | +. click the big green "clone or download" button, with "SSH". Copy the URL (which should look like ` [email protected]:<your username>/ocaml-containers.git`) into a terminal to enter the command: |
| 175 | ++ |
| 176 | +[source,sh] |
| 177 | +---- |
| 178 | +$ git clone [email protected]:<your username>/ocaml-containers.git |
| 179 | +---- |
| 180 | ++ |
| 181 | +. then, `cd` into the newly created directory. |
| 182 | +. make the changes you want. See <<first-time-contribute>> for |
| 183 | + more details about what to do in particular. |
| 184 | +. use `git add` and `git commit` to commit these changes. |
| 185 | +. `git push origin master` to push the new change(s) onto your |
| 186 | + copy of the repository |
| 187 | +. on github, open a "pull request" (PR). Et voilà ! |
150 | 188 |
|
151 | 189 | [[tutorial]]
|
152 | 190 | == Tutorial
|
@@ -441,3 +479,6 @@ printer:: `'a printer = Format.formatter -> 'a -> unit` is a pretty-printer
|
441 | 479 | === Extended Documentation
|
442 | 480 |
|
443 | 481 | See link:doc/containers.adoc[the extended documentation] for more examples.
|
| 482 | + |
| 483 | +Powered by image:http://oasis.forge.ocamlcore.org/oasis-badge.png[alt="OASIS", style="border: none;", link="http://oasis.forge.ocamlcore.org/"] |
| 484 | + |
0 commit comments