text:
![Spruce Logo](https://github.com/willowtreeapps/spruce-android/blob/master/imgs/header_image.png)

# Spruce Android Animation Library (and [iOS](https://github.com/willowtreeapps/spruce-ios))
[![CircleCI Build Status](https://circleci.com/gh/willowtreeapps/spruce-android.svg?style=shield)](https://circleci.com/gh/willowtreeapps/spruce-android)
[![License MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat)]()
[![Public Yes](https://img.shields.io/badge/Public-yes-green.svg?style=flat)]()

## What is it?
Spruce is a lightweight animation library that helps choreograph the animations on the screen. With so many different animation libraries out there, developers need to make sure that each view is animating at the appropriate time. Spruce can help designers request complex multi-view animations and not have the developers cringe at the prototype.

### Gradle
Add the following to your project's root build.gradle file
```gradle
repositories {
	maven {
		url  "https://dl.bintray.com/bfears/maven"
	}
}
```
Add the following to your project's build.gradle file

```gradle
dependencies {
    implementation 'com.willowtreeapps.spruce:spruce-android:1.0.3'
}
```

## Documentation
For javadocs checkout [the documentation](https://willowtreeapps.github.io/spruce-android/) for more information.

## Basic Usage
```java
Animator spruceAnimator = new Spruce
        .SpruceBuilder(parentViewGroup)
        .sortWith(new Default(/*interObjectDelay=*/50L))
        .animateWith(new Animator[] {DefaultAnimations.shrinkAnimator(parentViewGroup, /*duration=*/800)})
        .start();
```

Checkout [the builder documentation](https://willowtreeapps.github.io/spruce-android/com/willowtreeapps/spruce/Spruce.SpruceBuilder.html) for more information.

### Preparing for Animation
Spruce comes packed with `Animator` options within the `DefaultAnimations` class meant to make your life easier when calling an animation. Let's say we want to have your views fade in. For example, we would create an `animators = new Animator[] {}` and add `DefaultAnimations.fadeInAnimator(parentViewGroup, /*duration=*/800)` as an array item.
If you want a view to fade in, then you need to make sure that it is already faded out. To do that, we need to set the alpha to `0` on the views or you could first use a fade out animator.

### Running the Animation

Use the following command to run a basic animation on your view.

```java
Animator spruceAnimator = new Spruce
        .SpruceBuilder(parentViewGroup)
        .sortWith(new DefaultSort(/*interObjectDelay=*/50L))
        .animateWith(animators)
        .start();
```

Checkout [default animation documentation](https://willowtreeapps.github.io/spruce-android/com/willowtreeapps/spruce/animation/DefaultAnimations.html) for more information.

## Using a SortFunction
Luckily, Spruce comes with 8 `SortFunction` implementations with a wide open possibility to make more! Use the `SortFunction` to change the order in which views animate. Consider the following example:

```java
LinearSort sort = new LinearSort(/*interObjectDelay=*/100L, /*reversed=*/false, LinearSort.Direction.TOP_TO_BOTTOM);
```
In this example we have created a `LinearSort` which will have views animate in from the top to bottom. We can change the look and feel of the animation by using a `RadialSort` instead which will have the views animate in a circular fashion. If we wanted to use this `sort` in an actual Spruce `start()` call then that would look something like:

```java
Animator spruceAnimator = new Spruce
        .SpruceBuilder(parentViewGroup)
        .sortWith(new LinearSort(/*interObjectDelay=*/100L, /*reversed=*/false, LinearSort.Direction.TOP_TO_BOTTOM))
        .animateWith(DefaultAnimations.shrinkAnimator(parentViewGroup, /*duration=*/800))
        .start();
```
Definitely play around with the stock `SortFunction` implementations until you find the one that is perfect for you! Check out the example app if you want to get previews of what each `SortFunction` will look like.

### The Animators
The animations used in Spruce are produced by leveraging the `Animator` class. You may provide your own custom animations by creating your own `Animator` and provide it to the as part of an `Animator[]` to `SpruceBuilder.animateWith(Animator... animators)`. For more information on using the `Animator` class please check out https://developer.android.com/reference/android/animation/Animator.html

### Standard Animation
The `DefaultAnimation` class provides simple `Animator` methods to apply the change `Animator` to the views. Use this class if you want to have a stock linear movement of the changes.

## Sort Functions
With all different types of animations, especially those dealing with subviews, we have to consider a way in which we want to animate them. Some views can have 0 subviews while others may have hundreds. To handle this, we have the notion of a `SortFunction`. What this will do is take each of the subviews in the `ViewGroup`, and apply a mapping from the specific subview to the exact delay that it should wait before animating. Some of these will sort in a radial formation while others may actually sort randomly. One of the cool features of Spruce, is that you can actually define your own `SortFunction` and then the animation will look completely different. Luckily, Spruce also comes jam packed with a ton of default `SortFunction` classes to make everything easier on you as the developer. Take a look at some of the default `SortFunction` classes we have and see if you can use them or branch off of them for your cool and custom animations!

### The SortFunction Interface
A very simple interface that requires classes to extend the following class

```java
public abstract class SortFunction {
    public abstract List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<View> children);
}
```

What the above class needs to do is take in a `ViewGroup` parent and a `List` of `View` children or subviews to generate a list of subviews and their animation offsets. Once the list of subviews has been generated, you can define your own sort metric to determine in which order the `View`'s should animate. To do so, you need to create a `List` of `SpruceTimedView`'s. This special class has two properties: (1) `View view` and (2) `long timeOffset`. Your `SortFunction` can define the `timeOffset` however it likes, but the animators will use this to determine how long it should delay the start of that specific view from animating. The best way to learn, is to play around. So why not have some fun and make your own `SortFunction`!

### About Sort Functions
To make sure that developers can use Spruce out of the box, we included about 8 stock `SortFunction` implementations. These are some of the main functions we use at WillowTree and are so excited to see what others come up with!

- `DefaultSort`
- `LinearSort`
- `CorneredSort`
- `RadialSort`
- `RandomSort`
- `InlineSort`
- `ContinousSort`
- `ContinuousWeightedSort`

Check out the docs [here](https://willowtreeapps.github.io/spruce-android/com/willowtreeapps/spruce/sort/SortFunction.html) for more information

### View Exclusion Feature

Spruce Animate all the views inside the view group. One of the key tips for pulling the best performance out of an Android app is to maintain a flat hierarchy. Spruce is now Introducing a new Exclusion feature.
This work in 2 modes:
- NORMAL_MODE: This mode should be used when you have view groups like Constraint/Frame/Relative/Linear Layouts. We feed a list of ids to be excluded to the SpruceBuilder.
- R_L_MODE: This mode is used when we have ListView/RecyclerView. The only difference with the first mode is that we pass in the positions to be excluded instead of Ids.

```java
Animator spruceAnimator = new Spruce
        .SpruceBuilder(parentViewGroup)
        .sortWith(new LinearSort(/*interObjectDelay=*/100L, /*reversed=*/false, LinearSort.Direction.TOP_TO_BOTTOM))
        .excludeViews(getExcludedViewIds(), NORMAL_MODE)
        //or
       .excludeViews(getExcludedViewPosition(), R_L_MODE)
        .start();
```

### Sort Function Interpolators

Spruce now allows the user to control the overall flow of sort function using Interpolators.

```java
Animator spruceAnimator = new Spruce
        .SpruceBuilder(parentViewGroup)
        .sortWith(new LinearSort(/*interObjectDelay=*/100L, /*reversed=*/false, LinearSort.Direction.TOP_TO_BOTTOM))
        .addInterpolator(new LinearInterpolator())
        .start();
```

Spruce gives you a wide variety of stock interpolators to choose from.

- `SpruceInterpolators.EASE`
- `SpruceInterpolators.EASE_IN`
- `SpruceInterpolators.EASE_OUT`
- `SpruceInterpolators.EASE_IN_OUT`
- `SpruceInterpolators.EASE_IN_QUAD`
- `SpruceInterpolators.EASE_IN_CUBIC`
- `SpruceInterpolators.EASE_IN_QUART`
- `SpruceInterpolators.EASE_IN_QUINT`
- `SpruceInterpolators.EASE_IN_SINE`
- `SpruceInterpolators.EASE_IN_EXPO`
- ` SpruceInterpolators.EASE_IN_CIRC`
- ` SpruceInterpolators.EASE_IN_BACK`
- ` SpruceInterpolators.EASE_OUT_QUAD`
- ` SpruceInterpolators.EASE_OUT_CUBIC`
- ` SpruceInterpolators.EASE_OUT_QUART`
- ` SpruceInterpolators.EASE_OUT_QUINT`
- ` SpruceInterpolators.EASE_OUT_SINE`
- ` SpruceInterpolators.EASE_OUT_EXPO`
- ` SpruceInterpolators.EASE_OUT_CIRC`
- ` SpruceInterpolators.EASE_OUT_BACK`
- ` SpruceInterpolators.EASE_IN_OUT_QUAD`
- ` SpruceInterpolators.EASE_IN_OUT_CUBIC`
- ` SpruceInterpolators.EASE_IN_OUT_QUART`
- ` SpruceInterpolators.EASE_IN_OUT_QUINT`
- ` SpruceInterpolators.EASE_IN_OUT_SINE`
- ` SpruceInterpolators.EASE_IN_OUT_EXPO`
- ` SpruceInterpolators.EASE_IN_OUT_CIRC`
- ` SpruceInterpolators.EASE_IN_OUT_BACK`

Checkout [interpolator documentation](https://developer.android.com/reference/android/view/animation/Interpolator) for more information.

## Spruce Dynamics

Spruce now supports Dynamic Animations. Spruce Dynamics is an extension of the [androidx dynamic animations](https://developer.android.com/jetpack/androidx/releases/dynamicanimation).

These are the option that SpruceDynamics exposes to the developers:
- Allows start delay for dynamic animations
- Animation Property is now exposed (developers can set progress of the animations dynamically)

You can create your own Spring/Fling animations from SpruceDynamics and add them to the '.animateWith' function for
playing the animations in the respective ViewGroup

```java
Animator spruceAnimator = new Spruce
        .SpruceBuilder(parentViewGroup)
        .sortWith(new LinearSort(/*interObjectDelay=*/100L, /*reversed=*/false, LinearSort.Direction.TOP_TO_BOTTOM))
        .animateWith(DefaultAnimations.dynamicTranslationUpwards(parent))
        .start();
```

Above all these, With spruce, you can implement a combination of both Android Animations and Spruce Dynamics at the same time.

 ```java

 animators = new Object[]{
         DefaultAnimations.dynamicTranslationUpwards(parent),
         DefaultAnimations.dynamicFadeIn(parent),
         DefaultAnimations.shrinkAnimator(parent,800)
 };

 Animator spruceAnimator = new Spruce
         .SpruceBuilder(parentViewGroup)
         .sortWith(new LinearSort(/*interObjectDelay=*/100L, /*reversed=*/false, LinearSort.Direction.TOP_TO_BOTTOM))
         .animateWith(animators)
         .start();
 ```

## Stock Animators
To make everybody's lives easier, the stock animators perform basic `View` animations that a lot of apps use today. Mix and match these animators to get the core motion you are looking for.

- `DefaultAnimations.growAnimator(View view, long duration)`
- `DefaultAnimations.shrinkAnimator(View view, long duration)`
- `DefaultAnimations.fadeAwayAnimator(View view, long duration)`
- `DefaultAnimations.fadeInAnimator(View view, long duration)`
- `DefaultAnimations.spinAnimator(View view, long duration)`
- `DefaultAnimations.dynamicTranslationUpwards(View view)`
- `DefaultAnimations.dynamicFadeIn(View view, long duration)`

Experiment which ones work for you! If you think of anymore feel free to add them to the library yourself!

# Example App
Use the [example app](https://github.com/willowtreeapps/spruce-android/tree/master/app) to find the right `SortFunction`. In the app you will be able to see the affects of each `SortFunction`.

## Contributing to Spruce
Contributions are more than welcome! Please see the [Contributing Guidelines](https://github.com/willowtreeapps/spruce-android/blob/master/Contributing.md) and be mindful of our [Code of Conduct](https://github.com/willowtreeapps/spruce-android/blob/master/code-of-conduct.md).

# Issues or Future Ideas
If part of Spruce is not working correctly be sure to file a Github issue. In the issue provide as many details as possible. This could include example code or the exact steps that you did so that everyone can reproduce the issue. Sample projects are always the best way :). This makes it easy for our developers or someone from the open-source community to start working!

If you have a feature idea submit an issue with a feature request or submit a pull request and we will work with you to merge it in!

## Third Party Bindings

### React Native
You may now use this library with [React Native](https://github.com/facebook/react-native) via the module [here](https://github.com/prscX/react-native-spruce)

# About WillowTree!
![WillowTree Logo](https://github.com/willowtreeapps/spruce-android/blob/master/imgs/willowtree_logo.png)

We build apps, responsive sites, bots—any digital product that lives on a screen—for the world’s leading companies. Our elite teams challenge themselves to build extraordinary experiences by bridging the latest strategy and design thinking with enterprise-grade software development.

Interested in working on more unique projects like Spruce? Check out our [careers page](http://willowtreeapps.com/careers?utm_campaign=spruce-gh).

repository: iamjosephmj/spruce-android

repo_name: iamjosephmj/spruce-android


text:
# How to create new problems

The Thinkback system expects your solution to be in a specific format.
An example for a solution can be found below, this specific problem asks for two numbers **a, b** and returns the sum of those numbers.

---
```python
import unittest
class Solution(unittest.TestCase):
	def __init__(self, func):
		super().__init__()
		self.func = func
		self.values = [[1,2], [12,42], [12,22], [62,236], [123,2234], [1234, 987]]

	def run_tests(self):
		results = {}
		try:
			actual = self.func()
			expected = self._correct()
		except TypeError as e:
			return e
		try:
			self.assertEquals(expected, actual)
			results[1] = "Correct"
		except AssertionError:
			results[1] = "Input \"{}\" but got \"{}\"".format(expected, actual)
		return results

	def _correct(self, a, b):
		return a + b

```
---
The file you upload must be named **correct.py** and it is important to note that the class name must be **Solution** and it must inherit the ```unittest.TestCase``` class to be able to run the tests.
Every function should have the same name as the example above.
The ```_correct``` function contains your correct implementation of the problem.

Remember that the name of the function must be correct as the system searches for the name of the function you give it!

license: MIT

branch_name: refs/heads/stable

extension: md

gha_language: Python

gha_license_id: MIT

license_type: permissive


text:
# Changelog

All notable changes to `laravel-websockets` will be documented in this file

## 1.5.0 - 2020-05-18

- Add option to hide websocket events from private-websockets-dashboard channel on Dashboard
- Add option to create a class to respond to websocket events (connection/disconnection, channel subscribed/occupied/vacated, client messages and api messages)

## 1.4.0 - 2020-03-03

- add support for Laravel 7

## 1.0.2 - 2018-12-06

- Fix issue with wrong namespaces

## 1.0.1 - 2018-12-04

- Remove VueJS debug mode on dashboard
- Allow setting app hosts to use when connecting via the dashboard
- Added debug mode when starting the WebSocket server

## 1.0.0 - 2018-12-04

- initial release

repository: RibeiroPablo/laravel-websockets

branch_name: refs/heads/master

repo_name: RibeiroPablo/laravel-websockets


text:
# 🔮 Apollo iOS Roadmap

**Last updated: 2023-08-10**

For up to date release notes, refer to the project's [Changelog](https://github.com/apollographql/apollo-ios/blob/main/CHANGELOG.md).

> **Please note:** This is an approximation of **larger effort** work planned for the next 6 - 12 months. It does not cover all new functionality that will be added, and nothing here is set in stone. Also note that each of these releases, and several patch releases in-between, will include bug fixes (based on issue triaging) and community submitted PR's.

## ✋ Community feedback & prioritization

- Please report feature requests or bugs as a new [issue](https://github.com/apollographql/apollo-ios/issues/new/choose).
- If you already see an issue that interests you please add a 👍 or a comment so we can measure community interest.

---

## [1.x.x patch releases](https://github.com/apollographql/apollo-ios/milestone/70)

Please see our [patch releases milestone](https://github.com/apollographql/apollo-ios/milestone/70) for more information about the fixes and enhancements we plan to ship in the near future.  Anything labeled [`planned-next`](https://github.com/apollographql/apollo-ios/labels/planned-next) is slated for the next patch release.

## Upcoming 1.x features

As we identify feature sets that we intend to ship, we'll add to and update the subheadings in this section. We intend to keep this section in chronological order.  In order to enable rapid and continuous feature delivery, we'll avoid assigning minor version numbers to these feature groups in the roadmap.

### [Paginated watchers for GraphQL queries](https://github.com/apollographql/apollo-ios/pull/3007)

_Approximate Date: TBD - PR from an external contributor is in review_

- Support for Relay-style (cursor-based), offset-based, and arbitrary pagination patterns
- `@connection` directive support
- This feature will be considered experimental, meaning that the public API could change in backwards-incompatible ways until it is declared stable in a future release

### [`@defer` support](https://github.com/apollographql/apollo-ios/issues/2395)

_Approximate Date: 2023-09-19_

The `@defer` directive enables your queries to receive data for specific fields asynchronously. This is helpful whenever some fields in a query take much longer to resolve than others.  [Apollo Kotlin](https://www.apollographql.com/docs/kotlin/fetching/defer/) and [Apollo Client (web)](https://www.apollographql.com/docs/react/data/defer/) currently support this syntax, so if you're interested in learning more check out their documentation.  Apollo iOS will release support for this directive in a `1.x` minor version.  This will be released as an experimental feature.

### [Improve fragment merging and code generation performance](https://github.com/apollographql/apollo-ios/milestone/67)

_Approximate Date: 2023-09-20_

- Add configuration for disabling merging of fragment fields
- Recognize when multiple selection set types will end up being identical and use a shared model object with typealiases to reduce generated code
- Fix retain cycles and memory issues causing code generation to take very long on certain large, complex schemas with deeply nested fragment composition

### [Reduce generated schema types](https://github.com/apollographql/apollo-ios/milestone/71)

_Approximate Date: Late October 2023_

- Right now we are naively generating schema types that we don't always need. A smarter algorithm can reduce generated code for certain large schemas that are currently having every type in their schema generated
- Create configuration for manually indicating schema types you would like to have schema types and TestMocks generated for

### Declarative caching

_Approximate Date: TBD_

- Similar to Apollo Kotlin [declarative caching](https://www.apollographql.com/docs/kotlin/caching/declarative-ids) via the `@typePolicy` directive
- Provide ability to configure cache keys using directives on schema types as an alternative to programmatic cache key configuration

## [2.0](https://github.com/apollographql/apollo-ios/milestone/60)

_Approximate Date: TBD_

These are the major initiatives planned for 2.0/2.x:

- **Networking Stack Improvements**: The goal is to simplify and stabilise the networking stack.
  - The [updated network stack](https://github.com/apollographql/apollo-ios/issues/1340) solved a number of long standing issues with the old barebones NetworkTransport but still has limitations and is complicated to use. Adopting patterns that have proven useful for the web client, such as Apollo Link, will provide more flexibility and give developers full control over the steps that are invoked to satisfy requests.
  - We will support some of the new Swift concurrency features, such as async/await, in Apollo iOS. It may involve Apollo iOS dropping support for macOS 10.14 and iOS 12.

## 3.0

_Approximate Date: TBD_

These are the major initiatives planned for 3.0/3.x:

- **Cache Improvements**: Here we are looking at bringing across some features inspired by Apollo Client 3 and Apollo Kotlin
  - Better pagination support. Better support for caching and updating paginated lists of objects.
  - Result model improvements
  - Reducing over-normalization. Only separating out results into individual records when something that can identify them is present
  - Real cache eviction & dangling reference collection. There's presently a way to manually remove objects for a given key or pattern, but Apollo Client 3 has given us a roadmap for how to handle some of this stuff much more thoroughly and safely.
  - Cache metadata. Ability to add per-field metadata if needed, to allow for TTL and time-based invalidation, etc.

This major release is still in pre-planning, more details will come in the future.

repository: apollographql/apollo-ios

branch_name: refs/heads/main

gha_language: Swift

repo_name: apollographql/apollo-ios


text:
# Build Workflow - Changelog
## v7.0.1
- **Documentation**
  - Add more documentation about build-workflow - [8803e3a]( https://github.com/royriojas/build-workflow/commit/8803e3a ), [royriojas](https://github.com/royriojas), 20/08/2015 11:41:43

## v7.0.0
- **Refactoring**
  - Big refactoring this module not longer bundle any tasks - [1b97c71]( https://github.com/royriojas/build-workflow/commit/1b97c71 ), [royriojas](https://github.com/royriojas), 11/08/2015 18:16:59

    **BREAKING CHANGE**: this means that this module will only take care of break your gigantic grunt-file and auto load modules.

## v6.0.1
- **Bug Fixes**
  - Include the fix for https://github.com/royriojas/esformatter-jsx/issues/10 to fix selfclosing tags formatting - [0e4f47d]( https://github.com/royriojas/build-workflow/commit/0e4f47d ), [royriojas](https://github.com/royriojas), 28/07/2015 17:42:16

## v6.0.0
- **Build Scripts Changes**
  - Update npm scripts to automate publishing - [68dccde]( https://github.com/royriojas/build-workflow/commit/68dccde ), [royriojas](https://github.com/royriojas), 28/07/2015 15:57:06

  - Lock dependencies - [dc9f8e0]( https://github.com/royriojas/build-workflow/commit/dc9f8e0 ), [royriojas](https://github.com/royriojas), 28/07/2015 15:56:01

  - Udpate changelogx and prepush deps - [099134d]( https://github.com/royriojas/build-workflow/commit/099134d ), [royriojas](https://github.com/royriojas), 28/07/2015 15:48:16

  - Update eslinter to handle eqeqeq as error - [1deb246]( https://github.com/royriojas/build-workflow/commit/1deb246 ), [royriojas](https://github.com/royriojas), 28/07/2015 14:33:55

  - Update esbeautifier dep to handle JSX in a more predictable way - [1b4167b]( https://github.com/royriojas/build-workflow/commit/1b4167b ), [royriojas](https://github.com/royriojas), 28/07/2015 14:33:41

## v5.0.8
- **Build Scripts Changes**
  - version 5.0.8 - [efe98ac]( https://github.com/royriojas/build-workflow/commit/efe98ac ), [royriojas](https://github.com/royriojas), 23/07/2015 09:37:13

  - fix broken prepush task - [3960f4c]( https://github.com/royriojas/build-workflow/commit/3960f4c ), [royriojas](https://github.com/royriojas), 23/07/2015 09:36:53

## v5.0.7
- **Build Scripts Changes**
  - version 5.0.7 - [c04b742]( https://github.com/royriojas/build-workflow/commit/c04b742 ), [royriojas](https://github.com/royriojas), 22/07/2015 14:31:18

  - Use new simpless to get faster building times - [5e61132]( https://github.com/royriojas/build-workflow/commit/5e61132 ), [royriojas](https://github.com/royriojas), 22/07/2015 14:30:09

## v5.0.6
- **Build Scripts Changes**
  - Add support for the `mockquire` token - [a0e6259]( https://github.com/royriojas/build-workflow/commit/a0e6259 ), [royriojas](https://github.com/royriojas), 21/07/2015 19:56:20

## v5.0.4
- **Build Scripts Changes**
  - update bundly to get before/after transform callbacks - [22e91f1]( https://github.com/royriojas/build-workflow/commit/22e91f1 ), [royriojas](https://github.com/royriojas), 20/07/2015 01:36:02

## v5.0.3
- **Build Scripts Changes**
  - Include latest consoleify - [3d871c8]( https://github.com/royriojas/build-workflow/commit/3d871c8 ), [royriojas](https://github.com/royriojas), 19/07/2015 07:49:10

## v5.0.2
- **Bug Fixes**
  - enable consoleify only in dev mode - [53980df]( https://github.com/royriojas/build-workflow/commit/53980df ), [royriojas](https://github.com/royriojas), 19/07/2015 07:38:46

## v5.0.1
- **Refactoring**
  - use latest bundly - [a421a57]( https://github.com/royriojas/build-workflow/commit/a421a57 ), [royriojas](https://github.com/royriojas), 19/07/2015 07:33:12

## v4.8.1
- **Build Scripts Changes**
  - lock dependencies with a shrinkwrap.json file - [fc9d0fe]( https://github.com/royriojas/build-workflow/commit/fc9d0fe ), [royriojas](https://github.com/royriojas), 13/07/2015 01:49:27

## v4.8.0
- **Build Scripts Changes**
  - Update simpless and bundly deps - [daada82]( https://github.com/royriojas/build-workflow/commit/daada82 ), [royriojas](https://github.com/royriojas), 13/07/2015 01:47:59

## v4.7.0
- **Bug Fixes**
  - update karma helper - [5c07e51]( https://github.com/royriojas/build-workflow/commit/5c07e51 ), [royriojas](https://github.com/royriojas), 09/07/2015 02:18:44

- **Refactoring**
  - use bundly instead of the local modules - [1aba160]( https://github.com/royriojas/build-workflow/commit/1aba160 ), [royriojas](https://github.com/royriojas), 09/07/2015 02:11:25

  - Remove need of jQuery for the generated i18n files - [7ac03d6]( https://github.com/royriojas/build-workflow/commit/7ac03d6 ), [royriojas](https://github.com/royriojas), 09/07/2015 00:13:10

## v4.6.4
- **Build Scripts Changes**
  - Update shimixify to fix the issue while loading the shimmed/mocked deps - [52b38c6]( https://github.com/royriojas/build-workflow/commit/52b38c6 ), [royriojas](https://github.com/royriojas), 08/07/2015 00:46:36

## v4.6.3
- **Build Scripts Changes**
  - Lock dependencies - [9a2a671]( https://github.com/royriojas/build-workflow/commit/9a2a671 ), [royriojas](https://github.com/royriojas), 08/07/2015 00:27:09

## v4.6.2
- **Bug Fixes**
  - wrong property name to set the shims for shimixify - [5731f6c]( https://github.com/royriojas/build-workflow/commit/5731f6c ), [royriojas](https://github.com/royriojas), 08/07/2015 00:24:33

## v4.6.1
- **Bug Fixes**
  - Revert to<EMAIL_ADDRESS>since listeners are not set for all files - [0df4a5f]( https://github.com/royriojas/build-workflow/commit/0df4a5f ), [royriojas](https://github.com/royriojas), 07/07/2015 14:32:39

- **Refactoring**
  - Fix typo attempting to include bundler - [850c4a0]( https://github.com/royriojas/build-workflow/commit/850c4a0 ), [royriojas](https://github.com/royriojas), 07/07/2015 10:56:13

## v4.6.0
- **Build Scripts Changes**
  - Lock dependencies - [9821da2]( https://github.com/royriojas/build-workflow/commit/9821da2 ), [royriojas](https://github.com/royriojas), 06/07/2015 03:38:41

- **Refactoring**
  - Factorized bundly into its own module - [3c7c60d]( https://github.com/royriojas/build-workflow/commit/3c7c60d ), [royriojas](https://github.com/royriojas), 06/07/2015 03:12:44

## v4.5.0
- **Build Scripts Changes**
  - Try to update to latest `watchify` to avoid having 2 different versions of `browserify` - [95fbf26]( https://github.com/royriojas/build-workflow/commit/95fbf26 ), [royriojas](https://github.com/royriojas), 03/07/2015 01:20:48

  - attempt to use latest watchify - [6df5590]( https://github.com/royriojas/build-workflow/commit/6df5590 ), [royriojas](https://github.com/royriojas), 01/07/2015 22:28:10

## v4.4.0
- **Bug Fixes**
  - fix consoleify issues preventing code from running in IE browsers - [6e332bf]( https://github.com/royriojas/build-workflow/commit/6e332bf ), [royriojas](https://github.com/royriojas), 25/06/2015 17:04:27

## v4.3.2
#### Esbeautifier
- **Refactoring**
  - Allow line breaks between object properties - [22b2f28]( https://github.com/royriojas/build-workflow/commit/22b2f28 ), [royriojas](https://github.com/royriojas), 25/06/2015 02:23:40

## v4.3.1
- **Build Scripts Changes**
  - Automate generation of changelog and commit message for it - [0e879ed]( https://github.com/royriojas/build-workflow/commit/0e879ed ), [royriojas](https://github.com/royriojas), 24/06/2015 16:42:38

## v4.3.0
- **Build Scripts Changes**
  - Update esbeautifier dep to better handle beautification of small arrays - [3277300]( https://github.com/royriojas/build-workflow/commit/3277300 ), [royriojas](https://github.com/royriojas), 24/06/2015 16:41:21

## v4.2.2
- **Features**
  - new karma helper and logger helper - [e06146e]( https://github.com/royriojas/build-workflow/commit/e06146e ), [royriojas](https://github.com/royriojas), 19/06/2015 18:00:30

- **Enhancements**
  - Make babelify a global transform by default - [4ea2d33]( https://github.com/royriojas/build-workflow/commit/4ea2d33 ), [royriojas](https://github.com/royriojas), 17/06/2015 19:18:13

## v4.2.1
- **Refactoring**
  - beautificated code - [97d1a8f]( https://github.com/royriojas/build-workflow/commit/97d1a8f ), [royriojas](https://github.com/royriojas), 17/06/2015 04:08:23

## v4.2.0
- **Build Scripts Changes**
  - Update to the latest esformatter - [8cbd1f0]( https://github.com/royriojas/build-workflow/commit/8cbd1f0 ), [royriojas](https://github.com/royriojas), 17/06/2015 04:05:33

## v4.1.5
- **Features**
  - Add the ability to skip certain files from the babelify transform - [7d90610]( https://github.com/royriojas/build-workflow/commit/7d90610 ), [royriojas](https://github.com/royriojas), 16/06/2015 16:49:50

## v4.1.4
- **Features**
  - Add babelify for karma too - [ba6eb15]( https://github.com/royriojas/build-workflow/commit/ba6eb15 ), [royriojas](https://github.com/royriojas), 16/06/2015 16:05:14

## v4.1.3
- **Features**
  - Add the ability to pass options to configure babelify - [3cd81c1]( https://github.com/royriojas/build-workflow/commit/3cd81c1 ), [royriojas](https://github.com/royriojas), 16/06/2015 11:02:05

## v4.1.2
- **Bug Fixes**
  - remove multiline option for jsx files - [ba0e081]( https://github.com/royriojas/build-workflow/commit/ba0e081 ), [royriojas](https://github.com/royriojas), 16/06/2015 05:29:53

## v4.1.1
- **Build Scripts Changes**
  - fix changelog command - [a33313d]( https://github.com/royriojas/build-workflow/commit/a33313d ), [royriojas](https://github.com/royriojas), 16/06/2015 05:22:11

## v4.0.6
- **Enhancements**
  - Update esformatter-jsx - [904ac54]( https://github.com/royriojas/build-workflow/commit/904ac54 ), [royriojas](https://github.com/royriojas), 16/06/2015 05:19:38

- **Features**
  - Enabling babelify. Removed jscs - [9a1c0f1]( https://github.com/royriojas/build-workflow/commit/9a1c0f1 ), [royriojas](https://github.com/royriojas), 16/06/2015 01:27:21

    **Breaking change**

    jscs is removed, make sure to remove it from your configuration `build-workflow.js config` file

  - Enable es6 for eslint - [88709b9]( https://github.com/royriojas/build-workflow/commit/88709b9 ), [royriojas](https://github.com/royriojas), 16/06/2015 01:03:04

  - Enable eslint-react - [d11af8b]( https://github.com/royriojas/build-workflow/commit/d11af8b ), [royriojas](https://github.com/royriojas), 16/06/2015 00:59:54

## v4.0.5
- **Build Scripts Changes**
  - add changelog helper task - [e876056]( https://github.com/royriojas/build-workflow/commit/e876056 ), [royriojas](https://github.com/royriojas), 10/06/2015 23:28:37

  - Lock deps - [3f5a22b]( https://github.com/royriojas/build-workflow/commit/3f5a22b ), [royriojas](https://github.com/royriojas), 10/06/2015 23:21:52

## v4.0.4
- **Enhancements**
  - Enable file expansion on simpless - [1498e68]( https://github.com/royriojas/build-workflow/commit/1498e68 ), [royriojas](https://github.com/royriojas), 10/06/2015 23:17:16

  - twig multitask now support dynamic file expanding - [efdcf0c]( https://github.com/royriojas/build-workflow/commit/efdcf0c ), [royriojas](https://github.com/royriojas), 10/06/2015 22:43:47

- **Bug Fixes**
  - Use ES6Promise instead of Promise - [ae476f5]( https://github.com/royriojas/build-workflow/commit/ae476f5 ), [royriojas](https://github.com/royriojas), 10/06/2015 23:06:23

- **Refactoring**
  - Make sure we access src as text - [927a185]( https://github.com/royriojas/build-workflow/commit/927a185 ), [royriojas](https://github.com/royriojas), 10/06/2015 22:43:20

- **Build Scripts Changes**
  - Remove not used reps - [24fb349]( https://github.com/royriojas/build-workflow/commit/24fb349 ), [royriojas](https://github.com/royriojas), 10/06/2015 22:42:58

## v4.0.3
- **Build Scripts Changes**
  - exclude dev dependencies from shrinkwrap.json - [9c00957]( https://github.com/royriojas/build-workflow/commit/9c00957 ), [royriojas](https://github.com/royriojas), 10/06/2015 18:07:29

## v4.0.2
- **Build Scripts Changes**
  - downgrade watchify to 2.6.0 for reliability. Newer version does not fire change events - [e9f6b50]( https://github.com/royriojas/build-workflow/commit/e9f6b50 ), [royriojas](https://github.com/royriojas), 10/06/2015 17:52:19

## v4.0.1
- **Build Scripts Changes**
  - Lock deps - [2cf00b0]( https://github.com/royriojas/build-workflow/commit/2cf00b0 ), [royriojas](https://github.com/royriojas), 10/06/2015 05:01:27

## v4.0.0
- **Refactoring**
  - Some serious refactoring in order to make this module easier to use - [aa7428c]( https://github.com/royriojas/build-workflow/commit/aa7428c ), [royriojas](https://github.com/royriojas), 10/06/2015 04:48:41

## v3.2.10
- **Enhancements**
  - Better error reporting on auto-prefix failure. - [06c5b32]( https://github.com/royriojas/build-workflow/commit/06c5b32 ), [royriojas](https://github.com/royriojas), 09/06/2015 22:31:13

## v3.2.9
- **Build Scripts Changes**
  - Lock dependencies - [5857c44]( https://github.com/royriojas/build-workflow/commit/5857c44 ), [royriojas](https://github.com/royriojas), 08/06/2015 02:21:06

## v3.2.8
- **Features**
  - Add grunt-simpless task - [07f77fe]( https://github.com/royriojas/build-workflow/commit/07f77fe ), [royriojas](https://github.com/royriojas), 08/06/2015 02:16:15

## v3.2.7
- **Features**
  - bundler now uses a cache to improve building speed - [48f8aa0]( https://github.com/royriojas/build-workflow/commit/48f8aa0 ), [royriojas](https://github.com/royriojas), 22/05/2015 16:55:38

    Cache is enabled by default in bundler in order to disable it, pass

    ```
    bundler: {
      'target-name': {
        options: {
          useCache: false <<< disable the cache
        },
        src: 'somefile.js',
        dest: 'someDestFile.js'
      }
    }
    ```

## v3.2.6
- **Build Scripts Changes**
  - Update consoleify to avoid leak of path of building env - [dd38a1a]( https://github.com/royriojas/build-workflow/commit/dd38a1a ), [royriojas](https://github.com/royriojas), 16/05/2015 15:12:25

## v3.2.5
- **Build Scripts Changes**
  - Update eslint to latest version - [b57a32a]( https://github.com/royriojas/build-workflow/commit/b57a32a ), [royriojas](https://github.com/royriojas), 16/05/2015 01:06:40

- **Enhancements**
  - Do not kill the bundler watch if the task fails to compile, just wait for the next set of changes - [bdcd7e6]( https://github.com/royriojas/build-workflow/commit/bdcd7e6 ), [royriojas](https://github.com/royriojas), 16/05/2015 01:06:08

- **Bug Fixes**
  - Ensure consoleify transform is active only when buildNumber === 'dev' (only on dev mode) - [65b50ba]( https://github.com/royriojas/build-workflow/commit/65b50ba ), [royriojas](https://github.com/royriojas), 16/05/2015 01:05:36

## v3.2.4
- **Bug Fixes**
  - prevent bundler from failing if not stricterify section set in the options - [8bde822]( https://github.com/royriojas/build-workflow/commit/8bde822 ), [royriojas](https://github.com/royriojas), 13/05/2015 12:30:20

## v3.2.3
- **Features**
  - add `checkIfSkip` callback to stricterify in bundler task - [eb16214]( https://github.com/royriojas/build-workflow/commit/eb16214 ), [royriojas](https://github.com/royriojas), 13/05/2015 02:49:02

## v3.2.2
- **Bug Fixes**
  - consoleify transform is not working on ie9 - [37fad9a]( https://github.com/royriojas/build-workflow/commit/37fad9a ), [royriojas](https://github.com/royriojas), 08/05/2015 17:41:03

## v3.2.1
- **Build Scripts Changes**
  - Fix dependency issue introduced by JSONStream in package.json - [293bdff]( https://github.com/royriojas/build-workflow/commit/293bdff ), [royriojas](https://github.com/royriojas), 07/05/2015 12:03:39

## v3.2.0
#### bundler
- **Bug Fixes**
  - make dotify transform global to be able to parse tpl files in node_modules - [629b046]( https://github.com/royriojas/build-workflow/commit/629b046 ), [royriojas](https://github.com/royriojas), 09/04/2015 12:26:27

## v3.0.7
#### bundler
- **Bug Fixes**
  - Lock browserify version to 9.0.3. Latest version introduces a bug that produce no output when executed - [78db8b9]( https://github.com/royriojas/build-workflow/commit/78db8b9 ), [royriojas](https://github.com/royriojas), 07/04/2015 15:19:52

## v3.0.6
#### compile-less
- **Bug Fixes**
  - Fix for issue while trying to parse less files. Fixes [#7](https://github.com/royriojas/build-workflow/issues/7) - [442094d]( https://github.com/royriojas/build-workflow/commit/442094d ), [royriojas](https://github.com/royriojas), 31/03/2015 02:32:52

## v3.0.5
#### twig
- **Enhancements**
  - add `options.extendTwig` callback to twig grunt task - [f753a12]( https://github.com/royriojas/build-workflow/commit/f753a12 ), [royriojas](https://github.com/royriojas), 30/03/2015 15:16:53

    `extendTwig` allows the consumer to extend twig, adding new filters or tags.

    For example adding a filter:

    ```javascript
    pages: {
      options: {
        extendTwig: function ( Twig ) {
          Twig.extendFilter( 'processResource', function ( value, args ) {
            args = args || [];
            // add the version to all the required css or js files
            var addVersion = clsc( args[ 0 ], true );
            value = addVersion ? revFile(value, buildNumber) : value;
            return value;
          } );
        },
        cwd: 'src/pages/'
      },
      src: [ 'src/pages/**/*.twig' ],
      dest: 'dist/pages/'
    }
    ```

## v3.0.4
#### eslint
- **Bug Fixes**
  - Fix issue that hide the warnings when no errors were found - [e5ca52c]( https://github.com/royriojas/build-workflow/commit/e5ca52c ), [royriojas](https://github.com/royriojas), 30/03/2015 02:58:50

## v3.0.3
#### protractor conf helper
- **Bug Fixes**
  - Fix 'missing underscore' dep - [eba47e5]( https://github.com/royriojas/build-workflow/commit/eba47e5 ), [royriojas](https://github.com/royriojas), 30/03/2015 01:54:40

## v3.0.2
#### protractor conf helper
- **Bug Fixes**
  - Fix 'missing suistes property' in config - [50edd48]( https://github.com/royriojas/build-workflow/commit/50edd48 ), [royriojas](https://github.com/royriojas), 30/03/2015 01:51:18

## v3.0.1
#### protractor conf helper
- **Bug Fixes**
  - Fix 'cannot find expand module' issue - [d85f14c]( https://github.com/royriojas/build-workflow/commit/d85f14c ), [royriojas](https://github.com/royriojas), 30/03/2015 01:46:21

## v3.0.0
- **Refactoring**
  - Remove old modules taht are not longer needed - [26d5c23]( https://github.com/royriojas/build-workflow/commit/26d5c23 ), [royriojas](https://github.com/royriojas), 30/03/2015 01:32:32

## v2.1.2
#### esformatter
- **Bug Fixes**
  - revert back the setting to force quotes - [47c1888]( https://github.com/royriojas/build-workflow/commit/47c1888 ), [royriojas](https://github.com/royriojas), 29/03/2015 03:37:00

## v2.1.1
#### lessify
- **Bug Fixes**
  - Handle escaping chars in less files - [e7d1810]( https://github.com/royriojas/build-workflow/commit/e7d1810 ), [royriojas](https://github.com/royriojas), 29/03/2015 03:15:38

    - files that contain the `\\`  character will be properly handled now.
    This is quite common when adding font-codes

#### esformatter
- **Enhancements**
  - esformatter quotes avoidEscape - [09051b7]( https://github.com/royriojas/build-workflow/commit/09051b7 ), [royriojas](https://github.com/royriojas), 29/03/2015 03:13:26

    Make sure we don’t accidentally break apps by changing double quotes to
    single quotes.

#### css-font
- **Bug Fixes**
  - Fix wrong prop for css-font task - [797f04b]( https://github.com/royriojas/build-workflow/commit/797f04b ), [royriojas](https://github.com/royriojas), 29/03/2015 03:11:21

    - Make it generic, so other fonts can be generated
      using this task
    - **BREAKING CHANGE**: Fix typo on property
    `opts.jsonCodesOutput` on the css-font task. (before it
    was `opts.jsonCodesOuput`

## v2.1.0
#### bundler
- **Refactoring**
  - Add a watch suffix for bundler tasks targets - [0c9bba3]( https://github.com/royriojas/build-workflow/commit/0c9bba3 ), [royriojas](https://github.com/royriojas), 26/03/2015 01:45:28

    In order to be consistent, and to provide a better api, bundler targets now
    won't use the `grunt.option('watch-task')` to especify which task to
    be run in watch mode. Instead now they can be called from the command line
    like this:

    ```bash
    grunt bundler:target:watch # the watch suffix will run this task in watch mode
    ```

## v2.0.8
#### check-valid tasks
- **Enhancements**
  - Honor the `--skip-cache` flag and provide consistent output - [58d33f9]( https://github.com/royriojas/build-workflow/commit/58d33f9 ), [royriojas](https://github.com/royriojas), 26/03/2015 00:59:11

    Running the tasks with

    ```bash
    grunt check-valid --skip-cache=true
    ```

    Will now delete the cache files. Subsequent calls to this task without that flag will use a new cache file.
    This is useful when a configuration file has changed and we want to destroy the cache that was created
    when using the previous configuration, since the files didn't change, the tasks would assume they are OK.

    TODO: Store the configuration as well as part of the cache, that way if the config change the task will destroy
    the cache automatically and create a new one for the next executions without actually having to use the `--skip-cache` flag. Fix <a target="_blank" class="info-link" href="https://github.com/royriojas/build-workflow/issues/5"><span>#5</span></a>

    Also in this commit. Normalized the output of the checkvalid tasks. Fix <a target="_blank" class="info-link" href="https://github.com/royriojas/build-workflow/issues/6"><span>#6</span></a>

## v2.0.7
#### esbeautifier
- **Build Scripts Changes**
  - updated dep to get better error reporting - [1059614]( https://github.com/royriojas/build-workflow/commit/1059614 ), [royriojas](https://github.com/royriojas), 25/03/2015 02:33:06

## v2.0.6
#### bundler
- **Enhancements**
  - add version number to dest file - [ea69fab]( https://github.com/royriojas/build-workflow/commit/ea69fab ), [royriojas](https://github.com/royriojas), 25/03/2015 00:48:26

    - Banner is added to not minified file
    - Version is added to the files automatically if the option
    `buildNumber` is set.
    - The minified version will be generated if the buildNumber is
    different from dev or if the grunt option `bundle-min` is provided.
    - a grunt option `console-filter` can be used to remove the
    `console.log` calls from the modules that not match the provided filter

## v2.0.5
#### bundler
- **Bug Fixes**
  - Use a new bundler per each task. Related to [#4](https://github.com/royriojas/build-workflow/issues/4) - [57a78e4]( https://github.com/royriojas/build-workflow/commit/57a78e4 ), [royriojas](https://github.com/royriojas), 24/03/2015 18:50:05

## v2.0.4
#### bundler
- **Bug Fixes**
  - Return after error in bundle. Related to [#4](https://github.com/royriojas/build-workflow/issues/4) - [9994b79]( https://github.com/royriojas/build-workflow/commit/9994b79 ), [royriojas](https://github.com/royriojas), 24/03/2015 18:40:14

## v2.0.3
#### bundler
- **Bug Fixes**
  - Call done when the uglify task finishes. Related to [#4](https://github.com/royriojas/build-workflow/issues/4) - [4aa375b]( https://github.com/royriojas/build-workflow/commit/4aa375b ), [royriojas](https://github.com/royriojas), 24/03/2015 18:34:59

## v2.0.2
#### bundler
- **Bug Fixes**
  - Fixes issue with the generation of the minified version. Fix [#4](https://github.com/royriojas/build-workflow/issues/4) - [ae3c7b0]( https://github.com/royriojas/build-workflow/commit/ae3c7b0 ), [royriojas](https://github.com/royriojas), 24/03/2015 18:12:51

## v1.0.24
#### bundler
- **Features**
  - browserify/watchify task with optional concatenation of old school files and an uglify step - [3e67554]( https://github.com/royriojas/build-workflow/commit/3e67554 ), [royriojas](https://github.com/royriojas), 24/03/2015 17:17:38

    The following options are available in the configuration object

    ```javascript
    bundler: {
      options: {
        shimixify: {
          deps: { // pass here the deps for browserify
            window: 'global.window',
            jQuery: 'global.jQuery',
            chrome: 'global.chrome',
            screen: 'global.screen',
            document: 'global.document',
            Worker: 'global.Worker',
            Promise: 'global.Promise',
            self: 'global.self'
          }
        },
        // name of module or text in the console
        // log to match. If found the console log
        // call is retained. Otherwise will be removed
        consoleFilter: '',
        // the modules to concat before the bundle
        // This feature is only needed if you want to concat
        // regular old school javascript modules
        concatBefore: [],
        // the modules to concat after the bundle
        // This feature is only needed if you want to concat
        // regular old school javascript modules
        concatAfter: [],
        // if true a minimized version of the bundle
        // will be created using the name of the
        uglify: false,
        // text to add to the minimized version
        banner: ''
      },
      myTarget: {
        src: 'path/to/entry/file',
        dest: 'path/to/output/file'
      }
    }
    ```

## v1.0.23
#### Changelog
- **Build Scripts Changes**
  - Add changelogx dep - [656bbbe]( https://github.com/royriojas/build-workflow/commit/656bbbe ), [royriojas](https://github.com/royriojas), 20/03/2015 19:11:12

## v1.0.22
#### esformatter/prepush
- **Build Scripts Changes**
  - Fail when the task grunt prepush is executed and files needed beautification. Fixes [#3](https://github.com/royriojas/build-workflow/issues/3) - [b42be54]( https://github.com/royriojas/build-workflow/commit/b42be54 ), [royriojas](https://github.com/royriojas), 20/03/2015 18:52:18

## v1.0.21
#### hooks
- **Build Scripts Changes**
  - Add prepush tasks in package.json - [ee141f2]( https://github.com/royriojas/build-workflow/commit/ee141f2 ), [royriojas](https://github.com/royriojas), 20/03/2015 18:26:54

- **Build Scripts Changes**
  - Udapted prepush dependency - [1e1e7a9]( https://github.com/royriojas/build-workflow/commit/1e1e7a9 ), [royriojas](https://github.com/royriojas), 20/03/2015 18:25:36

#### npm scripts
- **Build Scripts Changes**
  - Add install hooks from npm scripts - [454b482]( https://github.com/royriojas/build-workflow/commit/454b482 ), [royriojas](https://github.com/royriojas), 20/03/2015 18:00:13

#### jscs
- **Enhancements**
  - use the full path of the file in the reporter so IDEs like intellij IDEA can parse the output and link to the files - [1814421]( https://github.com/royriojas/build-workflow/commit/1814421 ), [royriojas](https://github.com/royriojas), 20/03/2015 17:58:32

## v1.0.20
#### karma helpers
- **Bug Fixes**
  - Fix issue when trying to use the karma helpers - [8e64ea6]( https://github.com/royriojas/build-workflow/commit/8e64ea6 ), [royriojas](https://github.com/royriojas), 19/03/2015 12:31:38

## v1.0.19
#### Build script cleanup
- **Refactoring**
  - Remove unused deps - [d5dd218]( https://github.com/royriojas/build-workflow/commit/d5dd218 ), [royriojas](https://github.com/royriojas), 18/03/2015 14:22:48

## v1.0.18
#### dotify
- **Build Scripts Changes**
  - Add browesrify-transform-tools as dep - [a7b4f24]( https://github.com/royriojas/build-workflow/commit/a7b4f24 ), [royriojas](https://github.com/royriojas), 18/03/2015 14:01:30

## v1.0.17
#### markdown-expander
- **Build Scripts Changes**
  - add marked as a dependency - [f6dcf84]( https://github.com/royriojas/build-workflow/commit/f6dcf84 ), [royriojas](https://github.com/royriojas), 18/03/2015 13:24:31

## v1.0.16
#### esbeautifier
- **Features**
  - keep lines before methods in objects - [10abf35]( https://github.com/royriojas/build-workflow/commit/10abf35 ), [royriojas](https://github.com/royriojas), 18/03/2015 13:18:06

## v1.0.14
- **Build Scripts Changes**
  - Remove peer dependencies, add missing deps - [9537e5b]( https://github.com/royriojas/build-workflow/commit/9537e5b ), [royriojas](https://github.com/royriojas), 18/03/2015 03:00:49

## v1.0.13
- **Build Scripts Changes**
  - Remove peer dependencies - [acb72e0]( https://github.com/royriojas/build-workflow/commit/acb72e0 ), [royriojas](https://github.com/royriojas), 18/03/2015 02:52:48

## v1.0.12
- **Enhancements**
  - Move eslint and eslint formatters to be dependencies of build-workflow - [cf2b486]( https://github.com/royriojas/build-workflow/commit/cf2b486 ), [royriojas](https://github.com/royriojas), 18/03/2015 02:48:10

## v1.0.11
- **Enhancements**
  - Replace esformatter with esbeautifier, and normalized log messages for jscs, eslint and esformatter - [bbeba72]( https://github.com/royriojas/build-workflow/commit/bbeba72 ), [royriojas](https://github.com/royriojas), 15/03/2015 03:17:07

## v1.0.10
- **Features**
  - create-pkg-json will extend the received pkg file - [f1af6f1]( https://github.com/royriojas/build-workflow/commit/f1af6f1 ), [royriojas](https://github.com/royriojas), 07/03/2015 04:24:19

## v1.0.9
- **Features**
  - Add cache for the jscs task - [2e5772c]( https://github.com/royriojas/build-workflow/commit/2e5772c ), [royriojas](https://github.com/royriojas), 06/03/2015 01:48:18

## v1.0.8
- **Bug Fixes**
  - skip-cache on eslint on errors too - [e223c1a]( https://github.com/royriojas/build-workflow/commit/e223c1a ), [royriojas](https://github.com/royriojas), 05/03/2015 13:37:35

## v1.0.7
- **Build Scripts Changes**
  - enabling eslint on a given file - [644207d]( https://github.com/royriojas/build-workflow/commit/644207d ), [royriojas](https://github.com/royriojas), 04/03/2015 02:07:22

## v1.0.6
- **Bug Fixes**
  - prepush issue: Error: maxBuffer exceeded fixed. - [b17a55e]( https://github.com/royriojas/build-workflow/commit/b17a55e ), [royriojas](https://github.com/royriojas), 03/03/2015 10:46:54

## v1.0.5
- **Enhancements**
  - move log messages to grunt verbose - [8a09a7a]( https://github.com/royriojas/build-workflow/commit/8a09a7a ), [royriojas](https://github.com/royriojas), 03/03/2015 10:02:13

## v1.0.4
- **Features**
  - Adding cache and better error reporting for eslint - [6db574e]( https://github.com/royriojas/build-workflow/commit/6db574e ), [royriojas](https://github.com/royriojas), 03/03/2015 03:59:43

## v1.0.3
- **Build Scripts Changes**
  - Remove quote-props. Seems a bit dangerous - [aad5dee]( https://github.com/royriojas/build-workflow/commit/aad5dee ), [royriojas](https://github.com/royriojas), 02/03/2015 21:37:27

## v1.0.2
- **Documentation**
  - Add better configuration for esformatter-jsx - [71b261f]( https://github.com/royriojas/build-workflow/commit/71b261f ), [royriojas](https://github.com/royriojas), 02/03/2015 11:00:15

## v1.0.1
- **Refactoring**
  - configuration for esformatter-jsx - [472a206]( https://github.com/royriojas/build-workflow/commit/472a206 ), [royriojas](https://github.com/royriojas), 02/03/2015 02:01:18

## v1.1.0
- **Refactoring**
  - started to move functionality to their own repos - [c419cd3]( https://github.com/royriojas/build-workflow/commit/c419cd3 ), [royriojas](https://github.com/royriojas), 02/03/2015 01:44:11

## v0.1.16
- **Build Scripts Changes**
  - use esformatter-jsx instead of esformatter-jsx-ignore - [58e2a67]( https://github.com/royriojas/build-workflow/commit/58e2a67 ), [royriojas](https://github.com/royriojas), 27/02/2015 01:36:00

#### build-updates
- **Build Scripts Changes**
  - Update jsx-ignore to not use esprima from substack fork - [3a0ef45]( https://github.com/royriojas/build-workflow/commit/3a0ef45 ), [royriojas](https://github.com/royriojas), 26/02/2015 20:24:20

## v0.1.15
#### build-deps
- **Refactoring**
  - update dependencies - [6471b75]( https://github.com/royriojas/build-workflow/commit/6471b75 ), [royriojas](https://github.com/royriojas), 26/02/2015 19:46:53

## v0.1.14
#### new-validation
- **Refactoring**
  - (new-validation) - [b800785]( https://github.com/royriojas/build-workflow/commit/b800785 ), [royriojas](https://github.com/royriojas), 26/02/2015 18:55:17

## v0.1.12
- **Enhancements**
  - Update deps - [d2e4428]( https://github.com/royriojas/build-workflow/commit/d2e4428 ), [royriojas](https://github.com/royriojas), 26/02/2015 17:21:21

## v0.1.11
- **Enhancements**
  - make some rules warnings instead of deal breakers - [2f95848]( https://github.com/royriojas/build-workflow/commit/2f95848 ), [royriojas](https://github.com/royriojas), 26/02/2015 15:57:20

## v0.1.10
#### compatibility with 0.1.8
- **Bug Fixes**
  - fixed - [6ad713e]( https://github.com/royriojas/build-workflow/commit/6ad713e ), [royriojas](https://github.com/royriojas), 26/02/2015 15:00:03

## v0.1.9
- **Refactoring**
  - generalize the cache solution - [f2f89aa]( https://github.com/royriojas/build-workflow/commit/f2f89aa ), [royriojas](https://github.com/royriojas), 26/02/2015 13:56:28

  - use flat-cache from npm - [b91a5ef]( https://github.com/royriojas/build-workflow/commit/b91a5ef ), [royriojas](https://github.com/royriojas), 26/02/2015 13:06:33

  - Move to esformatter+eslint - [7c18053]( https://github.com/royriojas/build-workflow/commit/7c18053 ), [royriojas](https://github.com/royriojas), 25/02/2015 03:09:22

- **Build Scripts Changes**
  - Preparing for esformatter and eslint - [f457907]( https://github.com/royriojas/build-workflow/commit/f457907 ), [royriojas](https://github.com/royriojas), 24/02/2015 16:25:25

  - Preparing for esformatter - [d449e91]( https://github.com/royriojas/build-workflow/commit/d449e91 ), [royriojas](https://github.com/royriojas), 24/02/2015 15:18:25

#### better-changelog [#2](https://github.com/royriojas/build-workflow/issues/2)
- **Features**
  - Make sure the issues are recognized in the subject and body of commits - [c53480b]( https://github.com/royriojas/build-workflow/commit/c53480b ), [royriojas](https://github.com/royriojas), 22/02/2015 19:26:52

#### better changelog [#2](https://github.com/royriojas/build-workflow/issues/2)
- **Features**
  - Adding regex for Github issues - [ce5baf8]( https://github.com/royriojas/build-workflow/commit/ce5baf8 ), [royriojas](https://github.com/royriojas), 22/02/2015 19:25:53

  - Proper generation of the log recognizing the feature groups - [02e5bd0]( https://github.com/royriojas/build-workflow/commit/02e5bd0 ), [royriojas](https://github.com/royriojas), 22/02/2015 19:25:41

    This basically means that now a group will first contain a feature category. At the very least
    a feature group will be on each commit tag group. Commits that do not contain a feature will be
    grouped under the feature name 'Uncategorized'.

    This should fix <a target="_blank" class="info-link" href="https://github.com/royriojas/build-workflow/issues/2"><span>#2</span></a>

  - better parsing of the commit messages, for issue [#2](https://github.com/royriojas/build-workflow/issues/2) - [80f5cc1]( https://github.com/royriojas/build-workflow/commit/80f5cc1 ), [royriojas](https://github.com/royriojas), 22/02/2015 19:25:12

## v0.1.8
- **Enhancements**
  - Only run prepush if grunt is available - [30055d4]( https://github.com/royriojas/build-workflow/commit/30055d4 ), [royriojas](https://github.com/royriojas), 10/02/2015 11:50:49

## v0.1.7
- **Features**
  - Add console-filter - [4ecacc7]( https://github.com/royriojas/build-workflow/commit/4ecacc7 ), [royriojas](https://github.com/royriojas), 30/01/2015 02:55:57

    Usage

    ```bash
    grunt --console-filter=regular_expression
    ```

    where `regular_expression` can be any valid regular expression

    If a filter is provided all the console methods that match will be kept. The ones that do not match
    will be removed from the final output.

    A method will match if one its arguments (as text) matches the value of the filter. e.g.

    ```javascript
    console.log('some method');
    console.log('another method');
    ```
    And you run

    ```bash
    grunt --console-filter=some
    ```

    this will keep the `console.log('some method')` and will remove the other one.

    *Note*: It will also keep the console calls from a file with the name that matchs the filter

    In the previous example the filter will also keep console methods calls from a file called some.js
    or somexxxx.js file

- **Documentation**
  - Add missing `changelog.html` file - [d6aaa13]( https://github.com/royriojas/build-workflow/commit/d6aaa13 ), [royriojas](https://github.com/royriojas), 03/12/2014 07:09:58

  - docs improved - [184ec37]( https://github.com/royriojas/build-workflow/commit/184ec37 ), [royriojas](https://github.com/royriojas), 03/12/2014 07:01:40

  - Update docs - [b455946]( https://github.com/royriojas/build-workflow/commit/b455946 ), [royriojas](https://github.com/royriojas), 03/12/2014 06:14:45

## v0.1.6
- **Refactoring**
  - Add option to skip strictify transform on node_modules - [231b4fb]( https://github.com/royriojas/build-workflow/commit/231b4fb ), [royriojas](https://github.com/royriojas), 29/11/2014 04:04:40

## v0.1.5
- **Refactoring**
  - Remove need for test-helper.js - [2e021b8]( https://github.com/royriojas/build-workflow/commit/2e021b8 ), [royriojas](https://github.com/royriojas), 29/11/2014 02:43:54

  - Make sure we use single quotes for strings - [a538739]( https://github.com/royriojas/build-workflow/commit/a538739 ), [royriojas](https://github.com/royriojas), 29/11/2014 02:20:01

## v0.1.4
- **Refactoring**
  - Make sure we use single quotes - [7a22f5e]( https://github.com/royriojas/build-workflow/commit/7a22f5e ), [royriojas](https://github.com/royriojas), 29/11/2014 01:34:23

- **Other changes**
  - Update usage.md - [c4c2e7f]( https://github.com/royriojas/build-workflow/commit/c4c2e7f ), [Roy Riojas](https://github.com/Roy Riojas), 26/11/2014 03:29:34

    Fix docs
  - Update usage.md - [7315c8b]( https://github.com/royriojas/build-workflow/commit/7315c8b ), [Roy Riojas](https://github.com/Roy Riojas), 26/11/2014 03:26:33

    DOC: Fix docs markdown
## v0.1.3
- **Enhancements**
  - Add shimify in replace of browserify-shim - [51820e4]( https://github.com/royriojas/build-workflow/commit/51820e4 ), [royriojas](https://github.com/royriojas), 29/11/2014 01:32:45

  - Replacement for browserify shim to avoid add configuration info to the package.json - [efa2eb3]( https://github.com/royriojas/build-workflow/commit/efa2eb3 ), [royriojas](https://github.com/royriojas), 29/11/2014 01:19:48

  - Add consoleify transform - [eca6df5]( https://github.com/royriojas/build-workflow/commit/eca6df5 ), [royriojas](https://github.com/royriojas), 29/11/2014 01:19:12

- **Refactoring**
  - remove the "demo" string from the demo-structure files - [2e16db6]( https://github.com/royriojas/build-workflow/commit/2e16db6 ), [royriojas](https://github.com/royriojas), 29/11/2014 01:17:05

  - Add formatted files - [f5d28a4]( https://github.com/royriojas/build-workflow/commit/f5d28a4 ), [royriojas](https://github.com/royriojas), 26/11/2014 03:10:51

- **Build Scripts Changes**
  - Add stringformat dep - [255ab33]( https://github.com/royriojas/build-workflow/commit/255ab33 ), [royriojas](https://github.com/royriojas), 29/11/2014 01:14:40

- **Documentation**
  - Fix documenation - [0a07349]( https://github.com/royriojas/build-workflow/commit/0a07349 ), [royriojas](https://github.com/royriojas), 26/11/2014 03:14:43

## v0.1.1
- **Build Scripts Changes**
  - Add demo structure - [67a4569]( https://github.com/royriojas/build-workflow/commit/67a4569 ), [royriojas](https://github.com/royriojas), 26/11/2014 03:05:46

  - remove the scafold files - [ac232fe]( https://github.com/royriojas/build-workflow/commit/ac232fe ), [royriojas](https://github.com/royriojas), 25/11/2014 23:52:58

  - Formatted files - [8e67a67]( https://github.com/royriojas/build-workflow/commit/8e67a67 ), [royriojas](https://github.com/royriojas), 25/11/2014 00:45:18

  - Add template files - [f4a40e6]( https://github.com/royriojas/build-workflow/commit/f4a40e6 ), [royriojas](https://github.com/royriojas), 25/11/2014 00:43:27

- **Features**
  - Add protractor new config - [f069633]( https://github.com/royriojas/build-workflow/commit/f069633 ), [royriojas](https://github.com/royriojas), 25/11/2014 01:37:08

- **Enhancements**
  - Add default config for remove logging task - [0b381e4]( https://github.com/royriojas/build-workflow/commit/0b381e4 ), [royriojas](https://github.com/royriojas), 25/11/2014 00:43:08

  - Add example of prepushTasks - [af07125]( https://github.com/royriojas/build-workflow/commit/af07125 ), [royriojas](https://github.com/royriojas), 25/11/2014 00:42:48

  - cli improvements - [af80e85]( https://github.com/royriojas/build-workflow/commit/af80e85 ), [royriojas](https://github.com/royriojas), 25/11/2014 00:38:10

    - add option to install deps by groups
    - show help when the command is not found

  - Added codepainter task to prepush list - [bb337bd]( https://github.com/royriojas/build-workflow/commit/bb337bd ), [royriojas](https://github.com/royriojas), 03/11/2014 04:13:00

  - run codepainter - [9fd6535]( https://github.com/royriojas/build-workflow/commit/9fd6535 ), [royriojas](https://github.com/royriojas), 03/11/2014 04:09:59

  - Add yuidoc task - [80f4eb4]( https://github.com/royriojas/build-workflow/commit/80f4eb4 ), [royriojas](https://github.com/royriojas), 03/11/2014 03:56:10

  - added docco-husky-plus task - [2419a8c]( https://github.com/royriojas/build-workflow/commit/2419a8c ), [royriojas](https://github.com/royriojas), 03/11/2014 02:42:14

  - removed common-config.js - [76cd95d]( https://github.com/royriojas/build-workflow/commit/76cd95d ), [royriojas](https://github.com/royriojas), 03/11/2014 00:38:06

## v0.0.35
- **Enhancements**
  - Add common globlals to `.jshintrc` - [5dd09e2]( https://github.com/royriojas/build-workflow/commit/5dd09e2 ), [royriojas](https://github.com/royriojas), 25/10/2014 21:25:06

## v0.0.34
- **Features**
  - New `requireArr` transform - [2e3c369]( https://github.com/royriojas/build-workflow/commit/2e3c369 ), [royriojas](https://github.com/royriojas), 25/10/2014 21:05:43

    **Usage**

    **In your code**
    ```javascript
    // pass the path using `globs` like the ones grunt.file.expand method will accept
    // if you want to exclude a module, use the `!` prefix to exclude files from being required
    var modules = requireArr('./modules/**/*.js');
    var moreModules = requireArr('./modulesB/**/*.js', './modulesA/**/*.js', '!./modulesB/excluded.js');

    ```
    **In your grunt browserify config**
    ```javascript
    // in your grunt-browserify config
    options: {
      preBundleCB: function ( b ) {
        // this will register the transform
        b.transform( require( 'build-workflow/utils/require-arr' ));
        return b;
      }
    }
    ```

- **Build Scripts Changes**
  - Remove unneeded console log - [247d7a8]( https://github.com/royriojas/build-workflow/commit/247d7a8 ), [royriojas](https://github.com/royriojas), 10/10/2014 20:13:29

- **Bug Fixes**
  - Fix for undefined arguments inside the pre-push hook - [bfca07d]( https://github.com/royriojas/build-workflow/commit/bfca07d ), [royriojas](https://github.com/royriojas), 10/10/2014 20:12:23

## v0.0.33
- **Refactoring**
  - properly handle initialization errors - [6cb4e4f]( https://github.com/royriojas/build-workflow/commit/6cb4e4f ), [royriojas](https://github.com/royriojas), 09/10/2014 02:23:16

## v0.0.32
- **Enhancements**
  - properly show `common-config` load error - [9f8102b]( https://github.com/royriojas/build-workflow/commit/9f8102b ), [royriojas](https://github.com/royriojas), 09/10/2014 02:13:36

  - Improve `check-valid` and `pre-push` - [cc7f086]( https://github.com/royriojas/build-workflow/commit/cc7f086 ), [royriojas](https://github.com/royriojas), 09/10/2014 02:11:39

  - Add option to not replace the pkg.version inside the grunt tasks - [03ef1eb]( https://github.com/royriojas/build-workflow/commit/03ef1eb ), [royriojas](https://github.com/royriojas), 08/10/2014 23:49:28

- **Features**
  - Fix twig generator task - [f2aa656]( https://github.com/royriojas/build-workflow/commit/f2aa656 ), [royriojas](https://github.com/royriojas), 09/10/2014 02:10:31

## v0.0.30
- **Refactoring**
  - Remove not used code - [925444a]( https://github.com/royriojas/build-workflow/commit/925444a ), [royriojas](https://github.com/royriojas), 12/09/2014 12:12:14

- **Documentation**
  - Added documentation [[#1](https://github.com/royriojas/build-workflow/issues/1)] - [805a18b]( https://github.com/royriojas/build-workflow/commit/805a18b ), [royriojas](https://github.com/royriojas), 12/09/2014 11:47:47

## v0.0.29
- **Enhancements**
  - Add Karma Helper to make easier to declare the preprocessors - [63fad82]( https://github.com/royriojas/build-workflow/commit/63fad82 ), [royriojas](https://github.com/royriojas), 12/09/2014 11:14:16

## v0.0.28
- **Enhancements**
  - Add test helper - [b49faf9]( https://github.com/royriojas/build-workflow/commit/b49faf9 ), [royriojas](https://github.com/royriojas), 12/09/2014 10:56:17

- **Documentation**
  - Remove confusing description from  documentation [[#1](https://github.com/royriojas/build-workflow/issues/1)] - [3ff3749]( https://github.com/royriojas/build-workflow/commit/3ff3749 ), [royriojas](https://github.com/royriojas), 12/09/2014 00:44:05

## v0.0.27
- **Documentation**
  - Add more documentation [[#1](https://github.com/royriojas/build-workflow/issues/1)] - [11f2342]( https://github.com/royriojas/build-workflow/commit/11f2342 ), [royriojas](https://github.com/royriojas), 12/09/2014 00:37:07

- **Enhancements**
  - changelog will load even when deps are not installed - [5e997d3]( https://github.com/royriojas/build-workflow/commit/5e997d3 ), [royriojas](https://github.com/royriojas), 12/09/2014 00:23:21

## v0.0.26
- **Enhancements**
  - Specify custom tasks to run during prepush - [aef3acf]( https://github.com/royriojas/build-workflow/commit/aef3acf ), [royriojas](https://github.com/royriojas), 12/09/2014 00:11:00

    Now it is possible to specify other tasks apart from the validation
    ones (jsbeautifier, jshint, jscs, jsvalidate) to be executed during the
    pre push hook.

    in your `common-config.js` file add the following entry
    ```javascript
    prepushTasks: [ 'jsontlint' ],
    filesTovalidate : { … }
    ```

    The above can be used to execute other custom tasks during the pre push
    hook

- **Features**
  - Add twig task - [73c7ce5]( https://github.com/royriojas/build-workflow/commit/73c7ce5 ), [royriojas](https://github.com/royriojas), 12/09/2014 00:07:28

    ## new Twig templates render

    Add a new file called twig.js in your configs folder with the following
    content

    ```javascript
    module.exports = function ( grunt, pkg ) {
      'use strict';

      return {
        'chrome-app': {
          opts: {
            // make the files be relative to this folder
            // so when copying the relative structures is honored
            cwd: 'src/pages/',
            // the data to be passed to the templates
            data: {}
          },
          // the files to be processed with twig extension
          src: ['src/pages/**/*.twig'],
          // the path where the files are going to be copied to
          dest: 'generated/pages/'
        }
      };
    };
    ```

## v0.0.25
- **Enhancements**
  - factorized prepush and check-valid - [c1b5069]( https://github.com/royriojas/build-workflow/commit/c1b5069 ), [royriojas](https://github.com/royriojas), 11/09/2014 12:08:51

    `check-valid` now can specify options in a config file.

    - useNewer: true. Whether to use grunt-newer to only check changed files
    - tasksToRun: 'jsbeautifier,jscs,jshint,jsvalidate' which tasks to run as part of the `check-valid` task
    - filesToValidate: what files to validate (an array of globs like: ['src/**/*.js']) By default will use the same files on the filesToValidate Object from common-config.js file.
    - forceBeautify: true. By default the files will be beatufied automatically. If this is set to false. The task will break on the first file that needed beautification.

    Same as `check-valid` but
    - useNewer: is false by deafult
    - forceBeautify: is false by default.

  - Use grunt-newer to improve speed of validation check - [0c83980]( https://github.com/royriojas/build-workflow/commit/0c83980 ), [royriojas](https://github.com/royriojas), 11/09/2014 11:45:31

  - Use grunt newer to validate valid files - [5868d99]( https://github.com/royriojas/build-workflow/commit/5868d99 ), [royriojas](https://github.com/royriojas), 11/09/2014 11:38:44

## v0.0.24
- **Documentation**
  - Add more documentation [[#1](https://github.com/royriojas/build-workflow/issues/1)] - [304413b]( https://github.com/royriojas/build-workflow/commit/304413b ), [royriojas](https://github.com/royriojas), 10/09/2014 09:48:04

## v0.0.23
- **Documentation**
  - Added documentation [[#1](https://github.com/royriojas/build-workflow/issues/1)] - [50d6594]( https://github.com/royriojas/build-workflow/commit/50d6594 ), [royriojas](https://github.com/royriojas), 10/09/2014 03:43:38

## v0.0.22
- **Documentation**
  - Added documentation [[#1](https://github.com/royriojas/build-workflow/issues/1)] - [c403b34]( https://github.com/royriojas/build-workflow/commit/c403b34 ), [royriojas](https://github.com/royriojas), 10/09/2014 03:11:20

- **Bug Fixes**
  - Fix missing title in exec:yuidoc task - [a473e0d]( https://github.com/royriojas/build-workflow/commit/a473e0d ), [royriojas](https://github.com/royriojas), 09/09/2014 16:30:53

  - Fix missing title in exec:yuidoc task - [9fd1183]( https://github.com/royriojas/build-workflow/commit/9fd1183 ), [royriojas](https://github.com/royriojas), 09/09/2014 16:21:49

## v0.0.21
- **Bug Fixes**
  - Fix missing title in exec:yuidoc task - [ffa86ad]( https://github.com/royriojas/build-workflow/commit/ffa86ad ), [royriojas](https://github.com/royriojas), 09/09/2014 16:22:55

## v0.0.20
- **Build Scripts Changes**
  - added script to install deps - [ffec355]( https://github.com/royriojas/build-workflow/commit/ffec355 ), [royriojas](https://github.com/royriojas), 08/09/2014 22:19:55

  - Added grunt-exec - [3b57df1]( https://github.com/royriojas/build-workflow/commit/3b57df1 ), [royriojas](https://github.com/royriojas), 08/09/2014 21:05:37

  - remove check-kwl and markdown-expander - [3dd1ff0]( https://github.com/royriojas/build-workflow/commit/3dd1ff0 ), [royriojas](https://github.com/royriojas), 08/09/2014 21:02:16

## v0.0.18
- **Enhancements**
  - Add i18n run target task - [6ccd3ee]( https://github.com/royriojas/build-workflow/commit/6ccd3ee ), [royriojas](https://github.com/royriojas), 08/09/2014 18:25:40

    run it calling

    `grunt run-i18n-targets`

## v0.0.16
- **Build Scripts Changes**
  - Include grunt-codepainter - [b9f06f3]( https://github.com/royriojas/build-workflow/commit/b9f06f3 ), [royriojas](https://github.com/royriojas), 08/09/2014 10:31:06

## v0.0.15
- **Build Scripts Changes**
  - Properly load the package.json of the host project - [dcc84c0]( https://github.com/royriojas/build-workflow/commit/dcc84c0 ), [royriojas](https://github.com/royriojas), 08/09/2014 02:11:22

## v0.0.14
- **Build Scripts Changes**
  - Fix Added JSON lint task - [b3c866b]( https://github.com/royriojas/build-workflow/commit/b3c866b ), [royriojas](https://github.com/royriojas), 08/09/2014 02:08:01

## v0.0.13
- **Build Scripts Changes**
  - Fix codepainter task - [0982b1c]( https://github.com/royriojas/build-workflow/commit/0982b1c ), [royriojas](https://github.com/royriojas), 08/09/2014 00:30:25

  - Fix codepainter - [0b1b2b5]( https://github.com/royriojas/build-workflow/commit/0b1b2b5 ), [royriojas](https://github.com/royriojas), 08/09/2014 00:27:33

## v0.0.12
- **Build Scripts Changes**
  - Added grunt-bump - [d9919c8]( https://github.com/royriojas/build-workflow/commit/d9919c8 ), [royriojas](https://github.com/royriojas), 08/09/2014 00:21:07

- **Enhancements**
  - Properly made docco-husky to work - [2585fba]( https://github.com/royriojas/build-workflow/commit/2585fba ), [royriojas](https://github.com/royriojas), 08/09/2014 00:18:08

## v0.0.11
- **Refactoring**
  - Removed wrong jscs package - [c36f7d5]( https://github.com/royriojas/build-workflow/commit/c36f7d5 ), [royriojas](https://github.com/royriojas), 05/09/2014 22:28:09

- **Enhancements**
  - Update to latest dependency - [8c530b5]( https://github.com/royriojas/build-workflow/commit/8c530b5 ), [royriojas](https://github.com/royriojas), 05/09/2014 22:26:24

## v0.0.10
- **Enhancements**
  - Generate API docs and annotated docs - [3f25b37]( https://github.com/royriojas/build-workflow/commit/3f25b37 ), [royriojas](https://github.com/royriojas), 05/09/2014 17:03:58

    - annotated docs generated with `docco`
    - API docs using yuidoc

- **Bug Fixes**
  - Fix yuidoc configuration - [d7e67f7]( https://github.com/royriojas/build-workflow/commit/d7e67f7 ), [royriojas](https://github.com/royriojas), 05/09/2014 16:47:27

  - Fix docco documentation generator - [573863f]( https://github.com/royriojas/build-workflow/commit/573863f ), [royriojas](https://github.com/royriojas), 05/09/2014 16:33:10

## v0.0.9
- **Enhancements**
  - Structural changes - [4739fe6]( https://github.com/royriojas/build-workflow/commit/4739fe6 ), [royriojas](https://github.com/royriojas), 05/09/2014 15:05:49

- **Build Scripts Changes**
  - Initial commit - [2b88dc9]( https://github.com/royriojas/build-workflow/commit/2b88dc9 ), [Roy Riojas](https://github.com/Roy Riojas), 05/09/2014 04:09:02

repository: royriojas/build-workflow

gha_language: JavaScript

repo_name: royriojas/build-workflow


text:
# crypto-check

[![Latest Version on Packagist][ico-version]][link-packagist]
[![Software License][ico-license]](LICENSE.md)
[![Build Status][ico-travis]][link-travis]
[![Style CI][ico-styleci]][link-styleci]
[![Code Coverage][ico-code-quality]][link-code-quality]
[![Total Downloads][ico-downloads]][link-downloads]

A CLI tool for checking your wallet balances.

## Structure

```
bin/
config/
src/
tests/
vendor/
```

## Install

Via Composer

``` bash
$ composer global require pxgamer/crypto-check
```

## Usage

``` bash
$ cryptoc
```

## Change log

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

## Testing

``` bash
$ composer test
```

## Contributing

Please see [CONTRIBUTING](CONTRIBUTING.md) and [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) for details.

## Security

If you discover any security related issues, please email<EMAIL_ADDRESS>instead of using the issue tracker.

## Credits

- [pxgamer][link-author]
- [All Contributors][link-contributors]

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

[ico-version]: https://img.shields.io/packagist/v/pxgamer/crypto-check.svg?style=flat-square
[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square
[ico-travis]: https://img.shields.io/travis/pxgamer/crypto-check/master.svg?style=flat-square
[ico-styleci]: https://styleci.io/repos/110432987/shield
[ico-code-quality]: https://img.shields.io/codecov/c/github/pxgamer/crypto-check.svg?style=flat-square
[ico-downloads]: https://img.shields.io/packagist/dt/pxgamer/crypto-check.svg?style=flat-square

[link-packagist]: https://packagist.org/packages/pxgamer/crypto-check
[link-travis]: https://travis-ci.org/pxgamer/crypto-check
[link-styleci]: https://styleci.io/repos/110432987
[link-code-quality]: https://codecov.io/gh/pxgamer/crypto-check
[link-downloads]: https://packagist.org/packages/pxgamer/crypto-check
[link-author]: https://github.com/pxgamer
[link-contributors]: ../../contributors

repository: owenvoke/crypto-check

repo_name: owenvoke/crypto-check


text:
## WikipediaKit · API Client Framework for Swift

The [Wikipedia API](https://www.mediawiki.org/wiki/Special:ApiSandbox) is a complex beast. It takes some time (and willpower) to learn all of its idiosyncrasies.

With WikipediaKit, it’s easy to build apps that search and show Wikipedia content—without worrying about the raw API. Instead of exposing all options and endpoints, WikipediaKit provides comfortable access to the most interesting parts. It’s opinionated—but that’s the point!

The WikipediaKit framework is written in Swift 3, has no third-party dependencies, and runs on macOS, iOS, watchOS, and tvOS.

If this doesn’t convince you to build a shiny new reader app for Wikipedia yourself, have a look at [V for Wiki](http://v-for-wiki.com), the award-winning app that WikipediaKit was created for.

## Installation

### Carthage
You can use [Carthage](https://github.com/Carthage/Carthage) to install and update WikipediaKit.

### Manual
Drag and drop the `WikipediaKit.xcodeproj` to your app project and add the `WikipediaKit` embedded framework in your app project’s build settings.

### Swift Package Manager

WikipediaKit is ready for the [Swift Package Manager](https://swift.org/package-manager/).

## Usage

### Getting started

The `Wikipedia` class connects your app to Wikipedia’s API. You can search, get articles, and list nearby places by querying a freshly created `Wikipedia` instance…

```swift
let wikipedia = Wikipedia()
```

…or by using the `shared` singleton instance:

```swift
let wikipedia = Wikipedia.shared
```

Before doing anything else, make sure to add your email address:

```swift
WikipediaNetworking.appAuthorEmailForAPI =<EMAIL_ADDRESS>```

WikipediaKit will use this email address and your app’s bundle info to generate and send a `User-Agent` header. This will identify your app to Wikipedia’s servers with every API request, as required by the [API guidelines](https://www.mediawiki.org/wiki/API:Main_page#Identifying_your_client).

The `User-Agent` header is printed to your Xcode console when you make the first API request. It’ll look something like this:

```
User-Agent: ExampleApp/1.0 (com.example.ExampleApp<EMAIL_ADDRESS>WikipediaKit/1.0
```

Please double-check that the `User-Agent` header is correct before shipping your app.

### Return Type and Asynchronous Networking

The return type of all `Wikipedia` methods is
a standard [`URLSessionTask`](https://developer.apple.com/reference/foundation/urlsessiontask):

```swift
let language = WikipediaLanguage("en")

let searchSessionTask = Wikipedia.shared.requestOptimizedSearchResults(language: language, term: "Soft rime") { (searchResults, error) in
    // This code will be called asynchronously
    // whenever the results have been downloaded.
    // …
}
```

A `URLSessionTask` can be cancelled like this:

```swift
searchSessionTask.cancel()
```

See the [`URLSessionTask`](https://developer.apple.com/reference/foundation/urlsessiontask) documentation for further reading.

### Languages

A `WikipediaLanguage` has a language code, a localized name, an [autonym](https://en.wikipedia.org/wiki/Exonym_and_endonym), and sometimes a variant (e.g. `zh-hans` for Simplified Chinese and `zh-hant` for Traditional Chinese).

```swift
// French language, localized name for German, no variant
let l = WikipediaLanguage(code: "fr",
                          localizedName: "Französisch", // FR in DE
                          autonym: "Français") // FR in FR
```

WikipediaKit comes with a list of most Wikipedia languages and their autonyms. This lets you initialize a `WikipediaLanguage` by passing only the language code. Please note that if you use this shorthand method, the localized names will be in English.

```swift
let language = WikipediaLanguage("fr")
// code: "fr", localizedName: "French", autonym: "Français"
```

### Search

Search Wikipedia—e.g. for the term “[Soft rime](https://en.wikipedia.org/wiki/Soft_rime)” in English—like this:

```swift
let language = WikipediaLanguage("en")

let _ = Wikipedia.shared.requestOptimizedSearchResults(language: language, term: "Soft rime") { (searchResults, error) in

    guard error == nil else { return }
    guard let searchResults = searchResults else { return }

    for articlePreview in searchResults.results {
        print(articlePreview.displayTitle)
    }
}
```

The `searchResults` are a `WikipediaSearchResults` object.

#### Search Batch Size (Paging Search Results)

To load more search results for a query, simply start another search for the same `language:` and `term:`, passing the previous `WikipediaSearchResults` object as the `existingSearchResults:` parameter.

The default batch size is `15`, but can be changed by passing a different number in the `maxCount` parameter.

#### Search Methods

There are two supported search methods (`WikipediaSearchMethod`) to search for articles on Wikipedia. You can pass them to `requestSearchResults(method:language:term:)`.

- `.prefix` searches the article titles only
- `.fullText` searches the complete articles

**For better search results quality,** use `requestOptimizedSearchResults(language:term:)`, which doesn’t take a `method:` parameter (see the example above). This will use the `.prefix` search and then fall back to the `.fullText` search whenever there are few or no results for a search term.

You can adjust the minimum number of results—before the fallback `.fullText` search is triggered—with the `minCount:` parameter.

#### Search Thumbnail Image Size

The desired maximum pixel width of the `WikipediaArticlePreview`’s image URL can be adjusted in the optional `imageWidth:` parameter.

#### Search Cache

Searches are cached automatically until the app quits (see section on caching below).

### Article Previews

`WikipediaArticlePreview` objects represent search result items. They’re similar to full articles, but contain only an excerpt of the article text.

The `displayTitle` and `displayText` can be formatted via your `WikipediaFormattingDelegate`.

### Articles

Load the article about “[Soft rime](https://en.wikipedia.org/wiki/Soft_rime)” in English like this:

```swift
let language = WikipediaLanguage("en")

// You need to pass in the maximum width
// in pixels for the returned thumbnail URL,
// for example the screen width:
let imageWidth = Int(self.view.frame.size.width * UIScreen.main.scale)

let _ = Wikipedia.shared.requestArticle(language: language, title: "Soft rime", imageWidth: imageWidth) { (article, error) in
    guard error == nil else { return }
    guard let article = article else { return }

    print(article.displayTitle)
    print(article.displayText)
}
```

The `displayTitle` and `displayText` can be formatted via your `WikipediaFormattingDelegate`.

Wikipedia articles come with a table of contents, stored in a array of `WikipediaTOCItem`. The section titles can be formatted in your `WikipediaFormattingDelegate`.

To query other available languages for a given article, use the `requestAvailableLanguages(for:)` call on your `Wikipedia`instance, passing the existing article.

Articles are cached automatically until the app is restarted (see section on caching below).

### Nearby Search

This search mode returns geo-tagged articles around a specific location. Pass in a coordinate (latitude and longitude) around which to search:

```swift
let language = WikipediaLanguage("en")

let _ = Wikipedia.shared.requestNearbyResults(language: language, latitude: 52.4555592, longitude: 13.3175333) { (articlePreviews, resultsLanguage, error) in

    guard error == nil else { return }
    guard let articlePreviews = articlePreviews else { return }

    for a in articlePreviews {
        print(a.displayTitle)
        if let coordinate = a.coordinate {
            print(coordinate.latitude)
            print(coordinate.longitude)
        }
    }
}
```

### Most Read Articles

The `requestMostReadArticles(language:date:)` query gets a list of the most popular articles for a specific date from Wikipedia’s official analytics.

```swift
let language = WikipediaLanguage("en")

let dayBeforeYesterday = Date(timeIntervalSinceNow: -60 * 60 * 48)

let _ = Wikipedia.shared.requestMostReadArticles(language: language, date: dayBeforeYesterday) { (articlePreviews, date, resultsLanguage, error) in

    guard error == nil else { return }
    guard let articlePreviews = articlePreviews else { return }

    for a in articlePreviews {
        print(a.displayTitle)
    }
}
```

**Please note:** The API will return a `404` error if there’s no data available for the requested date. The most recent data is usually from yesterday, so receiving a `404` for today is expected.

You may want to filter the results from the most read articles before displaying them in your app—they are potentially NSFW. That’s what the `WikipediaBlacklistDelegate` is for (see below).

### Image Metadata

To find out the URL for a given Wikipedia image at a specific size, use this call:

```swift
let language = WikipediaLanguage("en")
let url = "https://en.wikipedia.org/wiki/File:Raureif2.JPG"

let _ = Wikipedia.shared.(language: language, url: url, width: 1000) { (imageMetadata, error) in
    guard error == nil else { return }
    print(imageMetadata.url) // URL for 1000px width version
    print(imageMetadata.description)
    print(imageMetadata.license)
}

```

Instead of the `url:` parameter, you can specify an image `id:`; in this case the `id` would be `"File:Raureif2.JPG"`.

## Delegates

WikipediaKit comes with a few delegate protocols that help you track state, filter, and format.

### Networking Delegate

```swift
WikipediaNetworking.sharedActivityIndicatorDelegate = MyActivityIndicatorDelegate.shared
```

Set a `WikipediaNetworkingActivityDelegate` to receive `start()` and `stop()` calls whenever a network operation starts and stops.

### Formatting Delegate

```swift
Wikipedia.sharedFormattingDelegate = MyFormattingDelegate.shared
```

The `WikipediaArticle` and `WikipediaArticlePreview` classes have a `displayTitle` and a `displayText` property.

You can parse and reformat article texts, titles, and the table of contents in your `WikipediaFormattingDelegate` before it’s being cached.

```swift
class MyFormattingDelegate: WikipediaTextFormattingDelegate {
    func format(context: WikipediaTextFormattingDelegateContext, rawText: String, title: String?, language: WikipediaLanguage, isHTML: Bool) -> String {
        // Do something to rawText before returning…
        return rawText
    }
}
```

### Blacklist Delegate

```swift
Wikipedia.sharedBlacklistDelegate = MyBlacklistDelegate.shared
```

You may wish to filter the most read articles before showing them as recommendations in your app. The `WikipediaBlacklistDelegate` protocol allows you to blacklist articles by title or description.

```swift
class MyBlacklistDelegate: WikipediaBlacklistDelegate {

    func isBlacklistedForRecommendations(title: String,
    language: WikipediaLanguage) -> Bool {
        // Decide if title is blacklisted here…
        return false
    }

    func containsBlacklistedWords(text: String, language: WikipediaLanguage) -> Bool {
        // Decide if text contains blacklisted words…
        return false
    }

}
```

## Caching

Caching happens automatically (*after* processing and formatting) for search results and articles. WikipediaKit uses simple `NSCache` instances.

There’s also the automatic [`NSURLCache`](http://nshipster.com/nsurlcache/), controlled by the server’s cache headers. You can modify the cache duration headers to be included API response in `Wikipedia.maxAgeInSeconds`.

## Random Articles

Request an array of random `WikipediaArticlePreview` objects like this:

```swift
Wikipedia.shared.requestRandomArticles(language: self.language, maxCount: 8, imageWidth: 640) {
    (articlePreviews, language, error) in

    guard let articlePreviews = articlePreviews else { return }

    for article in articlePreviews {
        print(article.displayTitle)
    }
}
```

WikipediaKit also has this convenience function that gets only one single random `WikipediaArticlePreview` at a time:

```swift
Wikipedia.shared.requestSingleRandomArticle(language: self.language, maxCount: 8, imageWidth: 640) {
    (article, language, error) in

    guard let article = article else { return }

    print(article.displayTitle)
}
```

If `maxCount` is larger than `1`, the surplus results from the API query are buffered in a shared `WikipediaRandomArticlesBuffer` object and will be returned one-by-one with every subsequent call of `requestSingleRandomArticle`. A new network request is only triggered when there are no buffered random articles left or when the query language changes.

## To Do

- [ ] Improve unit tests
- [ ] Pass request options in an array instead of function parameters

## About

WikipediaKit was created by [Frank Rausch](http://frankrausch.com) ([@frankrausch](https://twitter.com/frankrausch)) for [Raureif](http://raureif.net).

© 2017 Raureif GmbH / Frank Rausch

### License

MIT License; please read the `LICENSE` file in this repository.

### Disclaimer

This project is not affiliated with the official Wikipedia projects or the Wikimedia Foundation.

### Trademarks

Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.


text:
---
layout: post
title:  "CashFusion Part 1 - Trust"
date:   2020-02-17 20:00 -0000
---

## Resources

+ [CashFusion - Trust](https://github.com/cashshuffle/spec/blob/master/CASHFUSION.md)
+ In this session we discuss how CashFusion is attempting to ensure that no party in an unequal amount mix learns the mapping.
+ In this session we will not dive into the combinatorics, instead we leave that for part 2.
+ In this session we will also touch some topics on CoinShuffle++ too.

repository: MaxHillebrand/WasabiResearchClub

repo_name: MaxHillebrand/WasabiResearchClub


text:
# OBJ2JSON
A small Java tool I hacked together so that I could easily transform Wavefront .OBJ models into JSON for use with WebGL. It takes OBJ Model files and pre-processes them by breaking up the model according to material assignment. An example is provided demonstrating it's usage. It's not pretty but I found it useful.

main run method is in ObjProcessor


text:
---
hrs_structure:
  division: '1'
  volume: '1'
  title: '2'
  chapter: '11'
  section: 11-117
type: hrs_section
tags:
  - Government
menu:
  hrs:
    identifier: HRS_0011-0117
    parent: HRS0011
    name: 11-117 Withdrawal of candidates; disqualification; death; notice
weight: 20385
title: Withdrawal of candidates; disqualification; death; notice
full_title: 11-117 Withdrawal of candidates; disqualification; death; notice
---
**§11-117 Withdrawal of candidates; disqualification; death; notice.** (a) Any candidate may withdraw in writing not later than 4:30 p.m. on the day immediately following the close of filing for any reason and may withdraw after the close of filing up to 4:30 p.m. on the fiftieth day prior to an election for reasons of ill health. When a candidate withdraws for ill health, the candidate shall give notice in writing to the chief election officer if the candidate was seeking a congressional or state office, or the candidate shall give notice in writing to the county clerk if the candidate was seeking a county office. The notice shall be accompanied by a statement from a licensed physician or physician assistant indicating that such ill health may endanger the candidate's life.

A candidate who withdraws the candidate's own nomination papers prior to the close of filing shall not be considered to have caused a vacancy that may be filled by a party under section 11-118.

(b) On receipt of the notice of death, withdrawal, or upon determination of disqualification, the chief election officer or the clerk shall inform the chairperson of the political party of which the person deceased, withdrawing, or disqualified was a candidate. When a candidate dies, withdraws, or is disqualified after the close of filing and the ballots have been printed, the chief election officer or the clerk may order the candidate's name stricken from the ballot or order that a notice of the death, withdrawal, or disqualification be prominently posted at the appropriate polling places on election day.

(c) In no case shall the filing fee be refunded after filing. [L 1970, c 26, pt of §2; am L 1972, c 77, §5; am L 1973, c 217, §1(ii); am L 1983, c 34, §15; am L 1990, c 7, §2; am L 2009, c 151, §3; am L 2011, c 143, §3 and c 159, §1]

Cross References

Convicted persons, see chapter 831.

Attorney General Opinions

After twenty-four hours after the close of filing, a candidate is not entitled to withdraw and to have name dropped from the ballot. Att. Gen. Op. 70-23.

Case Notes

Circuit court erred in concluding that based upon individual's "withdrawal" from the district race, the office of elections was authorized pursuant to this section and/or §11-118 to allow the Republican Party three additional days to identify a "replacement" candidate; individual could not have withdrawn individual's nomination papers as the papers were void and should never have been accepted and filed by the county clerk; therefore, without these additional days, replacement individual's nomination papers were filed after the statutory deadline and individual's name should not have been on the ballot. 126 H. 115 (App.), 267 P.3d 699 (2011).

repository: SamMade/BlueAndKrabby

repo_name: SamMade/BlueAndKrabby


text:
# What?

This is a basic data analysis of the NYC 311 dataset, which is not included due to its huge size.

# How?

A lot of the EDA in this project was done using matplotlib, with pandas for separating the data into comparable vectors.

# Learned?

Through this project, I learned how to compare one string feature to a number feature or string feature to determine count per unique string.

Examples:
* Complaints per city
* Max complaint per city

Plotted:
* Bar graph of count vs complaints(top 10 complaints only).

repository: PranavEranki/DataScience-Projects

repo_name: PranavEranki/DataScience-Projects


text:
## Instructions here:

[https://pythops.com/post/create-your-own-image-for-jetson-nano-board](https://pythops.com/post/create-your-own-image-for-jetson-nano-board.html)

**Ubuntu release**: 20.04

## License
MIT

repository: shannon/jetson-nano-image

repo_name: shannon/jetson-nano-image


text:
# Twitch Novel

A book written by a Twitch stream, god help us all.

This is part of NANOWRIMO (Write a Novel in A Month) and being written over at [ColloquialOwl on Twitch](https://twitch.tv/colloquialowl).

We need to hit 50,000 words by December. Good luck.

## __The Novel__

__Genre:__ Fantasy

>Aeliana has woken up with no memory. Good thing a great evil isn't spreading over the land. Oh wait...

## __Contributing__
You can contribute to any aspect of the project. The novel will be entirely witten by people submitting to the github, from the structure to the prose itself.

To add to a chapter simply choose one, check it's outline, and then add to the prose document.

If you just want to add a name suggestion for a character, place, or the book itself please add to the documents in the Names folder.

## __Rules__
* Just be ethical
* No offensive names / slang / racial terms
* #hugsallowed

### Notes
> * Don't be afraid to write something generic/cringy. It's a changing document and every word takes us closer to that 50,000 word goal.
> * Please try to use character names and places from the suggested name documents so that people can contribute at any level.

license: Unlicense

repository: JCGithu/StreamNovel

repo_name: JCGithu/StreamNovel


text:
# Vagrantbox CentOS7

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Prerequisites
* Vagrant - https://releases.hashicorp.com/vagrant
* Virtualbox - http://download.virtualbox.org/virtualbox

## How to use?

1. Clone https://github.com/spy86/vagrant-Centos7
2. Run `vagrant up` from terminal and wait while virtual machine is installed.


text:
# undefined
    ## Title
    README Generator;

    ## Description
    It assists a web developer in quickly generating a quality README.md file. It includes prompts for the user to anwer a few questions about their project, including Title, Description, Table of Contents, instructions for installation and usage, license information, contributors to the project, testing information, and contact information for questions, including Github profile.

    ## Table of Contents
    1. Title
    2. Description
    3. Table of Contents
    4. Installation
    5. Usage
    6. License
    7. Contributors
    8. Tests
    9. Questions

    ## Description
    undefined

    ## Installation
    Run in node and follow prompts

    ## Usage
    A web developer follows the promtps to input the information which is compiled into the README.md file.

    ## License
    MIT

    ## Contributors
    Mike Coyne

    ## Tests
    not done yet

    ## Questions
    github.com/MikeCoyne
https://user-images.githubusercontent.com/79154065/122132606-bf50d680-ce00-11eb-914d-eafcba0b920d.mp4

repository: MikeCoyne/Professional-README-Generator

repo_name: MikeCoyne/Professional-README-Generator