wormwood 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,53 +1,57 @@
1
1
  # Wormwood
2
2
 
3
- Wormwood is an event-driven file rendering utility inspired by [Jekyll](https://github.com/mojombo/jekyll).
3
+ Wormwood is an event-driven template rendering utility inspired by [Jekyll](https://github.com/mojombo/jekyll). It's great for rendering markdown, e.g., a README file, as you edit.
4
+
5
+ Wormwood will:
6
+
7
+ 1. watch for changes to a template directory ( _./_ by default)
8
+ 1. render the changed files (via [Tilt](https://github.com/rtomayko/tilt)) into a layout
9
+ 1. write the rendered, laid-out content to an output directory ( _./_ by default).
10
+
11
+
12
+ ## Installation
13
+
14
+ $ gem install wormwood
4
15
 
5
- Wormwood:
6
- 1. watches for changes to a template directory ( _./_ by default)
7
- 2. renders the changed files (via [Tilt](https://github.com/rtomayko/tilt))
8
- 3. writes the rendered output to an output directory ( _./_ by default).
9
16
 
10
17
  ## Usage
11
18
 
12
- 1. Create a file [Tilt](https://github.com/rtomayko/tilt) knows how to render, e.g., _foo.erb_
13
- 2. Create a file named "layout" in the same directory, with a Tilt-supported extension, e.g., _layout.erb_
14
- 3. Reference _content_ in the layout, e.g., `<%= content %>`
15
- 4. Run `wormwood`
16
- 5. Edit _foo.erb_ and observe changes applied to _foo.html_
19
+ 1. Create a file [Tilt](https://github.com/rtomayko/tilt) knows how to render, e.g., _foo.md_
20
+ 1. Run `wormwood`
21
+ 1. Edit _foo.md_ and observe the creation of _foo.html_
22
+
23
+ **Note:** Wormwood will generate a file called _&lt;layout name>.erb_ in your source directory if a file named "layout" doesn't already exist. Feel free to hack it.
17
24
 
18
25
 
19
26
  ## Configuration
20
27
 
21
- You can specify _source_ and _destination_ directories as options. For example:
28
+ Wormwood defines a few configuration options:
22
29
 
23
- wormwood -s templates -d public
30
+ `--source` The directory containing the template and layout files. Defaults to "./"
24
31
 
25
- Other options:
32
+ `--destination` The directory to write rendered files to. Defaults to "./"
26
33
 
27
- `--layout` specifies the layout file name (without the extension), e.g., `wormwood --layout default`. Defaults to "layout".
34
+ `--layout` The layout file name (without extension). Defaults to "layout".
28
35
 
29
- `--variable` specifies the variable name used to insert the rendered content into the layout, e.g., `wormwood --variable yield`. Defaults to "content".
36
+ `--variable` The name of the variable used to insert rendered content into the layout. Defaults to "content".
30
37
 
31
38
 
32
- ## Installation
39
+ ## Developing
33
40
 
34
- Add this line to your application's Gemfile:
41
+ 1. Develop
42
+ 1. Build gem `rake build`
43
+ 1. Install gem `rake install`
44
+ 1. Run tests `rake test`
35
45
 
36
- gem 'wormwood'
37
46
 
38
- And then execute:
47
+ ## Changelog
39
48
 
40
- $ bundle
49
+ 0.0.7 generates default layout
50
+ 0.0.6 adds layout support
41
51
 
42
- Or install it yourself as:
43
-
44
- $ gem install wormwood
45
52
 
53
+ ## License
46
54
 
47
- ## Contributing
55
+ Copyright 2013 Erik Eldridge
48
56
 
49
- 1. Fork it
50
- 2. Create your feature branch (`git checkout -b my-new-feature`)
51
- 3. Commit your changes (`git commit -am 'Add some feature'`)
52
- 4. Push to the branch (`git push origin my-new-feature`)
53
- 5. Create new Pull Request
57
+ Licensed under the MIT License
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ # ref: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
5
+ Rake::TestTask.new do |t|
6
+ t.pattern = "test/**/*_spec.rb"
7
+ end
@@ -11,18 +11,14 @@ default_command :watch
11
11
 
12
12
  global_option '--source [DIR]', 'Watches specified directory path (defaults to "./")'
13
13
  global_option '--destination [DIR]', 'Writes to specified directory path (defaults to "./")'
14
- global_option '--layout [NAME]', 'The layout file name (defaults to "layout")'
14
+ global_option '--layout [NAME]', 'The layout name (defaults to "layout")'
15
15
  global_option '--variable [NAME]', 'The layout variable name (defaults to "content")'
16
16
 
17
17
  command :watch do |c|
18
18
  c.syntax = 'wormwood watch [options]'
19
19
  c.description = 'Watches source directory and renders any files that change'
20
20
  c.action do |args, options|
21
- options.default \
22
- :source => './',
23
- :destination => './',
24
- :layout => 'layout',
25
- :variable => 'content'
21
+ options.default Wormwood::DEFAULTS
26
22
  Wormwood.watch(options)
27
23
  end
28
24
  end
@@ -31,11 +27,7 @@ command :build do |c|
31
27
  c.syntax = 'wormwood build [options]'
32
28
  c.description = 'Renders all templates in source directory'
33
29
  c.action do |args, options|
34
- options.default \
35
- :source => './',
36
- :destination => './',
37
- :layout => 'layout',
38
- :variable => 'content'
30
+ options.default Wormwood::DEFAULTS
39
31
  Wormwood.build(Dir[Wormwood::GLOB], options)
40
32
  end
41
33
  end
@@ -5,7 +5,13 @@ require 'fileutils'
5
5
  require 'tilt'
6
6
 
7
7
  module Wormwood
8
- GLOB = '**/*.{erb,rhtml,markdown,mkd,md}'
8
+ GLOB = '**/*.{markdown,mkd,md}'
9
+ DEFAULTS = {
10
+ :source => '.',
11
+ :destination => '.',
12
+ :layout => 'layout',
13
+ :variable => 'content'
14
+ }
9
15
 
10
16
  # ref: https://github.com/mojombo/jekyll/blob/master/lib/jekyll/commands/build.rb
11
17
  # ref: https://github.com/TwP/directory_watcher/blob/master/lib/directory_watcher.rb
@@ -22,6 +28,10 @@ module Wormwood
22
28
 
23
29
  def self.build paths, options
24
30
  layout_path = Dir.glob(File.join(options.source, "#{options.layout}*")).first
31
+ if layout_path.nil?
32
+ layout_path = File.join(options.source, "#{options.layout}.erb")
33
+ create_layout layout_path, options
34
+ end
25
35
  paths.each do |source_path|
26
36
  dest_path = File.join \
27
37
  options.destination,
@@ -32,4 +42,15 @@ module Wormwood
32
42
  end
33
43
  end
34
44
 
45
+ def self.create_layout layout_path, options
46
+ default_layout = <<-EOS.gsub /^\s+/, ''
47
+ <!--
48
+ Default layout generated by wormwood.
49
+ Check out https://github.com/erikeldridge/wormwood#usage for more info.
50
+ -->
51
+ <%= #{options.variable} %>
52
+ EOS
53
+ File.write layout_path, default_layout
54
+ end
55
+
35
56
  end
@@ -1,3 +1,3 @@
1
1
  module Wormwood
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -1,11 +1,25 @@
1
1
  require_relative '../../test_helper'
2
2
  describe Wormwood do
3
3
  before do
4
- clear_dest
5
- create_source
4
+ clear_dest!
5
+ create_source_dir!
6
+ create_template!
7
+ end
8
+
9
+ it "generates default layout" do
10
+ Wormwood.build \
11
+ [source_dir("foo.erb")],
12
+ OpenStruct.new({
13
+ 'source' => source_dir,
14
+ 'destination' => dest_dir,
15
+ 'layout' => 'layout',
16
+ 'variable' => 'content'
17
+ })
18
+ assert File.exist?(source_dir('layout.erb'))
6
19
  end
7
20
 
8
21
  it "writes to the correct destination" do
22
+ create_layout!
9
23
  Wormwood.build \
10
24
  [source_dir("foo.erb")],
11
25
  OpenStruct.new({
@@ -4,12 +4,21 @@ require 'fileutils'
4
4
  require 'ostruct'
5
5
  require_relative '../lib/wormwood.rb'
6
6
 
7
- def create_source
8
- unless File.exists? source_dir
9
- FileUtils.mkdir_p(source_dir)
10
- File.write(source_dir('layout.erb'), "<%= content %>")
11
- File.write(source_dir('foo.erb'), "asd")
12
- end
7
+ def clear_dest!
8
+ FileUtils.rm_rf(dest_dir)
9
+ FileUtils.mkdir_p(dest_dir)
10
+ end
11
+
12
+ def create_source_dir!
13
+ FileUtils.mkdir_p(source_dir) unless File.exists? source_dir
14
+ end
15
+
16
+ def create_layout!
17
+ File.write(source_dir('layout.erb'), "<%= content %>")
18
+ end
19
+
20
+ def create_template!
21
+ File.write(source_dir('foo.erb'), "asd")
13
22
  end
14
23
 
15
24
  # ref: https://github.com/mojombo/jekyll/blob/master/test/helper.rb
@@ -20,8 +29,3 @@ end
20
29
  def source_dir(*subdirs)
21
30
  File.join(File.dirname(__FILE__), 'tmp/source', *subdirs)
22
31
  end
23
-
24
- def clear_dest
25
- FileUtils.rm_rf(dest_dir)
26
- FileUtils.mkdir_p(dest_dir)
27
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wormwood
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-01 00:00:00.000000000 Z
12
+ date: 2013-05-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: commander
@@ -74,8 +74,8 @@ files:
74
74
  - bin/wormwood
75
75
  - lib/wormwood.rb
76
76
  - lib/wormwood/version.rb
77
- - test/lib/wormwood/build_test.rb
78
- - test/test_helper.rb
77
+ - spec/lib/wormwood/build_spec.rb
78
+ - spec/test_helper.rb
79
79
  - wormwood.gemspec
80
80
  homepage: http://github.com/erikeldridge/wormwood
81
81
  licenses: []
@@ -104,5 +104,5 @@ summary: Wormwood watches for changes to a template directory ("./" by default),
104
104
  the changed files (via Tilt), and writes the rendered output to an output directory
105
105
  ("./" by default).
106
106
  test_files:
107
- - test/lib/wormwood/build_test.rb
108
- - test/test_helper.rb
107
+ - spec/lib/wormwood/build_spec.rb
108
+ - spec/test_helper.rb