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.
- data/LICENSE +1 -1
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/bin/kiss +151 -34
- data/data/scaffold.tgz +0 -0
- data/lib/kiss.rb +389 -742
- data/lib/kiss/accessors/controller.rb +47 -0
- data/lib/kiss/accessors/request.rb +106 -0
- data/lib/kiss/accessors/template.rb +23 -0
- data/lib/kiss/action.rb +502 -132
- data/lib/kiss/bench.rb +14 -5
- data/lib/kiss/debug.rb +14 -6
- data/lib/kiss/exception_report.rb +22 -299
- data/lib/kiss/ext/core.rb +700 -0
- data/lib/kiss/ext/rack.rb +33 -0
- data/lib/kiss/ext/sequel_database.rb +47 -0
- data/lib/kiss/ext/sequel_mysql_dataset.rb +23 -0
- data/lib/kiss/form.rb +404 -179
- data/lib/kiss/form/field.rb +183 -307
- data/lib/kiss/form/field_types.rb +239 -0
- data/lib/kiss/format.rb +88 -70
- data/lib/kiss/html/exception_report.css +222 -0
- data/lib/kiss/html/exception_report.html +210 -0
- data/lib/kiss/iterator.rb +14 -12
- data/lib/kiss/login.rb +8 -8
- data/lib/kiss/mailer.rb +68 -66
- data/lib/kiss/model.rb +323 -36
- data/lib/kiss/rack/bench.rb +16 -8
- data/lib/kiss/rack/email_errors.rb +25 -15
- data/lib/kiss/rack/errors_ok.rb +2 -2
- data/lib/kiss/rack/facebook.rb +6 -6
- data/lib/kiss/rack/file_not_found.rb +10 -8
- data/lib/kiss/rack/log_exceptions.rb +3 -3
- data/lib/kiss/rack/recorder.rb +2 -2
- data/lib/kiss/rack/show_debug.rb +2 -2
- data/lib/kiss/rack/show_exceptions.rb +2 -2
- data/lib/kiss/request.rb +435 -0
- data/lib/kiss/sequel_session.rb +15 -14
- data/lib/kiss/static_file.rb +20 -13
- data/lib/kiss/template.rb +327 -0
- metadata +60 -25
- data/lib/kiss/controller_accessors.rb +0 -81
- data/lib/kiss/hacks.rb +0 -188
- data/lib/kiss/sequel_mysql.rb +0 -25
- 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
|
-
|
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:
|
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
|
-
|
18
|
-
|
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
|
-
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
25
33
|
- !ruby/object:Gem::Dependency
|
26
34
|
name: sequel
|
27
|
-
|
28
|
-
|
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
|
-
|
34
|
-
|
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
|
-
|
39
|
-
|
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
|
-
|
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/
|
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/
|
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/
|
115
|
+
- lib/kiss/request.rb
|
85
116
|
- lib/kiss/sequel_session.rb
|
86
117
|
- lib/kiss/static_file.rb
|
87
|
-
- lib/kiss/
|
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.
|
149
|
+
rubygems_version: 1.3.6
|
115
150
|
signing_key:
|
116
|
-
specification_version:
|
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
|
data/lib/kiss/hacks.rb
DELETED
@@ -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
|
data/lib/kiss/sequel_mysql.rb
DELETED
@@ -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
|