<commit_before>css-lint
======
This is a CSS linter created for the Carnegie Mellon Univeristy course *'15-237: Developing Cross Platform Web Applications'*.

MIT Lisence.

##Functionality
Currently, the css linter has the following functionality:

* Validating values of selected properties (see below for more info).
* Validating consistent indentation (using tab characters or 4-space tabs).
* Validating newlines following every declaration and rule.
* Validating property uniqueness within any rule.
* Validating declaraciton count (default: no more than 25 declarations/rule).
* Validating correct spacing according to our style guide (see below for more info).

Additionally, the code exists for extracting *ids* and *classes* from .HTML files in case you want to add the functionality to cross-reference *ids* or *classes* between .HTML and .CSS files. The code is in `csslint.js`, but not exported to the module. 

##Property-Value Validation
In order to validate the correctness of properties and their values, we use the file `dictionary.js`. Currently, it only contains very few properties and values since adding them all would be very time consuming.

In order to add Property-Value pairs, you need to change the following code in `dictionary.js`:

``
module.exports = {
	background: [isColor, isUrl],
	position: ["static", "absolute", "fixed", "relative", "inherit"],
	color: [isColor]
}
``

You can add two types of values: strings or functions. In the example above `position` simply has an array of strings it accepts as values. On the other hand, `background` has two functions that it accepts as values. The functions should take in a string `value` and return true or false. For example, `isColor` accepts a string and uses regex to determine whether it is one of the default CSS colors or in the form of "#XXX" or "#XXXXXX".

##How to Use
`csslint.js` exports two functions: `parseCssFile(path, callback)` and `parseCssText(text)`.

`parseCssFile` is asynchronous (clearly...) and the callback passed to it should take two arguments `(err, result)`. If there are any errors with the linter itself or any of the dependencies, `err` will be set to true, and otherwise null. The `result` object is of the form `{err: boolean, messages[errmsg1, errmsg2, ...]}` (where `errmsg1` and `errmsg2` are strings). The same `result` object is returned *synchronously* from `parseCssText`.

##Note About Declaration Count
If you would like to change the number of declaration counts allowed within a single rule, see the 6th line of the `parseCssText` function in `csslint.js`.
<commit_msg>fixed readme again<commit_after>css-lint
======
This is a CSS linter created for the Carnegie Mellon Univeristy course *'15-237: Developing Cross Platform Web Applications'*.

MIT Lisence.

##Functionality
Currently, the css linter has the following functionality:

* Validating values of selected properties (see below for more info).
* Validating consistent indentation (using tab characters or 4-space tabs).
* Validating newlines following every declaration and rule.
* Validating property uniqueness within any rule.
* Validating declaraciton count (default: no more than 25 declarations/rule).
* Validating correct spacing according to our style guide (see below for more info).

Additionally, the code exists for extracting *ids* and *classes* from .HTML files in case you want to add the functionality to cross-reference *ids* or *classes* between .HTML and .CSS files. The code is in `csslint.js`, but not exported to the module. 

##Property-Value Validation
In order to validate the correctness of properties and their values, we use the file `dictionary.js`. Currently, it only contains very few properties and values since adding them all would be very time consuming.

In order to add Property-Value pairs, you need to change the following code in `dictionary.js`:

``
module.exports = {

	background: [isColor, isUrl],
	position: ["static", "absolute", "fixed", "relative", "inherit"],
	color: [isColor]
	
}
``

You can add two types of values: strings or functions. In the example above `position` simply has an array of strings it accepts as values. On the other hand, `background` has two functions that it accepts as values. The functions should take in a string `value` and return true or false. For example, `isColor` accepts a string and uses regex to determine whether it is one of the default CSS colors or in the form of "#XXX" or "#XXXXXX".

##How to Use
`csslint.js` exports two functions: `parseCssFile(path, callback)` and `parseCssText(text)`.

`parseCssFile` is asynchronous (clearly...) and the callback passed to it should take two arguments `(err, result)`. If there are any errors with the linter itself or any of the dependencies, `err` will be set to true, and otherwise null. The `result` object is of the form `{err: boolean, messages[errmsg1, errmsg2, ...]}` (where `errmsg1` and `errmsg2` are strings). The same `result` object is returned *synchronously* from `parseCssText`.

##Note About Declaration Count
If you would like to change the number of declaration counts allowed within a single rule, see the 6th line of the `parseCssText` function in `csslint.js`.

{'fraction_non_alphanumeric': 0.07993850883935434, 'fraction_numerical': 0.004996156802459646, 'mean_word_length': 4.796213808463252, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1232763', 'n_tokens_mistral': 1389, 'n_tokens_neox': 1318, 'n_words': 748}