<commit_before># Skywriter
[![Build Status](https://travis-ci.org/otherinbox/skywriter.png?branch=master)](https://travis-ci.org/otherinbox/skywriter)
[![Code Climate](https://codeclimate.com/github/otherinbox/skywriter.png)](https://codeclimate.com/github/otherinbox/skywriter)

Skywriter makes writing CloudFormation templates easier.

Writing and, more importantly, maintaining large JSON files can be a real pain.
Skywriter aims to alleviate some of that pain by letting you use code to
generate the JSON and, instead, maintain a Ruby file. Defining your template in
runnable code provides some benefits like variable assignment, that make the
need to use CloudFormation's build-in functions superfluous (of course,
Skywriter still has helpers for those functions, if you need them).


## Features

### Automatic Dependencies

When you are creating a resource, references to other resources will be added to
the `DependsOn` key automatically. If you have additional dependencies which
should be included in this key, they can be declared like this:

``` ruby
Resource.new(<commit_msg>Link to RDoc in README.<commit_after># Skywriter
[![Build Status](https://travis-ci.org/otherinbox/skywriter.png?branch=master)](https://travis-ci.org/otherinbox/skywriter)
[![Code Climate](https://codeclimate.com/github/otherinbox/skywriter.png)](https://codeclimate.com/github/otherinbox/skywriter)

Skywriter makes writing CloudFormation templates easier.

Writing and, more importantly, maintaining large JSON files can be a real pain.
Skywriter aims to alleviate some of that pain by letting you use code to
generate the JSON and, instead, maintain a Ruby file. Defining your template in
runnable code provides some benefits like variable assignment, that make the
need to use CloudFormation's build-in functions superfluous (of course,
Skywriter still has helpers for those functions, if you need them).

[RDoc](http://rubydoc.info/gems/skywriter/frames)


## Features

### Automatic Dependencies

When you are creating a resource, references to other resources will be added to
the `DependsOn` key automatically. If you have additional dependencies which
should be included in this key, they can be declared like this:

``` ruby
Resource.new(
{'fraction_non_alphanumeric': 0.0813589628967367, 'fraction_numerical': 0.0, 'mean_word_length': 5.468208092485549, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1901085', 'n_tokens_mistral': 615, 'n_tokens_neox': 583, 'n_words': 252}