kiss 1.1 → 1.7

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 (45) hide show
  1. data/LICENSE +1 -1
  2. data/Rakefile +2 -1
  3. data/VERSION +1 -1
  4. data/bin/kiss +151 -34
  5. data/data/scaffold.tgz +0 -0
  6. data/lib/kiss.rb +389 -742
  7. data/lib/kiss/accessors/controller.rb +47 -0
  8. data/lib/kiss/accessors/request.rb +106 -0
  9. data/lib/kiss/accessors/template.rb +23 -0
  10. data/lib/kiss/action.rb +502 -132
  11. data/lib/kiss/bench.rb +14 -5
  12. data/lib/kiss/debug.rb +14 -6
  13. data/lib/kiss/exception_report.rb +22 -299
  14. data/lib/kiss/ext/core.rb +700 -0
  15. data/lib/kiss/ext/rack.rb +33 -0
  16. data/lib/kiss/ext/sequel_database.rb +47 -0
  17. data/lib/kiss/ext/sequel_mysql_dataset.rb +23 -0
  18. data/lib/kiss/form.rb +404 -179
  19. data/lib/kiss/form/field.rb +183 -307
  20. data/lib/kiss/form/field_types.rb +239 -0
  21. data/lib/kiss/format.rb +88 -70
  22. data/lib/kiss/html/exception_report.css +222 -0
  23. data/lib/kiss/html/exception_report.html +210 -0
  24. data/lib/kiss/iterator.rb +14 -12
  25. data/lib/kiss/login.rb +8 -8
  26. data/lib/kiss/mailer.rb +68 -66
  27. data/lib/kiss/model.rb +323 -36
  28. data/lib/kiss/rack/bench.rb +16 -8
  29. data/lib/kiss/rack/email_errors.rb +25 -15
  30. data/lib/kiss/rack/errors_ok.rb +2 -2
  31. data/lib/kiss/rack/facebook.rb +6 -6
  32. data/lib/kiss/rack/file_not_found.rb +10 -8
  33. data/lib/kiss/rack/log_exceptions.rb +3 -3
  34. data/lib/kiss/rack/recorder.rb +2 -2
  35. data/lib/kiss/rack/show_debug.rb +2 -2
  36. data/lib/kiss/rack/show_exceptions.rb +2 -2
  37. data/lib/kiss/request.rb +435 -0
  38. data/lib/kiss/sequel_session.rb +15 -14
  39. data/lib/kiss/static_file.rb +20 -13
  40. data/lib/kiss/template.rb +327 -0
  41. metadata +60 -25
  42. data/lib/kiss/controller_accessors.rb +0 -81
  43. data/lib/kiss/hacks.rb +0 -188
  44. data/lib/kiss/sequel_mysql.rb +0 -25
  45. data/lib/kiss/template_methods.rb +0 -167
metadata CHANGED
@@ -1,7 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kiss
3
3
  version: !ruby/object:Gem::Version
4
- version: "1.1"
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 7
8
+ version: "1.7"
5
9
  platform: ruby
6
10
  authors:
7
11
  - Shawn Van Ittersum
@@ -9,39 +13,61 @@ autorequire:
9
13
  bindir: bin
10
14
  cert_chain: []
11
15
 
12
- date: 2009-02-10 00:00:00 -08:00
16
+ date: 2012-01-28 00:00:00 -08:00
13
17
  default_executable:
14
18
  dependencies:
15
19
  - !ruby/object:Gem::Dependency
16
20
  name: rack
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
20
23
  requirements:
21
24
  - - "="
22
25
  - !ruby/object:Gem::Version
26
+ segments:
27
+ - 0
28
+ - 4
29
+ - 0
23
30
  version: 0.4.0
24
- version:
31
+ type: :runtime
32
+ version_requirements: *id001
25
33
  - !ruby/object:Gem::Dependency
26
34
  name: sequel
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
30
37
  requirements:
31
38
  - - ">="
32
39
  - !ruby/object:Gem::Version
33
- version: 2.5.0
34
- version:
40
+ segments:
41
+ - 3
42
+ - 0
43
+ - 0
44
+ version: 3.0.0
45
+ type: :runtime
46
+ version_requirements: *id002
35
47
  - !ruby/object:Gem::Dependency
36
48
  name: erubis
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ version: "0"
37
57
  type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
58
+ version_requirements: *id003
59
+ - !ruby/object:Gem::Dependency
60
+ name: tzinfo
61
+ prerelease: false
62
+ requirement: &id004 !ruby/object:Gem::Requirement
40
63
  requirements:
41
64
  - - ">="
42
65
  - !ruby/object:Gem::Version
66
+ segments:
67
+ - 0
43
68
  version: "0"
44
- version:
69
+ type: :runtime
70
+ version_requirements: *id004
45
71
  description:
46
72
  email: shawn @nospam@ multiwidget.com
47
73
  executables:
@@ -56,22 +82,27 @@ files:
56
82
  - LICENSE
57
83
  - bin/kiss
58
84
  - data/scaffold.tgz
59
- - lib/kiss
85
+ - lib/kiss/accessors/controller.rb
86
+ - lib/kiss/accessors/request.rb
87
+ - lib/kiss/accessors/template.rb
60
88
  - lib/kiss/action.rb
61
89
  - lib/kiss/bench.rb
62
- - lib/kiss/controller_accessors.rb
63
90
  - lib/kiss/debug.rb
64
91
  - lib/kiss/exception_report.rb
65
- - lib/kiss/form
92
+ - lib/kiss/ext/core.rb
93
+ - lib/kiss/ext/rack.rb
94
+ - lib/kiss/ext/sequel_database.rb
95
+ - lib/kiss/ext/sequel_mysql_dataset.rb
66
96
  - lib/kiss/form/field.rb
97
+ - lib/kiss/form/field_types.rb
67
98
  - lib/kiss/form.rb
68
99
  - lib/kiss/format.rb
69
- - lib/kiss/hacks.rb
100
+ - lib/kiss/html/exception_report.css
101
+ - lib/kiss/html/exception_report.html
70
102
  - lib/kiss/iterator.rb
71
103
  - lib/kiss/login.rb
72
104
  - lib/kiss/mailer.rb
73
105
  - lib/kiss/model.rb
74
- - lib/kiss/rack
75
106
  - lib/kiss/rack/bench.rb
76
107
  - lib/kiss/rack/email_errors.rb
77
108
  - lib/kiss/rack/errors_ok.rb
@@ -81,13 +112,15 @@ files:
81
112
  - lib/kiss/rack/recorder.rb
82
113
  - lib/kiss/rack/show_debug.rb
83
114
  - lib/kiss/rack/show_exceptions.rb
84
- - lib/kiss/sequel_mysql.rb
115
+ - lib/kiss/request.rb
85
116
  - lib/kiss/sequel_session.rb
86
117
  - lib/kiss/static_file.rb
87
- - lib/kiss/template_methods.rb
118
+ - lib/kiss/template.rb
88
119
  - lib/kiss.rb
89
120
  has_rdoc: true
90
121
  homepage: http://www.rubykiss.org
122
+ licenses: []
123
+
91
124
  post_install_message:
92
125
  rdoc_options:
93
126
  - --main
@@ -100,20 +133,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
133
  requirements:
101
134
  - - ">="
102
135
  - !ruby/object:Gem::Version
136
+ segments:
137
+ - 0
103
138
  version: "0"
104
- version:
105
139
  required_rubygems_version: !ruby/object:Gem::Requirement
106
140
  requirements:
107
141
  - - ">="
108
142
  - !ruby/object:Gem::Version
143
+ segments:
144
+ - 0
109
145
  version: "0"
110
- version:
111
146
  requirements: []
112
147
 
113
148
  rubyforge_project: kiss
114
- rubygems_version: 1.3.1
149
+ rubygems_version: 1.3.6
115
150
  signing_key:
116
- specification_version: 2
151
+ specification_version: 3
117
152
  summary: An MVC web application framework using Rack, Sequel, and Erubis.
118
153
  test_files: []
119
154
 
@@ -1,81 +0,0 @@
1
- class Kiss
2
- module KissAccessors
3
- def environment
4
- Kiss.environment
5
- end
6
-
7
- def project_dir
8
- Kiss.project_dir
9
- end
10
-
11
- def public_dir
12
- Kiss.public_dir
13
- end
14
-
15
- def upload_dir
16
- Kiss.upload_dir
17
- end
18
- end
19
-
20
- module ControllerAccessors
21
- def debug(object)
22
- controller.debug(object, Kernel.caller[0])
23
- end
24
- alias_method :trace, :debug
25
-
26
- def bench(label = nil)
27
- controller.bench(label, Kernel.caller[0])
28
- end
29
-
30
- def models
31
- controller.models
32
- end
33
- alias_method :dbm, :models
34
-
35
- def database
36
- controller.database
37
- end
38
-
39
- def file_cache(*args,&block)
40
- controller.file_cache(*args,&block)
41
- end
42
-
43
- def session
44
- controller.session
45
- end
46
-
47
- def login
48
- controller.login
49
- end
50
-
51
- def request
52
- controller.request
53
- end
54
-
55
- def app(*args)
56
- controller.app_url(*args)
57
- end
58
-
59
- def pub(*args)
60
- controller.pub_url(*args)
61
- end
62
-
63
- def env
64
- controller.env
65
- end
66
-
67
- def protocol
68
- controller.protocol
69
- end
70
-
71
- def host
72
- controller.host
73
- end
74
-
75
- def new_email
76
- controller.new_email
77
- end
78
-
79
- include KissAccessors
80
- end
81
- end
@@ -1,188 +0,0 @@
1
- # This is a collection of hacks to enable various Ruby lnaguage enhancements
2
- # and other features of Kiss.
3
-
4
- # Placeholder; to be overloaded by Kiss Rack builder option MultiBench
5
- # (not yet implemented).
6
- # def multibench(*args); end
7
-
8
- # This gets called outside of controller contexts; used mainly for debugging
9
- # during Kiss framework development.
10
- def force_debug(object)
11
- print "Content-type: text/html\n\n" unless $debug
12
- $debug = true
13
-
14
- puts object.inspect + '<br/>' + '<small>at ' + Kernel.caller[0] + '</small><br/>'
15
- object
16
- end
17
- alias :debug :force_debug
18
-
19
- def trace(object)
20
- debug(object)
21
- end
22
-
23
- class Kiss
24
- # Used when Kiss#file_cache called from Kiss::Action#file_cache.
25
- # Caught by Kiss's Rack builder option FileNotFound.
26
- class TemplateFileNotFound < LoadError; end
27
- class FileNotFound < LoadError; end
28
- end
29
-
30
-
31
- # Methods to enable hash.attr == hash[attr] syntax,
32
- # including hash.id and hash.type
33
- class Hash
34
- def method_missing(meth,*args)
35
- if /=$/=~(meth=meth.id2name) then
36
- self[meth[0...-1]] = (args.length<2 ? args[0] : args)
37
- else
38
- self[meth] || self[meth.to_sym]
39
- end
40
- end
41
- def id
42
- self['id'] || self [:id]
43
- end
44
- def type
45
- self['type'] || self [:type] || Hash
46
- end
47
- end
48
-
49
- # Enables FixNum conversion to time duration values (in seconds).
50
- class Fixnum
51
- # 2.weeks = 14.days
52
- def weeks
53
- self * 7.days
54
- end
55
- # 1.days = 24.hours
56
- def days
57
- self * 24.hours
58
- end
59
- # 1.hours = 60.minutes = 3600 (seconds)
60
- def hours
61
- self * 60.minutes
62
- end
63
- # 1.minutes = 60 (seconds)
64
- # 5.minutes = 300 (seconds)
65
- def minutes
66
- self * 60
67
- end
68
- # 5.minutes.ago = Time.now - 300
69
- def ago
70
- Time.now - self
71
- end
72
-
73
- # format thousands
74
- def format_thousands
75
- to_s.reverse.gsub(/(\d{3})/,'\1,').sub(/\,(-?)$/,'\1').reverse
76
- end
77
- end
78
-
79
- class Date
80
- # Returns string representing date in m/d/yyyy format
81
- def mdy
82
- strftime("%m/%d/%Y")
83
- end
84
- end
85
-
86
- class NilClass
87
- def mdy
88
- ''
89
- end
90
- def size
91
- 0
92
- end
93
- def length
94
- 0
95
- end
96
- # Ruby default: nil.id == 4 (now deprecated, but still present in 1.8)
97
- # can cause unexpected results when using id from nil Sequel results
98
- # so we'll raise an error instead, effectively undefining 'id' method
99
- def id
100
- raise NoMethodError, "undefined method `id' for nil:NilClass"
101
- end
102
- end
103
-
104
- class String
105
- def to_const
106
- begin
107
- parts = self.split(/::/)
108
- klass = Kernel
109
- while (next_part = parts.shift)
110
- klass = klass.const_get(next_part)
111
- end
112
-
113
- klass
114
- rescue
115
- raise "Constant '#{self}' not defined"
116
- end
117
- end
118
- end
119
-
120
- class Symbol
121
- def to_const
122
- self.to_s.to_const
123
- end
124
- end
125
-
126
- module Rack
127
- class Request
128
- def server
129
- url = scheme + "://"
130
- url << host
131
-
132
- if scheme == "https" && port != 443 ||
133
- scheme == "http" && port != 80
134
- url << ":#{port}"
135
- end
136
-
137
- url
138
- end
139
- end
140
- end
141
-
142
- class SequelZeroTime < String
143
- def initialize(value = '0000-00-00 00:00',*args,&block)
144
- super(value,*args,&block)
145
- end
146
-
147
- # arithmetic operators
148
- def +(*args)
149
- self
150
- end
151
- def -(*args)
152
- self
153
- end
154
-
155
- # comparision operators
156
- def ==(value)
157
- (value == 0 || value.is_a?(SequelZeroTime)) ? true : false
158
- end
159
- def >(*args)
160
- return false
161
- end
162
- def >=(*args)
163
- (value == 0 || value.is_a?(SequelZeroTime)) ? true : false
164
- end
165
- def <(*args)
166
- return true
167
- end
168
- def <=(*args)
169
- return true
170
- end
171
-
172
- # format conversion
173
- def to_f
174
- 0
175
- end
176
- def to_i
177
- 0
178
- end
179
- def to_s
180
- ''
181
- end
182
- def strftime(*args)
183
- ''
184
- end
185
- def mdy
186
- ''
187
- end
188
- end
@@ -1,25 +0,0 @@
1
- module Sequel
2
- module MySQL
3
- class Dataset < Sequel::Dataset
4
- # Returns results from dataset query as array of arrays,
5
- # instead of array of hashes.
6
- def all_arrays(opts = nil, &block)
7
- a = []
8
- fetch_arrays(select_sql(opts)) {|r| a << r}
9
- a.each(&block) if block
10
- a
11
- end
12
-
13
- # Fixes bug in Sequel 1.5; shouldn't be needed for Sequel 2.x
14
- # (need to double-check, however).
15
- def fetch_arrays(sql)
16
- execute(sql) do |r|
17
- while row = r.fetch_row
18
- yield row
19
- end
20
- end
21
- self
22
- end
23
- end
24
- end
25
- end