guard-stitch-plus 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzM4NjBmN2UxMDQyYjM3NzliMWM4NzM5ZDdlNDMzOTkyMTY5OTE5Nw==
4
+ ZjQ4NjZhNzM4NDM5NTMyNzkxMTI4ZTY3MmRkZmViYzQyNjc2ZDUxYQ==
5
5
  data.tar.gz: !binary |-
6
- MjQ1NWVmZDUxZWUwMDg4NDA4NGU1Y2NmNGUxMzU0MGQ3ZGM5OTBiNw==
6
+ OTk0NDNhZjhhZmNlZWJhMTUzOGU3MWE2OGMxYTI5M2ZiMjc1NDllYg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- OGFlODFkMDMzYzc2MDBiMWYxMDMyMmFkNGJiYjk4ZDI5NTEwZmRmYzM1MjJi
10
- M2NhNmY1M2U1OTI1MzUzZGZhZjRlMzM4MjI3ZDM3ZDM2NDUxZmE1MjJhMmNk
11
- MTA0MzYzZDJmYTI3OGEwMDhiMzc5NDcxMmQzMDI1ZDliMGFiZWI=
9
+ YTc2MTUyYmM5NmFhOTE5ZmExYWU4YTIxOTAxMWU1MGE0YTA4MjE3OTY2OTg5
10
+ MjBjN2YwMjMxNTdiY2E0ZWMwN2JjOWJiMGVjNzI1NDYwNjJmYmE3ZWNmNjY5
11
+ OWRlNDBkNWZiODYyMjZhMmQzM2YzMmMyZmEyZDIxNjkxOGQxYjE=
12
12
  data.tar.gz: !binary |-
13
- ZmU5MmY2NGI0MWI4YmM4ZDkyYTAzYzNlMzVmZWI0YTRmMTEzOTkxNmNmNGM0
14
- ZDMxZmM3OWU3YTQwNDJlZjA3ZGM3ZTA4OGY4OWU2ZTZlMDc0OGE2NzkxMGYy
15
- MWJlYzM4M2M3YzVlZDRjNGQ1ZjdhOTNhYjRlYjcyMWQwMzQ5ODI=
13
+ NzQzNWVkYjdlZWM0MmJmMzliNDQ2Yzg5ZmM2ODZkNDM3MWJiMmViNGQ4Yjhh
14
+ MzIyMmI4OWVjOTA3YTE4NmQ4NjkyNjI5NGQ4ZmY2Mzk4OTMyN2JjN2YyMjI3
15
+ NmE5MmVjNTg3MTc2NmM0MDdjMmEyZDE0NDEyMjFkYWNhNmIzYjc=
data/.gitignore CHANGED
@@ -17,3 +17,5 @@ test/version_tmp
17
17
  tmp
18
18
  .DS_Store
19
19
  test/javascripts/*.js
20
+ _site
21
+ js/*.js
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+
3
+ ## 1.0.0
4
+ - initial release
5
+
6
+ ## 1.1.0
7
+ - Added compatibility with jekyll-stitch-plus.
8
+ - Added compatibility with guard-jekyll-plus.
9
+ - Now handling file additions and removals correctly.
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
- # Guard::Stitchplus
1
+ # Guard Stitch Plus
2
2
 
3
- Write a gem description
3
+ A guard compiling and uglifying javascripts, powered by [stitch-plus](https://github.com/imathis/stitch-plus).
4
4
 
5
5
  ## Installation
6
6
 
7
7
  Add this line to your application's Gemfile:
8
8
 
9
- gem 'guard-stitchplus'
9
+ gem 'guard-stitch-plus'
10
10
 
11
11
  And then execute:
12
12
 
@@ -14,11 +14,82 @@ And then execute:
14
14
 
15
15
  Or install it yourself as:
16
16
 
17
- $ gem install guard-stitchplus
17
+ $ gem install guard-stitch-plus
18
18
 
19
19
  ## Usage
20
20
 
21
- Write usage instructions here
21
+ Add this guard to your Guardfile with `guard init stitch-plus`. Here's a sample Guardfile.
22
+
23
+ ```ruby
24
+ stitch_config = {
25
+ output: 'javascripts/site.js',
26
+ dependencies: [
27
+ 'javascripts/lib/jquery.js',
28
+ 'javascripts/lib'
29
+ ],
30
+ paths: ['javascripts/modules'],
31
+ fingerprint: true,
32
+ uglify: true
33
+ }
34
+
35
+ guard 'stitch-plus', stitch_config do
36
+ watch /^javascripts/
37
+ end
38
+ ```
39
+
40
+ Whenever the guard is loaded or when a javascript file changes which is being watched, stitch-plus will:
41
+
42
+ 1. Add jquery.js, followed by any other javascript or coffeescript file in `javascripts/lib/`.
43
+ 2. Add a Require function and wrap all files in `javascripts/modules` in a CommonJS wrapper.
44
+ 3. Uglify the compiled javascript.
45
+ 4. Write it to a fingerprinted file at `javascripts/site-f1408932717b4b16eb97969d34961213.js`.
46
+
47
+ ### Using this with Jekyll?
48
+
49
+ If you're using Jekyll, be sure to check out [jekyll-stitch-plus](https://github.com/octopress/jekyll-stitch-plus) which integrates smoothly with jekyll and also plays
50
+ nicely with this guard plugin. In that case be sure to add your stitch-plus configuration to your Jekyll config file (usually _config.yml) and point your guard to that
51
+ file as well.
52
+
53
+ Your Jekyll YAML config file might look like this.
54
+
55
+ ```yaml
56
+ stitch:
57
+ output: 'javascripts/site.js'
58
+ dependencies:
59
+ - 'javascripts/lib/jquery.js'
60
+ - 'javascripts/lib'
61
+ paths: ['javascripts/modules']
62
+ fingerprint: true
63
+ uglify: true
64
+ ```
65
+
66
+ Then your Guardfile would look like this.
67
+
68
+ ```ruby
69
+ guard 'stitch-plus', config: '_config.yml' do
70
+ watch /^(javascripts|_config.yml)/
71
+ end
72
+ ```
73
+
74
+ Notice that the guard is also watching the Jekyll config file.
75
+
76
+ ## Configuration
77
+
78
+ Configure stitch-plus by passing a hash of options or pointing it to a YAML config file.
79
+
80
+ | Config | Description | Default |
81
+ |:-----------------|:---------------------------------------------------------------------------|:------------|
82
+ | `config` | A path to a YAML file containing stitch configurations | nil |
83
+ | `dependencies` | Array of files/directories to be added first as global javascripts | nil |
84
+ | `paths` | Array of directories where javascripts will be wrapped as CommonJS modules | nil |
85
+ | `output` | A path to write the compiled javascript | 'all.js' |
86
+ | `fingerprint` | Add a fingerprint to the file name for super cache busting power | false |
87
+ | `cleanup` | Automatically remove previously compiled files | true |
88
+ | `uglify` | Smash javascript using the Uglifier gem | false |
89
+ | `uglify_options` | Options for the Uglifier gem. See the [Uglifier docs](https://github.com/lautis/uglifier#usage) for details. | {} |
90
+
91
+ Note: You can configure from the hash and a yaml file, but configurations loaded from a YAML file will override any settings in your config hash. For example, `{config: 'stitch.yml', uglify: false}` will be overwritten if the yaml file sets `uglify: true`.
92
+
22
93
 
23
94
  ## Contributing
24
95
 
@@ -27,3 +98,29 @@ Write usage instructions here
27
98
  3. Commit your changes (`git commit -am 'Add some feature'`)
28
99
  4. Push to the branch (`git push origin my-new-feature`)
29
100
  5. Create new Pull Request
101
+
102
+ ## License
103
+
104
+ Copyright (c) 2013 Brandon Mathis
105
+
106
+ MIT License
107
+
108
+ Permission is hereby granted, free of charge, to any person obtaining
109
+ a copy of this software and associated documentation files (the
110
+ "Software"), to deal in the Software without restriction, including
111
+ without limitation the rights to use, copy, modify, merge, publish,
112
+ distribute, sublicense, and/or sell copies of the Software, and to
113
+ permit persons to whom the Software is furnished to do so, subject to
114
+ the following conditions:
115
+
116
+ The above copyright notice and this permission notice shall be
117
+ included in all copies or substantial portions of the Software.
118
+
119
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
120
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
121
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
122
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
123
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
124
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
125
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
126
+
@@ -6,23 +6,57 @@ module Guard
6
6
 
7
7
  def initialize (watchers=[], options={})
8
8
  super
9
- @stitcher = ::StitchPlus.new(options.merge({guard: true}))
9
+ @options = options
10
10
  end
11
11
 
12
12
  def start
13
- @stitcher.write
13
+ @stitcher = ::StitchPlus.new(@options.merge({guard: true}))
14
+ ENV['GUARD_STITCH_PLUS'] = 'true'
15
+ @stitch_files = stitch_files
16
+ write
14
17
  end
15
18
 
16
19
  def reload
17
- @stitcher.write
20
+ write
18
21
  end
19
22
 
20
23
  def run_all
21
- @stitcher.write
24
+ write
22
25
  end
23
26
 
24
- def run_on_changes(_)
27
+ def run_on_removals(paths)
28
+ if (paths & @stitch_files).size > 0
29
+ write
30
+ end
31
+ end
32
+
33
+ def run_on_additions(paths)
34
+ @stitch_files = stitch_files
35
+ if (paths & @stitch_files).size > 0
36
+ write
37
+ end
38
+ end
39
+
40
+ def run_on_changes(paths)
41
+ @stitch_files = stitch_files
42
+ if @options[:config] and paths.include? @options[:config]
43
+ start
44
+ elsif (paths & @stitch_files).size > 0
45
+ write
46
+ end
47
+ end
48
+
49
+ def write
25
50
  @stitcher.write
51
+ ENV['GUARD_STITCH_PLUS_OUTPUT'] = @stitcher.last_write
52
+ end
53
+
54
+ private
55
+
56
+ def stitch_files
57
+ all_files = @stitcher.all_files
58
+ ENV['GUARD_STITCH_PLUS_FILES'] = all_files.join(',')
59
+ all_files
26
60
  end
27
61
  end
28
62
  end
@@ -1,4 +1,16 @@
1
- guard 'stitch-plus', :dependencies => ['javascripts/dependencies/**/*'], :paths => ['javascripts/modules'] do
2
- watch /^javascripts/
1
+ # Read more about stitch-plus configuration at https://github.com/imathis/guard-stitch-plus
2
+ #
3
+ stitch_config = {
4
+ dependencies: [
5
+ 'javascripts/lib/jquery.js',
6
+ 'javascripts/lib'
7
+ ],
8
+ paths: ['javascripts/modules'],
9
+ output: 'javascripts/site.js',
10
+ uglify: true
11
+ }
12
+
13
+ guard 'stitch-plus', stitch_config do
14
+ watch /javascripts/
3
15
  end
4
16
 
@@ -1,5 +1,5 @@
1
1
  module Guard
2
2
  module StitchPlusVersion
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
@@ -1,6 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'guard-stitch-plus', :path => "../"
4
- gem 'coffee-script'
3
+ gem 'jekyll'
4
+ gem 'guard-jekyll-plus'
5
+ gem 'jekyll-stitch-plus'
6
+ gem 'guard-stitch-plus', path: '../'
5
7
  gem 'uglifier'
6
-
8
+ gem 'coffee-script'
9
+ gem 'redcarpet'
@@ -1,7 +1,21 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
- guard 'stitch-plus', config: 'stitch.yml' do
5
- watch /^javascripts/
4
+
5
+ # Add
6
+ stitch_config = {
7
+ dependencies: ['js/lib'],
8
+ paths: ['js/modules'],
9
+ output: 'js/site.js',
10
+ uglify: true
11
+ }
12
+ guard 'stitch-plus', stitch_config do
13
+ watch /js/
14
+ end
15
+
16
+
17
+ guard "jekyll-plus" do
18
+ watch /.*/
19
+ ignore %r{^_site/}
6
20
  end
7
21
 
@@ -0,0 +1,15 @@
1
+ name: Your New Jekyll Site
2
+ markdown: redcarpet
3
+ pygments: true
4
+
5
+ env: 'production'
6
+
7
+ stitch:
8
+ dependencies:
9
+ - 'js/lib/jquery.js'
10
+ - 'js/lib/underscore.js'
11
+ - 'js/lib' # globs the js/lib dir
12
+ paths: 'js/modules' # globs the js/modules dir
13
+ output: 'js/site.js'
14
+ #fingerprint: true
15
+
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>{{ page.title }}</title>
6
+ <meta name="viewport" content="width=device-width">
7
+ {% stitch_js_tag %}
8
+ </head>
9
+ <body>
10
+ {{ content }}
11
+ </body>
12
+ </html>
@@ -0,0 +1 @@
1
+ require 'jekyll-stitch-plus'
@@ -0,0 +1,13 @@
1
+ ---
2
+ layout: default
3
+ title: Your New Jekyll Site
4
+ ---
5
+
6
+ <div id="home">
7
+ <h1>Blog Posts</h1>
8
+ <ul class="posts">
9
+ {% for post in site.posts %}
10
+ <li><span>{{ post.date | date_to_string }}</span> &raquo; <a href="{{ post.url }}">{{ post.title }}</a></li>
11
+ {% endfor %}
12
+ </ul>
13
+ </div>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-stitch-plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Mathis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-17 00:00:00.000000000 Z
11
+ date: 2013-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -46,6 +46,7 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - .gitignore
49
+ - CHANGELOG.md
49
50
  - Gemfile
50
51
  - LICENSE.txt
51
52
  - README.md
@@ -56,10 +57,13 @@ files:
56
57
  - lib/guard/stitch-plus/version.rb
57
58
  - test/Gemfile
58
59
  - test/Guardfile
59
- - test/javascripts/dependencies/foo.coffee
60
- - test/javascripts/dependencies/test.js
61
- - test/javascripts/modules/test-module.js
62
- - test/stitch.yml
60
+ - test/_config.yml
61
+ - test/_layouts/default.html
62
+ - test/_plugins/stitch-plus.rb
63
+ - test/index.html
64
+ - test/js/lib/foo.coffee
65
+ - test/js/lib/test.js
66
+ - test/js/modules/test-module.js
63
67
  homepage: https://github.com/imathis/guard-stitch-plus
64
68
  licenses:
65
69
  - MIT
@@ -1,5 +0,0 @@
1
- stitch:
2
- dependencies: ['javascripts/dependencies']
3
- paths: ['javascripts/modules']
4
- output: 'javascripts/app.js'
5
- fingerprint: true