annotate default/node_modules/shoestring/CONTRIBUTING.md @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 # Contributing to Shoestring
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 Contributions are appreciated. In order for us to consider including a contribution, it does have to meet a few criteria:
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 * Code is specific to one issue (eg. feature, extension or bug)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 * Code is formatted according to JavaScript Style Guide.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7 * Code has full test coverage and all tests pass.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 ## Feature Parity
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 Shoestring isn't attempting to reach feature parity with jQuery. It may not even support the same invocation patterns for included methods. To prevent surprises we've started adding exceptions into the `-dev` builds so that when a feature isn't supported it's obvious. If you find a feature missing (other than an absent method/object) please consider adding an `error` call and a descriptive error message. For example, in `src/extensions/dom/prev.js`:
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 ```javascript
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 shoestring.fn.prev = function(selectors){
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 var ret = [], next;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 //>>includeStart("development", pragmas.development);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 if( selectors ){
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 shoestring.error( 'prev-selector' );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 //>>includeEnd("development");
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 this.each(function(){
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 next = this.previousElementSibling;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 if( next ){
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 ret = ret.concat( next );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 });
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 return shoestring(ret);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 ```
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 Here, we're throwing an error if the selectors argument is passed since we don't support that invocation pattern. **Note** the pragmas are defined so that they are only included in development builds and should be duplicated at other locations. To define or change the message associated with `prev-selector` see `src/util/errors.js`:
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 ```javascript
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 shoestring.enUS = {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 errors: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 ...
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 'prev-selector' : "Shoestring does not support passing selectors into .prev, try .prev().filter(selector)"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 ...
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49 ```
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 ## Code to an Issue
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 Use a separate git branch for each contribution. Give the branch a meaningful name.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54 When you are contributing a new extensions use the name of this extension, like `dom-toggleclass`.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 Otherwise give it a descriptive name like `doc-generator` or reference a specific issue like `issues-12`.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 When the issue is resolved create a pull request to allow us to review and accept your contribution.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58 **NOTE** All changes are considered carefully but additions especially so. We are particularly interested in retaining a small footprint and if a method is present, history tells us that someone will use it.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 ## JavaScript Style Guide
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 Code should be formatted according to the [jQuery JavaScript Style Guide](http://contribute.jquery.org/style-guide/).
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 ## Test coverage
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 Code should be covered by unit tests. The tests are located in `test/unit/` and written in [QUnit](http://qunitjs.com/).
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 When you add a new feature like an extension. Make sure to also add tests for your new code, for this case in `test/unit/extensions.js`.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 To check if all tests pass run `grunt qunit`. You can use `grunt watch` to continuously run the tests while you develop.