waves 0.7.5 → 0.7.6
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/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.
|