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 CHANGED
File without changes
data/bin/waves-console CHANGED
File without changes
data/bin/waves-server CHANGED
File without changes
@@ -131,24 +131,30 @@ module Waves
131
131
 
132
132
  private
133
133
 
134
- def destructure(hash)
135
- rval = {}
136
- hash.keys.map{ |key|key.split('.') }.each do |keys|
137
- destructure_with_array_keys(hash,'',keys,rval)
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
- rval
139
+ destructured
140
140
  end
141
141
 
142
- def destructure_with_array_keys(hash,prefix,keys,rval)
142
+ def destructure_with_array_keys( hash, prefix, keys, destructured )
143
143
  if keys.length == 1
144
- val = hash[prefix+keys.first]
145
- rval[keys.first.intern] = case val
146
- when String then val.strip
147
- when Hash then val
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
- rval = ( rval[keys.first.intern] ||= {} )
151
- destructure_with_array_keys(hash,(keys.shift<<'.'),keys,rval)
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 = { '&'=>'&amp;', '<'=>'&lt;', '>'=>'&gt;', '"'=>'&quot;', "'"=>'&#039;', }
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 &amp; 3")
30
+ # # => "1 &lt; 2 &amp; 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;amp;, &amp;#123;, etc.
52
+ def fix_double_escape(escaped)
53
+ escaped.gsub(/&amp;([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
- # 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)
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)
@@ -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
- # include Waves::Helpers::UrlHelper
9
- # include Waves::Helpers::TagHelper
10
- # include Waves::Helpers::AssetHelper
11
- # include Waves::Helpers::NumberHelper
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
@@ -8,7 +8,7 @@ module Waves
8
8
 
9
9
  # Register a module as a Waves application.
10
10
  # Also, initialize the database connection if necessary.
11
- def << ( app )
11
+ def << ( app )
12
12
  @application = app if Module === app
13
13
  # app.database if app.respond_to? 'database'
14
14
  end
@@ -42,6 +42,7 @@ module Waves
42
42
  ::Logger.new( output, config[:rotation].intern ) :
43
43
  ::Logger.new( output )
44
44
  @log.level = level
45
+ @log.datetime_format = "%Y-%m-%d %H:%M:%S "
45
46
  self
46
47
  end
47
48
 
@@ -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
 
@@ -1,22 +1,31 @@
1
- class Hash
2
-
3
- def stringify_keys
4
- inject({}) do |options, (key, value)|
5
- options[key.to_s] = value
6
- options
7
- end
8
- end
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
- # Destructively convert all keys to symbols.
11
- def symbolize_keys!
12
- keys.each do |key|
13
- unless key.is_a?(Symbol)
14
- self[key.to_sym] = self[key]
15
- delete(key)
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
@@ -129,8 +129,6 @@ module Inflect # :nodoc:
129
129
  word 'Swiss' , 'Swiss'
130
130
  word 'life' , 'lives'
131
131
  word 'wife' , 'wives'
132
- word 'virus' , 'viri'
133
- word 'octopus' , 'octopi'
134
132
  word 'cactus' , 'cacti'
135
133
  word 'goose' , 'geese'
136
134
  word 'criterion' , 'criteria'
@@ -1,47 +1,61 @@
1
- # Waves extends String with a variety of methods for changing from singular to plural and back, and switching to different types of case and word separators. These methods are similar to those found in Rails and other frameworks, but some (all?) of the names are different. The names here were chosen for increased clarity and are hopefully easy to adjust to ...
2
-
3
- class String
4
-
5
- # Does a File.join on the two arguments joined by the /. Very handy
6
- # for doing platform-safe paths without having to use File.join.
7
- #
8
- # I unfortunately don't recall where i first saw this ... see
9
- # Symbol extension as well, allowing for :files / 'afilename.txt'
10
-
11
- def / ( string )
12
- File.join(self,string.to_s)
13
- end
14
-
15
- def singular
16
- Inflect::English.singular(self)
17
- end
18
-
19
- alias_method(:singularize, :singular)
20
-
21
- def plural
22
- Inflect::English.plural(self)
23
- end
24
-
25
- alias_method(:pluralize, :plural)
26
-
27
- def lower_camel_case
28
- gsub(/(_)(\w)/) { $2.upcase }
29
- end
30
-
31
- def camel_case
32
- lower_camel_case.gsub(/^([a-z])/) { $1.upcase }
33
- end
34
-
35
- def snake_case
36
- gsub(/\s+/,'').gsub(/([a-z\d])([A-Z])/){ "#{$1}_#{$2}"}.tr("-", "_").downcase
37
- end
38
-
39
- def title_case
40
- gsub(/(^|\s)\s*([a-z])/) { $1 + $2.upcase }
41
- end
42
-
43
- def text
44
- gsub(/[\_\-\.\:]/,' ')
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.5
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-19 00:00:00 -05:00
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: autocode
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.1
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.