sinatra-erbjoiner 1.0.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.
Files changed (2) hide show
  1. data/lib/sinatra-erbjoiner.rb +79 -0
  2. metadata +60 -0
@@ -0,0 +1,79 @@
1
+ require 'sinatra'
2
+
3
+ # Gets the content of a file from its filepath.
4
+ def filecontent filepath
5
+ content=''
6
+ File.open(filepath).each_line {|line| content<<line }
7
+ content
8
+ end
9
+
10
+ # Gets the content of an erb file from its name (by string or symbol) in the views folder.
11
+ def erbcontent name
12
+ filecontent "views/#{name.to_s}.erb"
13
+ end
14
+
15
+ # Creates an HTML document from a head and a body; simplifies html doc creation.
16
+ def toHTML head='', body=''
17
+ "<HTML>\n<HEAD>\n\t#{head}\n</HEAD>\n<BODY>\n\t#{body}\n</BODY>\n</HTML>"
18
+ end
19
+
20
+ # Allows you to erb an html document created from a head and a body, erb-content allowed.
21
+ # Automatically erbs.
22
+ def erbHTML head='', body=''
23
+ erb toHTML head, body
24
+ end
25
+
26
+ # Joins *views into one erb and returns the content of that.
27
+ # Can be used in documents to simplify them.
28
+ #
29
+ # This is extremely handy, for example, in HTML:
30
+ # <p>Content</p>
31
+ # <!-- Insert Login Form here from login.erb if not logged in -->
32
+ # <%= joinERBs :login unless @user %>
33
+ # <!-- Code to insert to all -->
34
+ # <%= joinERBs :header, :content_area, :footer %>
35
+ #
36
+ # This allows for increased flexibility and less code maintainence, allowing you to
37
+ # create a re-usable live template file to use wherever you want without a lot
38
+ # of copy-pasting -- you don't need to because it's done automatically.
39
+ def joinERBs *views
40
+ joint=''
41
+ views.each {|v| joint += erbcontent v }
42
+ joint
43
+ end
44
+
45
+ # Joins *views with joinERBs and formats them with head into an html document.
46
+ # Then, displays the generated document.
47
+ # @param head - The head of the document; can call htitle("TITLE") to generate a title tag
48
+ # @param *views - The symbols or strings representing the erb views
49
+ def erbjoin head='', *views
50
+ erbHTML head, joinERBs(*views)
51
+ end
52
+
53
+ # Represents a title tag in html
54
+ # @param title - The title in the content of the tag.
55
+ def htitle title
56
+ htag :title, title
57
+ end
58
+
59
+ # Represents an html tag.\
60
+ # @param tag - The type of tag; String or Symbol.
61
+ # @param content= - The content in the tag. <TAG_TYPE>content</TAG_TYPE>
62
+ # @param *params - The parameters in the tag. <TAG_TYPE *params></TAG_TYPE>
63
+ def htag tag, content='', *params
64
+ "<#{tag.to_s} #{compact(params)}>\n\t#{content}</#{tag.to_s}>"
65
+ end
66
+
67
+ #Compacts an array into one string (non-recursively; only 1 dimensional arrays)
68
+ #each element seperated by a single space
69
+ def compact arr
70
+ str = ''
71
+ arr.each {|e| str+=e.to_s<<' '}
72
+ str
73
+ end
74
+
75
+ =begin
76
+ def fixindentation jointerb
77
+ jointerb.to_s.index /<[(html)(HTML)]>/
78
+ end
79
+ =end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sinatra-erbjoiner
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Christian Tschoepe
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sinatra
16
+ requirement: &16877820 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.4.3
22
+ - - ! '>='
23
+ - !ruby/object:Gem::Version
24
+ version: '1.4'
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: *16877820
28
+ description: sinatra_erb_joiner allows you to join multiple erbs into an html document,
29
+ as well as to implement live template functionality with erbs.
30
+ email: christian.tschoepe@rackspace.com
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - ./lib/sinatra-erbjoiner.rb
36
+ homepage: http://rubygems.org/gems/namehere
37
+ licenses: []
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.9.2
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 1.8.11
57
+ signing_key:
58
+ specification_version: 3
59
+ summary: sinatra_erb_joiner allows you to join multiple erbs into an html document
60
+ test_files: []