smtlaissezfaire-simply 0.1.1

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.
data/README ADDED
@@ -0,0 +1,4 @@
1
+
2
+ == Simply
3
+
4
+ A simple, fast replacement for markaby.
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ PROJECT_NAME = "simply"
4
+
5
+ begin
6
+ require 'jeweler'
7
+ Jeweler::Tasks.new do |s|
8
+ s.name = "#{PROJECT_NAME}"
9
+ s.summary = "TODO"
10
+ s.email = "scott@railsnewbie.com"
11
+ s.homepage = "http://github.com/smtlaissezfaire/#{PROJECT_NAME.downcase}"
12
+ s.description = "TODO"
13
+ s.authors = ["Scott Taylor"]
14
+ end
15
+ rescue LoadError
16
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
17
+ end
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 1
4
+ :patch: 1
@@ -0,0 +1,127 @@
1
+ module Simply
2
+ class HTMLBuilder
3
+ include Locals
4
+
5
+ unless defined?(SELF_CLOSING_TAGS)
6
+ SELF_CLOSING_TAGS = HTMLTags::SELF_CLOSING_TAGS
7
+ BLOCK_TAGS = HTMLTags::BLOCK_TAGS
8
+ end
9
+
10
+ def initialize(options={ }, &block)
11
+ @out = ""
12
+
13
+ if locals_hash = options[:locals]
14
+ self.locals = locals_hash
15
+ end
16
+
17
+ @indented = true if options[:indent] == true
18
+ @out.extend Indentation if indented?
19
+
20
+ instance_eval(&block) if block_given?
21
+ end
22
+
23
+ def indented?
24
+ @indented ? true : false
25
+ end
26
+
27
+ SELF_CLOSING_TAGS.each do |tag|
28
+ class_eval <<-HERE, __FILE__, __LINE__
29
+ def #{tag}(attributes={})
30
+ __self_closing_tag(:#{tag}, attributes)
31
+ end
32
+ HERE
33
+ end
34
+
35
+ BLOCK_TAGS.each do |tag|
36
+ class_eval <<-HERE, __FILE__, __LINE__
37
+ def #{tag}(*args, &block)
38
+ raise ArgumentError if !block_given? && args.empty?
39
+
40
+ if block_given? || args.first.is_a?(Hash)
41
+ options = args.first || { }
42
+ else
43
+ block = lambda { clean_text args.first.to_s }
44
+ options = args[1] || { }
45
+ end
46
+
47
+ __tag(:#{tag}, options, &block)
48
+ end
49
+ HERE
50
+ end
51
+
52
+ def xhtml_transitional
53
+ text HTMLTags::XML_ENCODING
54
+ text HTMLTags::TRANSITIONAL
55
+ end
56
+
57
+ def xhtml_strict
58
+ text HTMLTags::XML_ENCODING
59
+ text HTMLTags::STRICT
60
+ end
61
+
62
+ def xhtml_frameset
63
+ text HTMLTags::XML_ENCODING
64
+ text HTMLTags::FRAMESET
65
+ end
66
+
67
+ ####################
68
+ #
69
+ # Utilities
70
+ #
71
+ ####################
72
+
73
+ def text(out)
74
+ @out << out
75
+ end
76
+
77
+ def clean_text(out)
78
+ text html_escape(out)
79
+ end
80
+
81
+ def html_escape(out)
82
+ out.to_s.to_xs
83
+ end
84
+
85
+ def to_s
86
+ @out
87
+ end
88
+
89
+ private
90
+
91
+ def __tag(tag_name, attributes={ }, &block)
92
+ text __opening_tag(tag_name, attributes)
93
+ __eval_block(&block)
94
+ text __closing_tag(tag_name)
95
+ end
96
+
97
+ def __eval_block(&block)
98
+ @out.indent if indented?
99
+ instance_eval(&block)
100
+ @out.outdent if indented?
101
+ end
102
+
103
+ def __opening_tag(tag_name, attributes={ })
104
+ if attributes.any?
105
+ "<#{tag_name} #{__expand_attributes(attributes)}>"
106
+ else
107
+ "<#{tag_name}>"
108
+ end
109
+ end
110
+
111
+ def __closing_tag(tag_name)
112
+ "</#{tag_name}>"
113
+ end
114
+
115
+ def __self_closing_tag(tag_name, attributes={ })
116
+ if attributes.any?
117
+ text "<#{tag_name} #{__expand_attributes(attributes)} />"
118
+ else
119
+ text "<#{tag_name} />"
120
+ end
121
+ end
122
+
123
+ def __expand_attributes(attributes)
124
+ attributes.map { |key, value| "#{key}=\"#{value}\""}.join(" ")
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,126 @@
1
+ module Simply
2
+ module HTMLTags
3
+ unless defined?(XML_ENCODING)
4
+ XML_ENCODING = '<?xml version="1.0" encoding="UTF-8"?>'.freeze
5
+
6
+ STRICT = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'.freeze
7
+ TRANSITIONAL = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'.freeze
8
+ FRAMESET = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'.freeze
9
+
10
+ SELF_CLOSING_TAGS = [
11
+ :base,
12
+ :meta,
13
+ :link,
14
+ :hr,
15
+ :br,
16
+ :param,
17
+ :img,
18
+ :area,
19
+ :input,
20
+ :col,
21
+ :frame
22
+ ]
23
+
24
+ BLOCK_TAGS = [
25
+ :html,
26
+ :head,
27
+ :title,
28
+ :style,
29
+ :script,
30
+ :noscript,
31
+ :body,
32
+ :div,
33
+ :p,
34
+ :ul,
35
+ :ol,
36
+ :li,
37
+ :dl,
38
+ :dt,
39
+ :dd,
40
+ :address,
41
+ :pre,
42
+ :blockquote,
43
+ :ins,
44
+ :del,
45
+ :a,
46
+ :span,
47
+ :bdo,
48
+ :em,
49
+ :strong,
50
+ :dfn,
51
+ :code,
52
+ :samp,
53
+ :kbd,
54
+ :var,
55
+ :cite,
56
+ :abbr,
57
+ :acronym,
58
+ :q,
59
+ :sub,
60
+ :sup,
61
+ :tt,
62
+ :i,
63
+ :b,
64
+ :big,
65
+ :small,
66
+ :object,
67
+ :map,
68
+ :form,
69
+ :label,
70
+ :select,
71
+ :optgroup,
72
+ :option,
73
+ :textarea,
74
+ :fieldset,
75
+ :legend,
76
+ :button,
77
+ :table,
78
+ :caption,
79
+ :colgroup,
80
+ :thead,
81
+ :tfoot,
82
+ :tbody,
83
+ :tr,
84
+ :th,
85
+ :td,
86
+ :h1,
87
+ :h2,
88
+ :h3,
89
+ :h4,
90
+ :h5,
91
+ :h6,
92
+ :strike,
93
+ :center,
94
+ :dir,
95
+ :noframes,
96
+ :basefont,
97
+ :u,
98
+ :menu,
99
+ :iframe,
100
+ :font,
101
+ :s,
102
+ :applet,
103
+ :isindex,
104
+ :script,
105
+ :a,
106
+ :td,
107
+ :h5,
108
+ :h3,
109
+ :li,
110
+ :div,
111
+ :pre,
112
+ :body,
113
+ :ol,
114
+ :h4,
115
+ :h2,
116
+ :object,
117
+ :legend,
118
+ :dl,
119
+ :h6,
120
+ :ul,
121
+ :form,
122
+ :h1
123
+ ]
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,37 @@
1
+ module Simply
2
+ module Indentation
3
+ class IndentationError < StandardError
4
+ def message
5
+ "You can't outdent before the beginning of the page"
6
+ end
7
+ end
8
+
9
+ unless defined?(DEFAULT_INDENTATION_LEVEL)
10
+ DEFAULT_NUM_SPACES_TO_INDENT = 2
11
+ DEFAULT_INDENTATION_LEVEL = 0
12
+ end
13
+
14
+ def <<(text)
15
+ out = empty? ? "" : "\n"
16
+ out << "#{" " * indentation_level}#{text}"
17
+
18
+ super(out)
19
+ end
20
+
21
+ def indent(number_of_spaces = DEFAULT_NUM_SPACES_TO_INDENT)
22
+ @indentation_level ||= DEFAULT_INDENTATION_LEVEL
23
+ @indentation_level += number_of_spaces
24
+ end
25
+
26
+ def outdent(number_of_spaces = DEFAULT_NUM_SPACES_TO_INDENT)
27
+ @indentation_level ||= DEFAULT_INDENTATION_LEVEL
28
+ @indentation_level -= number_of_spaces
29
+ raise IndentationError if @indentation_level < 0
30
+ @indentation_level
31
+ end
32
+
33
+ def indentation_level
34
+ @indentation_level ||= DEFAULT_INDENTATION_LEVEL
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,29 @@
1
+ module Simply
2
+ module Locals
3
+ # Pass in a hash of local variables
4
+ # which will be available to the template:
5
+ #
6
+ # @builder.locals = { :foo => 1, :bar => 2, :baz => 3}
7
+ # @builder.ul do
8
+ # li foo
9
+ # li bar
10
+ # li baz
11
+ # end
12
+ #
13
+ # @builder.to_s #=> "<ul><li>1</li><li>2</li><li>3</li></ul>"
14
+ def locals=(hash={ })
15
+ def metaclass(&block)
16
+ meta = class << self; self; end
17
+ meta.instance_eval(&block)
18
+ end
19
+
20
+ hash.each do |key, value|
21
+ metaclass do
22
+ define_method key do
23
+ value
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,12 @@
1
+ module Simply
2
+ module Version
3
+ unless defined?(Simply::VERSION)
4
+ version_info = YAML.load(File.read(File.dirname(__FILE__) + "/../../VERSION.yml"))
5
+
6
+ MAJOR = version_info[:major]
7
+ MINOR = version_info[:minor]
8
+ TINY = version_info[:patch]
9
+ VERSION = "#{MAJOR}.#{MINOR}.#{TINY}"
10
+ end
11
+ end
12
+ end
data/lib/simply.rb ADDED
@@ -0,0 +1,18 @@
1
+ module Simply
2
+ dir = File.dirname(__FILE__) + "/simply"
3
+
4
+ require "#{dir}/version"
5
+ include Version
6
+
7
+ require "rubygems"
8
+ require "builder/xchar"
9
+ require "#{dir}/locals"
10
+ require "#{dir}/indentation"
11
+ require "#{dir}/html_tags"
12
+ require "#{dir}/html_builder"
13
+ end
14
+
15
+ def Simply(options={}, &block)
16
+ builder = Simply::HTMLBuilder.new(options, &block)
17
+ builder.to_s
18
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + "/../../spec_helper"
2
+
3
+ module Simply
4
+ describe HTMLBuilder, "with indentation" do
5
+ before(:each) do
6
+ @builder = HTMLBuilder.new(:indent => true)
7
+ end
8
+
9
+ it "should be indented when passed :indent => true" do
10
+ builder = HTMLBuilder.new(:indent => true)
11
+ builder.should be_indented
12
+ end
13
+
14
+ it "should not be indented when passed :indent => false" do
15
+ builder = HTMLBuilder.new(:indent => false)
16
+ builder.should_not be_indented
17
+ end
18
+
19
+ it "should not be indented by default" do
20
+ builder = HTMLBuilder.new
21
+ builder.should_not be_indented
22
+ end
23
+
24
+ it "should indent html when indented = true, and given a block structure" do
25
+ @builder.html do
26
+ body do
27
+ end
28
+ end
29
+
30
+ @builder.to_s.should == (<<-HERE).chomp
31
+ <html>
32
+ <body>
33
+ </body>
34
+ </html>
35
+ HERE
36
+ end
37
+
38
+ it "should not indent tags which are on the same block level" do
39
+ @builder.br
40
+ @builder.br
41
+ @builder.to_s.should == "<br />\n<br />"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,49 @@
1
+ require File.dirname(__FILE__) + "/../../spec_helper"
2
+
3
+ module Simply
4
+ describe HTMLBuilder, "with locals" do
5
+ before(:each) do
6
+ @builder = HTMLBuilder.new
7
+ end
8
+
9
+ it "should have access to a variables value" do
10
+ @builder.locals = { :foo => "bar" }
11
+ @builder.ul do
12
+ li foo
13
+ end
14
+
15
+ @builder.to_s.should == "<ul><li>bar</li></ul>"
16
+ end
17
+
18
+ it "should convert integer keys to strings" do
19
+ @builder.locals = { :foo => 1 }
20
+ @builder.ul do
21
+ li foo
22
+ end
23
+
24
+ @builder.to_s.should == "<ul><li>1</li></ul>"
25
+ end
26
+
27
+ it "should be able to use any number of keys" do
28
+ @builder.locals = { :foo => 1, :bar => 2, :baz => 3}
29
+ @builder.ul do
30
+ li foo
31
+ li bar
32
+ li baz
33
+ end
34
+
35
+ @builder.to_s.should == "<ul><li>1</li><li>2</li><li>3</li></ul>"
36
+ end
37
+
38
+ it "should take locals in the constructor" do
39
+ builder = HTMLBuilder.new(:locals => { :foo => "bar", :bar => "baz" }) do
40
+ ul do
41
+ li foo
42
+ li bar
43
+ end
44
+ end
45
+
46
+ builder.to_s.should == "<ul><li>bar</li><li>baz</li></ul>"
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,136 @@
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+
3
+ module Simply
4
+ describe HTMLBuilder do
5
+ before(:each) do
6
+ @builder = HTMLBuilder.new
7
+ end
8
+
9
+ it "should create a self-closing hr tag" do
10
+ @builder.br
11
+ @builder.to_s.should == "<br />"
12
+ end
13
+
14
+ it "should create a self closing hr tag" do
15
+ @builder.hr
16
+ @builder.to_s.should == "<hr />"
17
+ end
18
+
19
+ it "should create two self-closing tags" do
20
+ @builder.br
21
+ @builder.hr
22
+ @builder.to_s.should == "<br /><hr />"
23
+ end
24
+
25
+ it "should output text directly with the text method" do
26
+ @builder.text "foo"
27
+ @builder.to_s.should == "foo"
28
+ end
29
+
30
+ it "should have a paragraph tag" do
31
+ @builder.p "foo"
32
+ @builder.to_s.should == "<p>foo</p>"
33
+ end
34
+
35
+ it "should contain the text inside the paragraph tags" do
36
+ @builder.p "bar baz"
37
+ @builder.to_s.should == "<p>bar baz</p>"
38
+ end
39
+
40
+ it "should take options with a string given" do
41
+ @builder.p "bar baz", :class => :something
42
+
43
+ @builder.to_s.should == "<p class=\"something\">bar baz</p>"
44
+ end
45
+
46
+ it "should have a paragraph tag which takes a block" do
47
+ @builder.p do
48
+ text "foo"
49
+ end
50
+
51
+ @builder.to_s.should == "<p>foo</p>"
52
+ end
53
+
54
+ Simply::HTMLBuilder::SELF_CLOSING_TAGS.each do |tag|
55
+ it "should have the tag #{tag}" do
56
+ @builder.send(tag)
57
+ @builder.to_s.should == "<#{tag} />"
58
+ end
59
+ end
60
+
61
+ it "should set options given to a self-closing tag" do
62
+ @builder.img :src => "foo"
63
+ @builder.to_s.should == "<img src=\"foo\" />"
64
+ end
65
+
66
+ it "should set two options to a self-closing tag" do
67
+ @builder.img :src => "foo", :alt => :some_text
68
+ out = @builder.to_s
69
+ out.should =~ /<img.*alt=\"some_text\".*\/>/
70
+ out.should =~ /<img.*src=\"foo\".*\/>/
71
+ end
72
+
73
+ it "should set options on a non-self closing tag (like a p)" do
74
+ @builder.p :class => :foo, :name => :something do
75
+ text "foo"
76
+ end
77
+
78
+ @builder.to_s.should == '<p class="foo" name="something">foo</p>'
79
+ end
80
+
81
+ Simply::HTMLBuilder::BLOCK_TAGS.each do |tag|
82
+ it "should have the #{tag} tag" do
83
+ @builder.send(tag, "foo")
84
+ @builder.to_s.should == "<#{tag}>foo</#{tag}>"
85
+ end
86
+
87
+ it "should contain the text inside the #{tag} tags" do
88
+ @builder.send(tag, "bar baz")
89
+ @builder.to_s.should == "<#{tag}>bar baz</#{tag}>"
90
+ end
91
+
92
+ it "should take options with a string given" do
93
+ @builder.send(tag, "bar baz", :class => :something)
94
+
95
+ @builder.to_s.should == "<#{tag} class=\"something\">bar baz</#{tag}>"
96
+ end
97
+
98
+ it "should have a paragraph tag which takes a block" do
99
+ @builder.send(tag) do
100
+ text "foo"
101
+ end
102
+
103
+ @builder.to_s.should == "<#{tag}>foo</#{tag}>"
104
+ end
105
+ end
106
+
107
+ it "should raise an argument error when calling a closing tag with no options" do
108
+ lambda {
109
+ @builder.p
110
+ }.should raise_error(ArgumentError)
111
+ end
112
+
113
+ it "should escape special html values" do
114
+ @builder.h1 'Apples & Oranges'
115
+ @builder.to_s.should == "<h1>Apples &amp; Oranges</h1>"
116
+ end
117
+
118
+ it "should be able to generate the xhtml-transitional dtd declaration" do
119
+ @builder.xhtml_transitional
120
+ @builder.to_s.should include('<?xml version="1.0" encoding="UTF-8"?>')
121
+ @builder.to_s.should include('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">')
122
+ end
123
+
124
+ it "should be able to generate the xhtml strict declaration" do
125
+ @builder.xhtml_strict
126
+ @builder.to_s.should include('<?xml version="1.0" encoding="UTF-8"?>')
127
+ @builder.to_s.should include('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">')
128
+ end
129
+
130
+ it "should be able to generate the xhtml frameset" do
131
+ @builder.xhtml_frameset
132
+ @builder.to_s.should include('<?xml version="1.0" encoding="UTF-8"?>')
133
+ @builder.to_s.should include('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">')
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,72 @@
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+
3
+ module Simply
4
+ describe Indentation do
5
+ before(:each) do
6
+ @stream = ""
7
+ @stream.extend Indentation
8
+ end
9
+
10
+ it "should be able to add text to the buffer" do
11
+ @stream << "foo"
12
+ @stream.should == "foo"
13
+ end
14
+
15
+ it "should indent by two after a call to indent" do
16
+ @stream.indent
17
+ @stream << "foo"
18
+ @stream.should == " foo"
19
+ end
20
+
21
+ it "should indent multiple calls, each on new lines" do
22
+ @stream.indent
23
+ @stream << "foo"
24
+ @stream << "bar"
25
+ @stream.should == " foo\n bar"
26
+ end
27
+
28
+ it "should indent by 4, when passed 4 explicitly" do
29
+ @stream.indent(4)
30
+ @stream << "foo"
31
+ @stream.should == " foo"
32
+ end
33
+
34
+ it "should nest indentation" do
35
+ @stream << "foo do"
36
+ @stream.indent
37
+ @stream << "something do"
38
+ @stream.indent
39
+ @stream << "bar do"
40
+
41
+ @stream.should == "foo do\n something do\n bar do"
42
+ end
43
+
44
+ it "should outdent" do
45
+ @stream.indent
46
+ @stream.outdent
47
+ @stream << "foo"
48
+ @stream.should == "foo"
49
+ end
50
+
51
+ it "should outdent by the number of spaces given" do
52
+ @stream.indent(2)
53
+ @stream.indent(2)
54
+ @stream.outdent(4)
55
+ @stream << "foo"
56
+ @stream.should == "foo"
57
+ end
58
+
59
+ it "should raise an error if outdenting too far" do
60
+ @stream.indent(2)
61
+ lambda {
62
+ @stream.outdent(4)
63
+ }.should raise_error(Indentation::IndentationError, "You can't outdent before the beginning of the page")
64
+ end
65
+
66
+ it "should raise an indentation error if the page hasn't yet been indented" do
67
+ lambda {
68
+ @stream.outdent
69
+ }.should raise_error(Indentation::IndentationError)
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,45 @@
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+
3
+ describe Simply, "the method" do
4
+ it "should take a block" do
5
+ Simply do
6
+
7
+ end
8
+ end
9
+
10
+ it "should produce html with the block" do
11
+ s = Simply do
12
+ br
13
+ end
14
+
15
+ s.should == "<br />"
16
+ end
17
+
18
+ it "should pass locals in" do
19
+ s = Simply :locals => {:foo => "foo"} do
20
+ text foo
21
+ end
22
+
23
+ s.should == "foo"
24
+ end
25
+
26
+ it "should pass indentation in" do
27
+ s = Simply :indent => true do
28
+ html do
29
+ body do
30
+ p "foo"
31
+ end
32
+ end
33
+ end
34
+
35
+ s.should == (<<-HERE).chomp
36
+ <html>
37
+ <body>
38
+ <p>
39
+ foo
40
+ </p>
41
+ </body>
42
+ </html>
43
+ HERE
44
+ end
45
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+
3
+ describe Simply, "'s Version" do
4
+ it "should be at 0.1.1" do
5
+ Simply::VERSION.should == "0.1.1"
6
+ end
7
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,3 @@
1
+
2
+ --color
3
+ --diff
@@ -0,0 +1,5 @@
1
+
2
+ require "rubygems"
3
+ require "spec"
4
+
5
+ require File.dirname(__FILE__) + "/../lib/simply"
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smtlaissezfaire-simply
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Scott Taylor
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-07 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: TODO
17
+ email: scott@railsnewbie.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ files:
25
+ - Rakefile
26
+ - VERSION.yml
27
+ - lib/simply.rb
28
+ - lib/simply/html_builder.rb
29
+ - lib/simply/html_tags.rb
30
+ - lib/simply/indentation.rb
31
+ - lib/simply/locals.rb
32
+ - lib/simply/version.rb
33
+ - spec/simply/html_builder/indentation_spec.rb
34
+ - spec/simply/html_builder/locals_spec.rb
35
+ - spec/simply/html_builder_spec.rb
36
+ - spec/simply/indentation_spec.rb
37
+ - spec/simply/simply_spec.rb
38
+ - spec/simply/version_spec.rb
39
+ - spec/spec.opts
40
+ - spec/spec_helper.rb
41
+ - README
42
+ has_rdoc: true
43
+ homepage: http://github.com/smtlaissezfaire/simply
44
+ post_install_message:
45
+ rdoc_options:
46
+ - --charset=UTF-8
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: "0"
60
+ version:
61
+ requirements: []
62
+
63
+ rubyforge_project:
64
+ rubygems_version: 1.2.0
65
+ signing_key:
66
+ specification_version: 2
67
+ summary: TODO
68
+ test_files:
69
+ - spec/simply/html_builder/indentation_spec.rb
70
+ - spec/simply/html_builder/locals_spec.rb
71
+ - spec/simply/html_builder_spec.rb
72
+ - spec/simply/indentation_spec.rb
73
+ - spec/simply/simply_spec.rb
74
+ - spec/simply/version_spec.rb
75
+ - spec/spec_helper.rb