<commit_before># Jessie

Lean, beautiful and smart

## About Jessie's design

Jessie has a flat API. It is just a list of functions. Each function has many renditions. Each rendition is based on feature detection and testing. Let's take one example:

`jessie.attachListener` is a function and it currently has two renditions. One rendition uses W3C compliant `el.addEventListener` and the uses Microsofts implementation `el.attachEvent`.

Now some functions depend on other functions and properties. For example `jessie.attachBoundListener` depends on `jessie.attachListener` and `jessie.bind`.

## Dynamic API

Most of the jessie functions are dynamic. This means the calling application should check the functions existence before using them allowing the application to degrade (as if JavaScript was turned off). Let's take an example:

	if(jessie.attachListener && jessie.ajax) {
		// write an application that relies on (and uses) attachListener and ajax
	}

Peter Michaux has an excellent article based on this concept found: [here](hhttp://peter.michaux.ca/articles/cross-browser-widgets).

## Builder

The builder has been created using Node so you must install that first. 

### About the builder<commit_msg>readme updates<commit_after># Jessie

Lean, beautiful and smart

## About Jessie's design

Jessie has a flat API. It is just a list of functions. Each function has many renditions. Each rendition is based on feature detection and testing. Let's take one example:

`jessie.attachListener` is a function and it currently has two renditions. One rendition uses W3C compliant `el.addEventListener` and the uses Microsofts implementation `el.attachEvent`.

Now some functions depend on other functions and properties. For example `jessie.attachBoundListener` depends on `jessie.attachListener` and `jessie.bind`.

## Dynamic API

Most of the jessie functions are dynamic. This means the calling application should check the functions existence before using them allowing the application to degrade (as if JavaScript was turned off). Let's take an example:

	if(jessie.attachListener && jessie.ajax) {
		// write an application that relies on (and uses) attachListener and ajax
	}

<NAME> has an excellent article based on this concept found: [here](http://peter.michaux.ca/articles/cross-browser-widgets).

## Builder

The builder has been created using Node so you must install that first. 

### About the builder
{'fraction_non_alphanumeric': 0.0643298969072165, 'fraction_numerical': 0.0008247422680412372, 'mean_word_length': 4.735224586288416, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5638788', 'n_tokens_mistral': 641, 'n_tokens_neox': 607, 'n_words': 313}