hanlon 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *.gem
2
+ */.DS_Store
3
+ */*.swp
4
+ *.swp
5
+ .DS_Store
6
+ .bundle
7
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in hanlon.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,27 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ hanlon (0.0.1)
5
+ haml
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ diff-lcs (1.1.2)
11
+ haml (3.1.2)
12
+ rspec (2.6.0)
13
+ rspec-core (~> 2.6.0)
14
+ rspec-expectations (~> 2.6.0)
15
+ rspec-mocks (~> 2.6.0)
16
+ rspec-core (2.6.4)
17
+ rspec-expectations (2.6.0)
18
+ diff-lcs (~> 1.1.2)
19
+ rspec-mocks (2.6.0)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ haml
26
+ hanlon!
27
+ rspec
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require "rspec/core/rake_task"
5
+ namespace :spec do
6
+ types = [:unit]
7
+
8
+ types.each do |type|
9
+ desc "Run #{type} specs only"
10
+ RSpec::Core::RakeTask.new(type) do |spec|
11
+ spec.pattern = "spec/#{type}/**/*_spec.rb"
12
+ end
13
+ end
14
+
15
+ desc "Run All Specs"
16
+ task :all => types
17
+ end
18
+
19
+ task :spec => ['spec:all']
20
+ task :default => :spec
data/hanlon.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "hanlon/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "hanlon"
7
+ s.version = Hanlon::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ['cohitre']
10
+ s.email = ['i@cohitre.com']
11
+ s.homepage = ""
12
+ s.summary = %q{Define rails helpers with Haml}
13
+ s.description = %q{Use Haml to generate rails helpers.}
14
+
15
+ s.rubyforge_project = "hanlon"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_development_dependency 'rspec'
23
+ s.add_dependency 'haml'
24
+ end
@@ -0,0 +1,24 @@
1
+ module Hanlon
2
+ class Engine
3
+ def initialize hanlon_text, options={}
4
+ @haml_engine = Haml::Engine.new hanlon_text, options
5
+ end
6
+
7
+ def module
8
+ @module ||= process
9
+ end
10
+
11
+ def process
12
+ loader = Hanlon::Loader.new
13
+ @haml_engine.render loader
14
+ @module = loader.build
15
+ end
16
+
17
+ def evaluate haml
18
+ klass = Class.new
19
+ klass.send :include, self.module
20
+ engine = Haml::Engine.new haml
21
+ engine.render klass.new
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ module Hanlon
2
+ class Loader
3
+ def initialize
4
+ @loaded_methods = {}
5
+ end
6
+
7
+ def add_method name, &block
8
+ @loaded_methods[name] = block
9
+ end
10
+
11
+ def hanlon name, &block
12
+ add_method name do |*helper_args|
13
+ capture_haml *helper_args, &block
14
+ end
15
+ end
16
+
17
+ def [] name
18
+ @loaded_methods[name]
19
+ end
20
+
21
+ def build
22
+ loaded_methods = @loaded_methods
23
+ Module.new do
24
+ loaded_methods.each_pair do |key, value|
25
+ define_method key, value
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,3 @@
1
+ module Hanlon
2
+ VERSION = "0.0.1"
3
+ end
data/lib/hanlon.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'haml'
2
+ require 'hanlon/version'
3
+ require 'hanlon/engine'
4
+ require 'hanlon/loader'
5
+
6
+ module Hanlon
7
+ end
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.setup
4
+
5
+ require 'rspec'
6
+ Dir['./spec/support/**/*.rb'].each { |f| require f }
7
+
8
+ RSpec.configure do |config|
9
+ config.color_enabled = true
10
+
11
+ config.filter_run :focus => true
12
+ config.run_all_when_everything_filtered = true
13
+ end
14
+
15
+ require 'hanlon'
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hanlon::Engine do
4
+ describe '#process' do
5
+ it 'should return a module with the defined methods' do
6
+ engine = Hanlon::Engine.new %q<
7
+ - hanlon :greeting do |name|
8
+ %p== hello #{name}.
9
+ - hanlon :headline do
10
+ %h1 Headline>
11
+
12
+ engine.module.should be_a(Module)
13
+ engine.evaluate("= greeting 'Carlos'").should == "<p>hello Carlos.</p>\n"
14
+ engine.evaluate("= headline").should == "<h1>Headline</h1>\n"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hanlon do
4
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hanlon::Loader do
4
+ describe '#add_method' do
5
+ it 'should add a method to the methods hash' do
6
+ loader = Hanlon::Loader.new
7
+ loader.add_method :headline do
8
+ 'headline'
9
+ end
10
+ loader[:headline].should be_a Proc
11
+ end
12
+ end
13
+
14
+ describe '#build' do
15
+ it 'should return a module with the defined methods' do
16
+ loader = Hanlon::Loader.new
17
+ loader.add_method :headline do
18
+ 'headline'
19
+ end
20
+ loader.add_method :paragraph do
21
+ 'bogus'
22
+ end
23
+ mod = loader.build
24
+ mod.should be_a Module
25
+ ModuleHelper = mod
26
+ class ModuleTester
27
+ include ModuleHelper
28
+ end
29
+ ModuleTester.new.paragraph.should == 'bogus'
30
+ ModuleTester.new.headline.should == 'headline'
31
+ end
32
+ end
33
+ end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hanlon
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - cohitre
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-08-07 00:00:00 -07:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rspec
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :development
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: haml
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :runtime
45
+ version_requirements: *id002
46
+ description: Use Haml to generate rails helpers.
47
+ email:
48
+ - i@cohitre.com
49
+ executables: []
50
+
51
+ extensions: []
52
+
53
+ extra_rdoc_files: []
54
+
55
+ files:
56
+ - .gitignore
57
+ - Gemfile
58
+ - Gemfile.lock
59
+ - Rakefile
60
+ - hanlon.gemspec
61
+ - lib/hanlon.rb
62
+ - lib/hanlon/engine.rb
63
+ - lib/hanlon/loader.rb
64
+ - lib/hanlon/version.rb
65
+ - spec/spec_helper.rb
66
+ - spec/unit/engine_spec.rb
67
+ - spec/unit/hanlon_spec.rb
68
+ - spec/unit/loader_spec.rb
69
+ has_rdoc: true
70
+ homepage: ""
71
+ licenses: []
72
+
73
+ post_install_message:
74
+ rdoc_options: []
75
+
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ segments:
84
+ - 0
85
+ version: "0"
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ segments:
92
+ - 0
93
+ version: "0"
94
+ requirements: []
95
+
96
+ rubyforge_project: hanlon
97
+ rubygems_version: 1.3.7
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: Define rails helpers with Haml
101
+ test_files:
102
+ - spec/spec_helper.rb
103
+ - spec/unit/engine_spec.rb
104
+ - spec/unit/hanlon_spec.rb
105
+ - spec/unit/loader_spec.rb