waves 0.7.5 → 0.7.6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/waves +0 -0
- data/bin/waves-console +0 -0
- data/bin/waves-server +0 -0
- data/lib/controllers/mixin.rb +18 -12
- data/lib/helpers/asset_helper.rb +67 -0
- data/lib/helpers/number_helper.rb +25 -0
- data/lib/helpers/tag_helper.rb +58 -0
- data/lib/helpers/url_helper.rb +77 -0
- data/lib/layers/orm/active_record.rb +41 -41
- data/lib/renderers/erubis.rb +4 -4
- data/lib/runtime/application.rb +1 -1
- data/lib/runtime/logger.rb +1 -0
- data/lib/runtime/server.rb +6 -1
- data/lib/utilities/hash.rb +25 -16
- data/lib/utilities/inflect.rb +0 -2
- data/lib/utilities/string.rb +58 -44
- data/lib/waves.rb +4 -0
- metadata +30 -4
data/bin/waves
CHANGED
File without changes
|
data/bin/waves-console
CHANGED
File without changes
|
data/bin/waves-server
CHANGED
File without changes
|
data/lib/controllers/mixin.rb
CHANGED
@@ -131,24 +131,30 @@ module Waves
|
|
131
131
|
|
132
132
|
private
|
133
133
|
|
134
|
-
def destructure(hash)
|
135
|
-
|
136
|
-
hash.keys.map{ |key|key.split('.') }.each do |keys|
|
137
|
-
destructure_with_array_keys(hash,'',keys,
|
134
|
+
def destructure( hash )
|
135
|
+
destructured = {}
|
136
|
+
hash.keys.map { |key| key.split('.') }.each do |keys|
|
137
|
+
destructure_with_array_keys(hash, '', keys, destructured)
|
138
138
|
end
|
139
|
-
|
139
|
+
destructured
|
140
140
|
end
|
141
141
|
|
142
|
-
def destructure_with_array_keys(hash,prefix,keys,
|
142
|
+
def destructure_with_array_keys( hash, prefix, keys, destructured )
|
143
143
|
if keys.length == 1
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
when
|
144
|
+
key = "#{prefix}#{keys.first}"
|
145
|
+
val = hash[key]
|
146
|
+
destructured[keys.first.intern] = case val
|
147
|
+
when String
|
148
|
+
val.strip
|
149
|
+
when Hash
|
150
|
+
val
|
151
|
+
when nil
|
152
|
+
raise key.inspect
|
148
153
|
end
|
149
154
|
else
|
150
|
-
|
151
|
-
|
155
|
+
destructured = ( destructured[keys.first.intern] ||= {} )
|
156
|
+
new_prefix = "#{prefix}#{keys.shift}."
|
157
|
+
destructure_with_array_keys( hash, new_prefix, keys, destructured )
|
152
158
|
end
|
153
159
|
end
|
154
160
|
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Waves
|
2
|
+
module Helpers
|
3
|
+
module AssetHelper
|
4
|
+
# Returns an html image tag for the +source+. The +source+ can be a full
|
5
|
+
# path or a file that exists in your public images directory. Note that
|
6
|
+
# specifying a filename without the extension is now deprecated in Rails.
|
7
|
+
# You can add html attributes using the +options+. The +options+ supports
|
8
|
+
# two additional keys for convienence and conformance:
|
9
|
+
#
|
10
|
+
# * <tt>:alt</tt> - If no alt text is given, the file name part of the
|
11
|
+
# +source+ is used (capitalized and without the extension)
|
12
|
+
# * <tt>:size</tt> - Supplied as "{Width}x{Height}", so "30x45" becomes
|
13
|
+
# width="30" and height="45". <tt>:size</tt> will be ignored if the
|
14
|
+
# value is not in the correct format.
|
15
|
+
#
|
16
|
+
# image_tag("icon.png") # =>
|
17
|
+
# <img src="/images/icon.png" alt="Icon" />
|
18
|
+
# image_tag("icon.png", :size => "16x10", :alt => "Edit Entry") # =>
|
19
|
+
# <img src="/images/icon.png" width="16" height="10" alt="Edit Entry" />
|
20
|
+
# image_tag("/icons/icon.gif", :size => "16x16") # =>
|
21
|
+
# <img src="/icons/icon.gif" width="16" height="16" alt="Icon" />
|
22
|
+
def image_tag(source, options = {})
|
23
|
+
options.symbolize_keys!
|
24
|
+
|
25
|
+
options[:src] = image_path(source)
|
26
|
+
options[:alt] ||= File.basename(options[:src], '.*').split('.').first.capitalize
|
27
|
+
|
28
|
+
if options[:size]
|
29
|
+
options[:width], options[:height] = options[:size].split("x") if options[:size] =~ %r{^\d+x\d+$}
|
30
|
+
options.delete(:size)
|
31
|
+
end
|
32
|
+
|
33
|
+
tag("img", options)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Computes the path to an image asset in the public images directory.
|
37
|
+
# Full paths from the document root will be passed through.
|
38
|
+
# Used internally by image_tag to build the image path. Passing
|
39
|
+
# a filename without an extension is deprecated.
|
40
|
+
#
|
41
|
+
# image_path("edit.png") # => /images/edit.png
|
42
|
+
# image_path("icons/edit.png") # => /images/icons/edit.png
|
43
|
+
# image_path("/icons/edit.png") # => /icons/edit.png
|
44
|
+
def image_path(source)
|
45
|
+
compute_public_path(source, 'images', 'png')
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
def compute_public_path(source, dir, ext)
|
50
|
+
source = source.dup
|
51
|
+
source << ".#{ext}" if File.extname(source).blank?
|
52
|
+
unless source =~ %r{^[-a-z]+://}
|
53
|
+
source = "/#{dir}/#{source}" unless source[0] == ?/
|
54
|
+
asset_id = rails_asset_id(source)
|
55
|
+
source << '?' + asset_id if defined?(RAILS_ROOT) && !asset_id.blank?
|
56
|
+
# source = "#{ActionController::Base.asset_host}#{@controller.request.relative_url_root}#{source}"
|
57
|
+
end
|
58
|
+
source
|
59
|
+
end
|
60
|
+
|
61
|
+
def rails_asset_id(source)
|
62
|
+
ENV["WAVES_ASSET_ID"] || File.mtime("public/#{source}").to_i.to_s rescue ""
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Waves
|
2
|
+
module Helpers
|
3
|
+
module NumberHelper
|
4
|
+
|
5
|
+
# Formats a +number+ with grouped thousands using +delimiter+. You
|
6
|
+
# can customize the format in the +options+ hash.
|
7
|
+
# * <tt>:delimiter</tt> - Sets the thousands delimiter, defaults to ","
|
8
|
+
# * <tt>:separator</tt> - Sets the separator between the units, defaults to "."
|
9
|
+
#
|
10
|
+
# number_with_delimiter(12345678) => 12,345,678
|
11
|
+
# number_with_delimiter(12345678.05) => 12,345,678.05
|
12
|
+
# number_with_delimiter(12345678, :delimiter => ".") => 12.345.678
|
13
|
+
def number_with_delimiter(number, delimiter=",", separator=".")
|
14
|
+
begin
|
15
|
+
parts = number.to_s.split(separator)
|
16
|
+
parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
|
17
|
+
parts.join separator
|
18
|
+
rescue
|
19
|
+
number
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Waves
|
2
|
+
module Helpers
|
3
|
+
module TagHelper
|
4
|
+
|
5
|
+
ESCAPE_TABLE = { '&'=>'&', '<'=>'<', '>'=>'>', '"'=>'"', "'"=>''', }
|
6
|
+
def h(value)
|
7
|
+
value.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] }
|
8
|
+
end
|
9
|
+
|
10
|
+
# Returns an empty HTML tag of type +name+ which by default is XHTML
|
11
|
+
# compliant. Setting +open+ to true will create an open tag compatible
|
12
|
+
# with HTML 4.0 and below. Add HTML attributes by passing an attributes
|
13
|
+
# hash to +options+. For attributes with no value like (disabled and
|
14
|
+
# readonly), give it a value of true in the +options+ hash. You can use
|
15
|
+
# symbols or strings for the attribute names.
|
16
|
+
#
|
17
|
+
# tag("br")
|
18
|
+
# # => <br />
|
19
|
+
# tag("br", nil, true)
|
20
|
+
# # => <br>
|
21
|
+
# tag("input", { :type => 'text', :disabled => true })
|
22
|
+
# # => <input type="text" disabled="disabled" />
|
23
|
+
def tag(name, options = nil, open = false)
|
24
|
+
"<#{name}#{tag_options(options) if options}" + (open ? ">" : " />")
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns the escaped +html+ without affecting existing escaped entities.
|
28
|
+
#
|
29
|
+
# escape_once("1 > 2 & 3")
|
30
|
+
# # => "1 < 2 & 3"
|
31
|
+
def escape_once(html)
|
32
|
+
fix_double_escape(h(html.to_s))
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def tag_options(options)
|
38
|
+
cleaned_options = convert_booleans(options.stringify_keys.reject {|key, value| value.nil?})
|
39
|
+
' ' + cleaned_options.map {|key, value| %(#{key}="#{escape_once(value)}")}.sort * ' ' unless cleaned_options.empty?
|
40
|
+
end
|
41
|
+
|
42
|
+
def convert_booleans(options)
|
43
|
+
%w( disabled readonly multiple ).each { |a| boolean_attribute(options, a) }
|
44
|
+
options
|
45
|
+
end
|
46
|
+
|
47
|
+
def boolean_attribute(options, attribute)
|
48
|
+
options[attribute] ? options[attribute] = attribute : options.delete(attribute)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Fix double-escaped entities, such as &amp;, &#123;, etc.
|
52
|
+
def fix_double_escape(escaped)
|
53
|
+
escaped.gsub(/&([a-z]+|(#\d+));/i) { "&#{$1};" }
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module Waves
|
2
|
+
module Helpers
|
3
|
+
module UrlHelper
|
4
|
+
|
5
|
+
# Returns the URL for the set of +options+ provided. This takes the
|
6
|
+
# same options as url_for in action controller. For a list, see the
|
7
|
+
# documentation for ActionController::Base#url_for. Note that it'll
|
8
|
+
# set :only_path => true so you'll get the relative /controller/action
|
9
|
+
# instead of the fully qualified http://example.com/controller/action.
|
10
|
+
#
|
11
|
+
# When called from a view, url_for returns an HTML escaped url. If you
|
12
|
+
# need an unescaped url, pass :escape => false in the +options+.
|
13
|
+
def url_for(options = {}, *parameters_for_method_reference)
|
14
|
+
if options.kind_of? Hash
|
15
|
+
options = { :only_path => true }.update(options.symbolize_keys)
|
16
|
+
escape = options.key?(:escape) ? options.delete(:escape) : true
|
17
|
+
else
|
18
|
+
escape = true
|
19
|
+
end
|
20
|
+
|
21
|
+
url = options[:url] #@controller.send(:url_for, options, *parameters_for_method_reference)
|
22
|
+
escape ? html_escape(url) : url
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
# Creates a link tag of the given +name+ using a URL created by the set
|
27
|
+
# of +options+. See the valid options in the documentation for
|
28
|
+
# ActionController::Base#url_for. It's also possible to pass a string instead
|
29
|
+
# of an options hash to get a link tag that uses the value of the string as the
|
30
|
+
# href for the link. If nil is passed as a name, the link itself will become
|
31
|
+
# the name.
|
32
|
+
#
|
33
|
+
# The +html_options+ will accept a hash of html attributes for the link tag.
|
34
|
+
# It also accepts 3 modifiers that specialize the link behavior.
|
35
|
+
#
|
36
|
+
# * <tt>:confirm => 'question?'</tt>: This will add a JavaScript confirm
|
37
|
+
# prompt with the question specified. If the user accepts, the link is
|
38
|
+
# processed normally, otherwise no action is taken.
|
39
|
+
# * <tt>:popup => true || array of window options</tt>: This will force the
|
40
|
+
# link to open in a popup window. By passing true, a default browser window
|
41
|
+
# will be opened with the URL. You can also specify an array of options
|
42
|
+
# that are passed-thru to JavaScripts window.open method.
|
43
|
+
# * <tt>:method => symbol of HTTP verb</tt>: This modifier will dynamically
|
44
|
+
# create an HTML form and immediately submit the form for processing using
|
45
|
+
# the HTTP verb specified. Useful for having links perform a POST operation
|
46
|
+
# in dangerous actions like deleting a record (which search bots can follow
|
47
|
+
# while spidering your site). Supported verbs are :post, :delete and :put.
|
48
|
+
# Note that if the user has JavaScript disabled, the request will fall back
|
49
|
+
# to using GET. If you are relying on the POST behavior, your should check
|
50
|
+
# for it in your controllers action by using the request objects methods
|
51
|
+
# for post?, delete? or put?.
|
52
|
+
#
|
53
|
+
# You can mix and match the +html_options+ with the exception of
|
54
|
+
# :popup and :method which will raise an ActionView::ActionViewError
|
55
|
+
# exception.
|
56
|
+
#
|
57
|
+
# link_to "Visit Other Site", "http://www.rubyonrails.org/", :confirm => "Are you sure?"
|
58
|
+
# link_to "Help", { :action => "help" }, :popup => true
|
59
|
+
# link_to "View Image", { :action => "view" }, :popup => ['new_window_name', 'height=300,width=600']
|
60
|
+
# link_to "Delete Image", { :action => "delete", :id => @image.id }, :confirm => "Are you sure?", :method => :delete
|
61
|
+
def link_to(name, options = {}, html_options = nil, *parameters_for_method_reference)
|
62
|
+
if html_options
|
63
|
+
html_options = html_options.stringify_keys
|
64
|
+
# convert_options_to_javascript!(html_options)
|
65
|
+
tag_options = tag_options(html_options)
|
66
|
+
else
|
67
|
+
tag_options = nil
|
68
|
+
end
|
69
|
+
|
70
|
+
url = options.is_a?(String) ? options : self.url_for(options, *parameters_for_method_reference)
|
71
|
+
"<a href=\"#{url}\"#{tag_options}>#{name || url}</a>"
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -1,41 +1,41 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
1
|
+
class Symbol
|
2
|
+
# Protect ActiveRecord from itself by undefining the to_proc method.
|
3
|
+
# Don't worry, AR will redefine it.
|
4
|
+
alias :extensions_to_proc :to_proc
|
5
|
+
remove_method :to_proc
|
6
|
+
end
|
7
|
+
require 'active_record'
|
8
|
+
|
9
|
+
if defined?(Rake)
|
10
|
+
require File.dirname(__FILE__) / :active_record / :tasks / :schema
|
11
|
+
end
|
12
|
+
|
13
|
+
module Waves
|
14
|
+
module Orm
|
15
|
+
|
16
|
+
Model = ::ActiveRecord::Base
|
17
|
+
|
18
|
+
module ActiveRecord
|
19
|
+
|
20
|
+
def active_record
|
21
|
+
unless @active_record
|
22
|
+
::ActiveRecord::Base.establish_connection(config.database)
|
23
|
+
@active_record = ::ActiveRecord::Base.connection
|
24
|
+
end
|
25
|
+
@active_record
|
26
|
+
end
|
27
|
+
|
28
|
+
def database
|
29
|
+
@database ||= active_record
|
30
|
+
end
|
31
|
+
|
32
|
+
def model_config(context, name)
|
33
|
+
active_record
|
34
|
+
context.set_table_name(name)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
::Application.extend(Waves::Orm::ActiveRecord)
|
data/lib/renderers/erubis.rb
CHANGED
@@ -5,10 +5,10 @@ module Erubis # :nodoc:
|
|
5
5
|
# This is added to the Erubis Content class to allow the same helper methods
|
6
6
|
# to be used with both Markaby and Erubis.
|
7
7
|
class Context
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
include Waves::Helpers::UrlHelper
|
9
|
+
include Waves::Helpers::TagHelper
|
10
|
+
include Waves::Helpers::AssetHelper
|
11
|
+
include Waves::Helpers::NumberHelper
|
12
12
|
|
13
13
|
def <<(s)
|
14
14
|
eval("_buf", @binding).concat s # add to rendered output
|
data/lib/runtime/application.rb
CHANGED
data/lib/runtime/logger.rb
CHANGED
data/lib/runtime/server.rb
CHANGED
@@ -38,6 +38,11 @@ module Waves
|
|
38
38
|
File.write( :log / "#{port}.pid", $$ )
|
39
39
|
end
|
40
40
|
|
41
|
+
def trap(signal)
|
42
|
+
Kernel::trap(signal) { yield }
|
43
|
+
Thread.new { loop {sleep 1} } if RUBY_PLATFORM =~ /mswin32/
|
44
|
+
end
|
45
|
+
|
41
46
|
# Start and / or access the Waves::Logger instance.
|
42
47
|
def log
|
43
48
|
@log ||= Waves::Logger.start
|
@@ -51,7 +56,7 @@ module Waves
|
|
51
56
|
handler, options = config.handler
|
52
57
|
handler.run( config.application.to_app, options ) do |server|
|
53
58
|
@server = server
|
54
|
-
trap('INT') { puts; stop } if @server.respond_to? :stop
|
59
|
+
self.trap('INT') { puts; stop } if @server.respond_to? :stop
|
55
60
|
end
|
56
61
|
end
|
57
62
|
|
data/lib/utilities/hash.rb
CHANGED
@@ -1,22 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
module Waves
|
2
|
+
module Utilities # :nodoc:
|
3
|
+
|
4
|
+
# Utility methods mixed into Hash.
|
5
|
+
module Hash
|
6
|
+
|
7
|
+
# Return a copy of the hash where all keys have been converted to strings.
|
8
|
+
def stringify_keys
|
9
|
+
inject({}) do |options, (key, value)|
|
10
|
+
options[key.to_s] = value
|
11
|
+
options
|
12
|
+
end
|
13
|
+
end
|
9
14
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
15
|
+
# Destructively convert all keys to symbols.
|
16
|
+
def symbolize_keys!
|
17
|
+
keys.each do |key|
|
18
|
+
unless key.is_a?(Symbol)
|
19
|
+
self[key.to_sym] = self[key]
|
20
|
+
delete(key)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
self
|
16
24
|
end
|
17
25
|
end
|
18
|
-
self
|
19
26
|
end
|
27
|
+
end
|
20
28
|
|
21
|
-
|
29
|
+
class Hash # :nodoc:
|
30
|
+
include Waves::Utilities::Hash
|
22
31
|
end
|
data/lib/utilities/inflect.rb
CHANGED
data/lib/utilities/string.rb
CHANGED
@@ -1,47 +1,61 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
1
|
+
module Waves
|
2
|
+
module Utilities
|
3
|
+
|
4
|
+
# Utility methods mixed into String.
|
5
|
+
|
6
|
+
module String
|
7
|
+
|
8
|
+
# Syntactic sugar for using File.join to concatenate the argument to the receiver.
|
9
|
+
#
|
10
|
+
# require "lib" / "utilities" / "string"
|
11
|
+
#
|
12
|
+
# The idea is not original, but we can't remember where we first saw it.
|
13
|
+
#
|
14
|
+
# Waves::Utilities::Symbol defines the same method, allowing for :files / 'afilename.txt'
|
15
|
+
|
16
|
+
def / ( string )
|
17
|
+
File.join(self,string.to_s)
|
18
|
+
end
|
19
|
+
|
20
|
+
def singular
|
21
|
+
Inflect::English.singular(self)
|
22
|
+
end
|
23
|
+
|
24
|
+
alias_method(:singularize, :singular)
|
25
|
+
|
26
|
+
def plural
|
27
|
+
Inflect::English.plural(self)
|
28
|
+
end
|
29
|
+
|
30
|
+
alias_method(:pluralize, :plural)
|
31
|
+
|
32
|
+
# produces stringsLikeThis
|
33
|
+
def lower_camel_case
|
34
|
+
gsub(/(_)(\w)/) { $2.upcase }
|
35
|
+
end
|
36
|
+
|
37
|
+
# produces StringsLikeThis
|
38
|
+
def camel_case
|
39
|
+
lower_camel_case.gsub(/^([a-z])/) { $1.upcase }
|
40
|
+
end
|
41
|
+
|
42
|
+
# produces strings_like_this
|
43
|
+
def snake_case
|
44
|
+
gsub(/\s+/,'').gsub(/([a-z\d])([A-Z])/){ "#{$1}_#{$2}"}.tr("-", "_").downcase
|
45
|
+
end
|
46
|
+
|
47
|
+
def title_case
|
48
|
+
gsub(/(^|\s)\s*([a-z])/) { $1 + $2.upcase }
|
49
|
+
end
|
50
|
+
|
51
|
+
def text
|
52
|
+
gsub(/[\_\-\.\:]/,' ')
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
45
56
|
end
|
57
|
+
end
|
46
58
|
|
59
|
+
class ::String # :nodoc:
|
60
|
+
include Waves::Utilities::String
|
47
61
|
end
|
data/lib/waves.rb
CHANGED
@@ -58,12 +58,16 @@ require 'controllers/mixin'
|
|
58
58
|
require 'controllers/base'
|
59
59
|
require 'views/mixin'
|
60
60
|
require 'views/base'
|
61
|
+
require 'helpers/tag_helper'
|
62
|
+
require 'helpers/url_helper'
|
61
63
|
require 'helpers/common'
|
62
64
|
require 'helpers/form'
|
63
65
|
require 'helpers/formatting'
|
64
66
|
require 'helpers/model'
|
65
67
|
require 'helpers/view'
|
66
68
|
require 'helpers/default'
|
69
|
+
require 'helpers/asset_helper'
|
70
|
+
require 'helpers/number_helper'
|
67
71
|
require 'renderers/mixin'
|
68
72
|
require 'renderers/erubis'
|
69
73
|
require 'renderers/markaby'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: waves
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Yoder
|
@@ -9,11 +9,12 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-06-
|
12
|
+
date: 2008-06-25 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: mongrel
|
17
|
+
type: :runtime
|
17
18
|
version_requirement:
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|
@@ -23,6 +24,7 @@ dependencies:
|
|
23
24
|
version:
|
24
25
|
- !ruby/object:Gem::Dependency
|
25
26
|
name: rack
|
27
|
+
type: :runtime
|
26
28
|
version_requirement:
|
27
29
|
version_requirements: !ruby/object:Gem::Requirement
|
28
30
|
requirements:
|
@@ -32,6 +34,7 @@ dependencies:
|
|
32
34
|
version:
|
33
35
|
- !ruby/object:Gem::Dependency
|
34
36
|
name: markaby
|
37
|
+
type: :runtime
|
35
38
|
version_requirement:
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
@@ -41,6 +44,7 @@ dependencies:
|
|
41
44
|
version:
|
42
45
|
- !ruby/object:Gem::Dependency
|
43
46
|
name: erubis
|
47
|
+
type: :runtime
|
44
48
|
version_requirement:
|
45
49
|
version_requirements: !ruby/object:Gem::Requirement
|
46
50
|
requirements:
|
@@ -50,6 +54,7 @@ dependencies:
|
|
50
54
|
version:
|
51
55
|
- !ruby/object:Gem::Dependency
|
52
56
|
name: RedCloth
|
57
|
+
type: :runtime
|
53
58
|
version_requirement:
|
54
59
|
version_requirements: !ruby/object:Gem::Requirement
|
55
60
|
requirements:
|
@@ -58,7 +63,8 @@ dependencies:
|
|
58
63
|
version: "0"
|
59
64
|
version:
|
60
65
|
- !ruby/object:Gem::Dependency
|
61
|
-
name:
|
66
|
+
name: metaid
|
67
|
+
type: :runtime
|
62
68
|
version_requirement:
|
63
69
|
version_requirements: !ruby/object:Gem::Requirement
|
64
70
|
requirements:
|
@@ -68,6 +74,7 @@ dependencies:
|
|
68
74
|
version:
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: extensions
|
77
|
+
type: :runtime
|
71
78
|
version_requirement:
|
72
79
|
version_requirements: !ruby/object:Gem::Requirement
|
73
80
|
requirements:
|
@@ -77,6 +84,7 @@ dependencies:
|
|
77
84
|
version:
|
78
85
|
- !ruby/object:Gem::Dependency
|
79
86
|
name: live_console
|
87
|
+
type: :runtime
|
80
88
|
version_requirement:
|
81
89
|
version_requirements: !ruby/object:Gem::Requirement
|
82
90
|
requirements:
|
@@ -86,6 +94,7 @@ dependencies:
|
|
86
94
|
version:
|
87
95
|
- !ruby/object:Gem::Dependency
|
88
96
|
name: choice
|
97
|
+
type: :runtime
|
89
98
|
version_requirement:
|
90
99
|
version_requirements: !ruby/object:Gem::Requirement
|
91
100
|
requirements:
|
@@ -95,6 +104,7 @@ dependencies:
|
|
95
104
|
version:
|
96
105
|
- !ruby/object:Gem::Dependency
|
97
106
|
name: daemons
|
107
|
+
type: :runtime
|
98
108
|
version_requirement:
|
99
109
|
version_requirements: !ruby/object:Gem::Requirement
|
100
110
|
requirements:
|
@@ -104,6 +114,7 @@ dependencies:
|
|
104
114
|
version:
|
105
115
|
- !ruby/object:Gem::Dependency
|
106
116
|
name: rakegen
|
117
|
+
type: :runtime
|
107
118
|
version_requirement:
|
108
119
|
version_requirements: !ruby/object:Gem::Requirement
|
109
120
|
requirements:
|
@@ -113,6 +124,7 @@ dependencies:
|
|
113
124
|
version:
|
114
125
|
- !ruby/object:Gem::Dependency
|
115
126
|
name: sequel
|
127
|
+
type: :runtime
|
116
128
|
version_requirement:
|
117
129
|
version_requirements: !ruby/object:Gem::Requirement
|
118
130
|
requirements:
|
@@ -120,6 +132,16 @@ dependencies:
|
|
120
132
|
- !ruby/object:Gem::Version
|
121
133
|
version: 2.0.0
|
122
134
|
version:
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: autocode
|
137
|
+
type: :runtime
|
138
|
+
version_requirement:
|
139
|
+
version_requirements: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: 1.0.0
|
144
|
+
version:
|
123
145
|
description:
|
124
146
|
email: dan@zeraweb.com
|
125
147
|
executables:
|
@@ -139,11 +161,15 @@ files:
|
|
139
161
|
- lib/dispatchers/default.rb
|
140
162
|
- lib/foundations/default.rb
|
141
163
|
- lib/foundations/simple.rb
|
164
|
+
- lib/helpers/asset_helper.rb
|
142
165
|
- lib/helpers/common.rb
|
143
166
|
- lib/helpers/default.rb
|
144
167
|
- lib/helpers/form.rb
|
145
168
|
- lib/helpers/formatting.rb
|
146
169
|
- lib/helpers/model.rb
|
170
|
+
- lib/helpers/number_helper.rb
|
171
|
+
- lib/helpers/tag_helper.rb
|
172
|
+
- lib/helpers/url_helper.rb
|
147
173
|
- lib/helpers/view.rb
|
148
174
|
- lib/layers/default_errors.rb
|
149
175
|
- lib/layers/mvc.rb
|
@@ -259,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
259
285
|
requirements: []
|
260
286
|
|
261
287
|
rubyforge_project:
|
262
|
-
rubygems_version: 1.0
|
288
|
+
rubygems_version: 1.2.0
|
263
289
|
signing_key:
|
264
290
|
specification_version: 2
|
265
291
|
summary: Open-source framework for building Ruby-based Web applications.
|