knjrbfw 0.0.23 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/knjrbfw.gemspec +7 -4
- data/lib/knj/autoload.rb +1 -61
- data/lib/knj/datarow.rb +7 -10
- data/lib/knj/datarow_custom.rb +12 -2
- data/lib/knj/datet.rb +107 -0
- data/lib/knj/eruby.rb +21 -12
- data/lib/knj/gettext_threadded.rb +1 -1
- data/lib/knj/http2.rb +27 -9
- data/lib/knj/image.rb +10 -0
- data/lib/knj/includes/require_info.rb +3 -3
- data/lib/knj/knj.rb +16 -9
- data/lib/knj/knj_controller.rb +10 -1
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb +26 -9
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb +11 -8
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_indexes.rb +5 -0
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb +83 -26
- data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb +3 -3
- data/lib/knj/knjdb/libknjdb.rb +19 -20
- data/lib/knj/knjdb/revision.rb +9 -2
- data/lib/knj/kvm.rb +100 -0
- data/lib/knj/locale_strings.rb +32 -3
- data/lib/knj/locales.rb +1 -4
- data/lib/knj/memory_analyzer.rb +335 -0
- data/lib/knj/objects/objects_sqlhelper.rb +2 -2
- data/lib/knj/objects.rb +44 -11
- data/lib/knj/opts.rb +8 -8
- data/lib/knj/os.rb +13 -0
- data/lib/knj/php.rb +18 -33
- data/lib/knj/process.rb +3 -0
- data/lib/knj/process_meta.rb +1 -1
- data/lib/knj/rhodes/mutex.rb +2 -1
- data/lib/knj/rhodes/rhodes.js +5 -1
- data/lib/knj/rhodes/rhodes.rb +15 -15
- data/lib/knj/rhodes/youtube_embed.erb +12 -0
- data/lib/knj/rhodes/youtube_open.erb +45 -0
- data/lib/knj/strings.rb +2 -1
- data/lib/knj/translations.rb +3 -3
- data/lib/knj/unix_proc.rb +15 -4
- data/lib/knj/web.rb +17 -247
- data/lib/knj/webscripts/image.rhtml +9 -3
- data/lib/knj/wref.rb +109 -70
- data/spec/datet_spec.rb +30 -0
- data/spec/http2_spec.rb +23 -0
- data/spec/php_spec.rb +3 -0
- metadata +20 -17
- data/lib/knj/rhodes/delegate.rb +0 -414
- data/lib/knj/rhodes/weakref.rb +0 -80
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.24
|
data/knjrbfw.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{knjrbfw}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.24"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kasper Johansen"]
|
12
|
-
s.date = %q{2012-
|
12
|
+
s.date = %q{2012-04-26}
|
13
13
|
s.description = %q{Including stuff for HTTP, SSH and much more.}
|
14
14
|
s.email = %q{k@spernj.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -173,6 +173,7 @@ Gem::Specification.new do |s|
|
|
173
173
|
"lib/knj/knjdb/libknjdb_row.rb",
|
174
174
|
"lib/knj/knjdb/libknjdb_sqlite3_ironruby.rb",
|
175
175
|
"lib/knj/knjdb/revision.rb",
|
176
|
+
"lib/knj/kvm.rb",
|
176
177
|
"lib/knj/libqt.rb",
|
177
178
|
"lib/knj/libqt_window.rb",
|
178
179
|
"lib/knj/locale_strings.rb",
|
@@ -180,6 +181,7 @@ Gem::Specification.new do |s|
|
|
180
181
|
"lib/knj/maemo/fremantle-calendar/fremantle-calendar.rb",
|
181
182
|
"lib/knj/mail.rb",
|
182
183
|
"lib/knj/mailobj.rb",
|
184
|
+
"lib/knj/memory_analyzer.rb",
|
183
185
|
"lib/knj/mount.rb",
|
184
186
|
"lib/knj/mutexcl.rb",
|
185
187
|
"lib/knj/notify.rb",
|
@@ -200,11 +202,11 @@ Gem::Specification.new do |s|
|
|
200
202
|
"lib/knj/process_meta.rb",
|
201
203
|
"lib/knj/rand.rb",
|
202
204
|
"lib/knj/retry.rb",
|
203
|
-
"lib/knj/rhodes/delegate.rb",
|
204
205
|
"lib/knj/rhodes/mutex.rb",
|
205
206
|
"lib/knj/rhodes/rhodes.js",
|
206
207
|
"lib/knj/rhodes/rhodes.rb",
|
207
|
-
"lib/knj/rhodes/
|
208
|
+
"lib/knj/rhodes/youtube_embed.erb",
|
209
|
+
"lib/knj/rhodes/youtube_open.erb",
|
208
210
|
"lib/knj/rsvgbin.rb",
|
209
211
|
"lib/knj/scripts/degulesider.rb",
|
210
212
|
"lib/knj/scripts/filesearch.rb",
|
@@ -244,6 +246,7 @@ Gem::Specification.new do |s|
|
|
244
246
|
"lib/knjrbfw.rb",
|
245
247
|
"spec/amixer_spec.rb",
|
246
248
|
"spec/cmd_parser_spec.rb",
|
249
|
+
"spec/datet_spec.rb",
|
247
250
|
"spec/db_spec.rb",
|
248
251
|
"spec/db_spec_encoding_test_file.txt",
|
249
252
|
"spec/http2_spec.rb",
|
data/lib/knj/autoload.rb
CHANGED
@@ -2,71 +2,10 @@ $knjpath = File.dirname(__FILE__) + "/" if !$knjpath
|
|
2
2
|
require "#{$knjpath}/knj"
|
3
3
|
|
4
4
|
module Knj
|
5
|
-
autoload :Amixer, $knjpath + "amixer"
|
6
|
-
autoload :ArrayExt, $knjpath + "arrayext"
|
7
|
-
autoload :Datestamp, $knjpath + "datestamp"
|
8
|
-
autoload :Datet, $knjpath + "datet"
|
9
|
-
autoload :Cmd_gen, $knjpath + "cmd_gen"
|
10
|
-
autoload :Cmd_parser, $knjpath + "cmd_parser"
|
11
|
-
autoload :Compiler, $knjpath + "compiler"
|
12
|
-
autoload :Cpufreq, $knjpath + "cpufreq"
|
13
|
-
autoload :Csv, $knjpath + "csv"
|
14
|
-
autoload :Datarow, $knjpath + "datarow"
|
15
|
-
autoload :Db, $knjpath + "knjdb/libknjdb"
|
16
5
|
autoload :Db_row, $knjpath + "knjdb/libknjdb_row"
|
17
|
-
autoload :Degulesider, $knjpath + "degulesider"
|
18
|
-
autoload :Errors, $knjpath + "errors"
|
19
|
-
autoload :Eruby, $knjpath + "eruby"
|
20
|
-
autoload :Event_filemod, $knjpath + "event_filemod"
|
21
|
-
autoload :Event_handler, $knjpath + "event_handler"
|
22
|
-
autoload :Exchangerates, $knjpath + "exchangerates"
|
23
|
-
autoload :Facebook_connect, $knjpath + "facebook_connect"
|
24
6
|
autoload :Fs, $knjpath + "fs/fs"
|
25
|
-
autoload :Filesystem, $knjpath + "filesystem"
|
26
|
-
autoload :Gettext_threadded, $knjpath + "gettext_threadded"
|
27
|
-
autoload :Hash_methods, $knjpath + "hash_methods"
|
28
|
-
autoload :Http, $knjpath + "http"
|
29
|
-
autoload :Http2, $knjpath + "http2"
|
30
|
-
autoload :Image, $knjpath + "image"
|
31
|
-
autoload :Ip2location, $knjpath + "ip2location"
|
32
|
-
autoload :Jruby_compiler, $knjpath + "jruby_compiler"
|
33
|
-
autoload :Locales, $knjpath + "locales"
|
34
|
-
autoload :Objects, $knjpath + "objects"
|
35
|
-
autoload :Opts, $knjpath + "opts"
|
36
|
-
autoload :Mail, $knjpath + "mail"
|
37
|
-
autoload :Mailobj, $knjpath + "mailobj"
|
38
|
-
autoload :Mutexcl, $knjpath + "mutexcl"
|
39
|
-
autoload :Mount, $knjpath + "mount"
|
40
|
-
autoload :Mplayer, $knjpath + "mplayer"
|
41
|
-
autoload :Notify, $knjpath + "notify"
|
42
|
-
autoload :Nvidia_settings, $knjpath + "nvidia_settings"
|
43
|
-
autoload :Web, $knjpath + "web"
|
44
|
-
autoload :Google_sitemap, $knjpath + "google_sitemap"
|
45
|
-
autoload :Process, $knjpath + "process"
|
46
|
-
autoload :Process_meta, $knjpath + "process_meta"
|
47
|
-
autoload :Sms, $knjpath + "sms"
|
48
|
-
autoload :Os, $knjpath + "os"
|
49
|
-
autoload :Gtk2, $knjpath + "gtk2"
|
50
|
-
autoload :Php, $knjpath + "php"
|
51
7
|
autoload :Php_parser, $knjpath + "php_parser/php_parser"
|
52
|
-
autoload :Power_manager, $knjpath + "power_manager"
|
53
|
-
autoload :Rand, $knjpath + "rand"
|
54
|
-
autoload :Retry, $knjpath + "retry"
|
55
|
-
autoload :RSVGBIN, $knjpath + "rsvgbin"
|
56
|
-
autoload :Strings, $knjpath + "strings"
|
57
8
|
autoload :SSHRobot, $knjpath + "sshrobot/sshrobot"
|
58
|
-
autoload :Sysuser, $knjpath + "sysuser"
|
59
|
-
autoload :Table_writer, $knjpath + "table_writer"
|
60
|
-
autoload :Thread, $knjpath + "thread"
|
61
|
-
autoload :Thread2, $knjpath + "thread2"
|
62
|
-
autoload :Threadpool, $knjpath + "threadpool"
|
63
|
-
autoload :Threadhandler, $knjpath + "threadhandler"
|
64
|
-
autoload :Translations, $knjpath + "translations"
|
65
|
-
autoload :X11VNC, $knjpath + "x11vnc"
|
66
|
-
autoload :Unix_proc, $knjpath + "unix_proc"
|
67
|
-
autoload :YouTube, $knjpath + "youtube"
|
68
|
-
autoload :Win, $knjpath + "win"
|
69
|
-
autoload :Wref, $knjpath + "wref"
|
70
9
|
autoload :Wref_map, $knjpath + "wref"
|
71
10
|
end
|
72
11
|
|
@@ -84,6 +23,7 @@ autoload :IPAddr, "ipaddr"
|
|
84
23
|
autoload :JSON, $knjpath + "autoload/json"
|
85
24
|
autoload :GD2, $knjpath + "autoload/gd2"
|
86
25
|
autoload :Magick, $knjpath + "autoload/magick"
|
26
|
+
autoload :Monitor, "monitor"
|
87
27
|
autoload :Mutex, "thread"
|
88
28
|
autoload :Mysql, $knjpath + "autoload/mysql"
|
89
29
|
autoload :Open3, "open3"
|
data/lib/knj/datarow.rb
CHANGED
@@ -212,15 +212,8 @@ class Knj::Datarow
|
|
212
212
|
def self.load_columns(d)
|
213
213
|
@ob = d.ob if !@ob
|
214
214
|
|
215
|
-
if !@classname
|
216
|
-
|
217
|
-
@classname = match[2].to_sym
|
218
|
-
else
|
219
|
-
@classname = self.name.to_sym
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
@mutex = Mutex.new if !@mutex
|
215
|
+
@classname = self.name.split("::").last if !@classname
|
216
|
+
@mutex = Monitor.new if !@mutex
|
224
217
|
|
225
218
|
@mutex.synchronize do
|
226
219
|
inst_methods = self.instance_methods(false)
|
@@ -532,7 +525,7 @@ class Knj::Datarow
|
|
532
525
|
raise "Key was not a symbol: '#{key.class.name}'." if !key.is_a?(Symbol)
|
533
526
|
raise "No data was loaded on the object? Maybe you are trying to call a deleted object?" if !@data
|
534
527
|
return @data[key] if @data.key?(key)
|
535
|
-
raise "No such key: '#{key}'."
|
528
|
+
raise "No such key: '#{key}' on '#{self.class.name}'."
|
536
529
|
end
|
537
530
|
|
538
531
|
#Writes/updates a keys value on the object.
|
@@ -543,10 +536,14 @@ class Knj::Datarow
|
|
543
536
|
|
544
537
|
#Returns the objects ID.
|
545
538
|
def id
|
539
|
+
raise "This object has been deleted." if self.deleted?
|
546
540
|
raise "No data on object." if !@data
|
547
541
|
return @data[:id]
|
548
542
|
end
|
549
543
|
|
544
|
+
#This enable Knj::Wref to not return the wrong object.
|
545
|
+
alias __object_unique_id__ id
|
546
|
+
|
550
547
|
#Tries to figure out, and returns, the possible name or title for the object.
|
551
548
|
def name
|
552
549
|
if @data.key?(:title)
|
data/lib/knj/datarow_custom.rb
CHANGED
@@ -72,10 +72,10 @@ class Knj::Datarow_custom
|
|
72
72
|
if data.is_a?(Hash)
|
73
73
|
@data = Knj::ArrayExt.hash_sym(data)
|
74
74
|
else
|
75
|
-
data = d.data
|
76
75
|
raise "No 'data_from_id'-event connected to class." if !self.class.events.connected?(:data_from_id)
|
77
76
|
data = self.class.events.call(:data_from_id, Knj::Hash_methods.new(:id => data))
|
78
77
|
raise "No data was received from the event: 'data_from_id'." if !data
|
78
|
+
raise "Data expected to be a hash but wasnt: '#{data.class.name}'." if !data.is_a?(Hash)
|
79
79
|
@data = Knj::ArrayExt.hash_sym(data)
|
80
80
|
end
|
81
81
|
end
|
@@ -84,15 +84,25 @@ class Knj::Datarow_custom
|
|
84
84
|
return self.class.events.call(:update, Knj::Hash_methods.new(:object => self, :data => data))
|
85
85
|
end
|
86
86
|
|
87
|
+
#Returns a key from the hash that this object is holding or raises an error if it doesnt exist.
|
87
88
|
def [](key)
|
88
|
-
|
89
|
+
if !@data
|
90
|
+
raise "No data spawned on object."
|
91
|
+
end
|
92
|
+
|
93
|
+
if !@data.key?(key)
|
94
|
+
raise "No such key: '#{key}'. Available keys are: '#{@data.keys.sort.join(", ")}'."
|
95
|
+
end
|
96
|
+
|
89
97
|
return @data[key]
|
90
98
|
end
|
91
99
|
|
100
|
+
#Returns the ID of the object.
|
92
101
|
def id
|
93
102
|
return self[:id]
|
94
103
|
end
|
95
104
|
|
105
|
+
#Returns the name of the object, which can be taken from various data or various defined methods.
|
96
106
|
def name
|
97
107
|
if @data.key?(:title)
|
98
108
|
return @data[:title]
|
data/lib/knj/datet.rb
CHANGED
@@ -272,6 +272,7 @@ class Knj::Datet
|
|
272
272
|
|
273
273
|
def add_something(val)
|
274
274
|
val = -val if @addmode == "-"
|
275
|
+
return self.add_years(val) if @mode == :years
|
275
276
|
return self.add_hours(val) if @mode == :hours
|
276
277
|
return self.add_days(val) if @mode == :days
|
277
278
|
return self.add_months(val) if @mode == :months
|
@@ -309,6 +310,11 @@ class Knj::Datet
|
|
309
310
|
return self
|
310
311
|
end
|
311
312
|
|
313
|
+
def years
|
314
|
+
@mode = :years
|
315
|
+
return self
|
316
|
+
end
|
317
|
+
|
312
318
|
def stamp(args)
|
313
319
|
vars = {:year => @time.year, :month => @time.month, :day => @time.day, :hour => @time.hour, :min => @time.min, :sec => @time.sec}
|
314
320
|
|
@@ -621,4 +627,105 @@ class Knj::Datet
|
|
621
627
|
def localtime_str
|
622
628
|
return "#{"%04d" % @time.year}-#{"%02d" % @time.month}-#{"%02d" % @time.day} #{"%02d" % @time.hour}:#{"%02d" % @time.min}:#{"%02d" % @time.sec} #{self.offset_str}"
|
623
629
|
end
|
630
|
+
|
631
|
+
#Returns a human readable string based on the difference from the current time and date.
|
632
|
+
def ago_str(args = {})
|
633
|
+
args = {
|
634
|
+
:year_ago_str => "%s year ago",
|
635
|
+
:years_ago_str => "%s years ago",
|
636
|
+
:month_ago_str => "%s month ago",
|
637
|
+
:months_ago_str => "%s months ago",
|
638
|
+
:day_ago_str => "%s day ago",
|
639
|
+
:days_ago_str => "%s days ago",
|
640
|
+
:hour_ago_str => "%s hour ago",
|
641
|
+
:hours_ago_str => "%s hours ago",
|
642
|
+
:min_ago_str => "%s minute ago",
|
643
|
+
:mins_ago_str => "%s minutes ago",
|
644
|
+
:sec_ago_str => "%s second ago",
|
645
|
+
:secs_ago_str => "%s seconds ago",
|
646
|
+
:right_now_str => "right now"
|
647
|
+
}.merge(args)
|
648
|
+
|
649
|
+
secs_ago = Time.now.to_i - @time.to_i
|
650
|
+
mins_ago = secs_ago.to_f / 60.0
|
651
|
+
hours_ago = mins_ago / 60.0
|
652
|
+
days_ago = hours_ago / 24.0
|
653
|
+
months_ago = days_ago / 30.0
|
654
|
+
years_ago = months_ago / 12.0
|
655
|
+
|
656
|
+
if years_ago > 0.9 and years_ago < 1.5
|
657
|
+
return sprintf(args[:year_ago_str], years_ago.to_i)
|
658
|
+
elsif years_ago >= 1.5
|
659
|
+
return sprintf(args[:years_ago_str], years_ago.to_i)
|
660
|
+
elsif months_ago > 0.9 and months_ago < 1.5
|
661
|
+
return sprintf(args[:month_ago_str], months_ago.to_i)
|
662
|
+
elsif months_ago >= 1.5
|
663
|
+
return sprintf(args[:months_ago_str], months_ago.to_i)
|
664
|
+
elsif days_ago > 0.9 and days_ago < 1.5
|
665
|
+
return sprintf(args[:day_ago_str], days_ago.to_i)
|
666
|
+
elsif days_ago >= 1.5
|
667
|
+
return sprintf(args[:days_ago_str], days_ago.to_i)
|
668
|
+
elsif hours_ago > 0.9 and hours_ago < 1.5
|
669
|
+
return sprintf(args[:hour_ago_str], hours_ago.to_i)
|
670
|
+
elsif hours_ago >= 1.5
|
671
|
+
return sprintf(args[:hours_ago_str], hours_ago.to_i)
|
672
|
+
elsif mins_ago > 0.9 and mins_ago < 1.5
|
673
|
+
return sprintf(args[:min_ago_str], mins_ago.to_i)
|
674
|
+
elsif mins_ago >= 1.5
|
675
|
+
return sprintf(args[:mins_ago_str], mins_ago.to_i)
|
676
|
+
elsif secs_ago >= 0.1 and secs_ago < 1.5
|
677
|
+
return sprintf(args[:sec_ago_str], secs_ago.to_i)
|
678
|
+
elsif secs_ago >= 1.5
|
679
|
+
return sprintf(args[:secs_ago_str], secs_ago.to_i)
|
680
|
+
end
|
681
|
+
|
682
|
+
return args[:right_now_str]
|
683
|
+
end
|
684
|
+
|
685
|
+
def human_str(args = {})
|
686
|
+
args = {
|
687
|
+
:time => true,
|
688
|
+
:number_endings => {
|
689
|
+
0 => "th",
|
690
|
+
1 => "st",
|
691
|
+
2 => "nd",
|
692
|
+
3 => "rd",
|
693
|
+
4 => "th",
|
694
|
+
5 => "th",
|
695
|
+
6 => "th",
|
696
|
+
7 => "th",
|
697
|
+
8 => "th",
|
698
|
+
9 => "th"
|
699
|
+
}
|
700
|
+
}.merge(args)
|
701
|
+
|
702
|
+
now = Time.now
|
703
|
+
|
704
|
+
#Generate normal string.
|
705
|
+
date_str = ""
|
706
|
+
|
707
|
+
if now.day != @time.day and now.month == @time.month and now.year == @time.year
|
708
|
+
last_digit = @time.day.to_s[-1, 1].to_i
|
709
|
+
|
710
|
+
if ending = args[:number_endings][last_digit]
|
711
|
+
#ignore.
|
712
|
+
else
|
713
|
+
ending = "."
|
714
|
+
end
|
715
|
+
|
716
|
+
date_str << "#{@time.day}#{ending} "
|
717
|
+
elsif now.day != @time.day or now.month != @time.month or now.year != @time.year
|
718
|
+
date_str << "#{@time.day}/#{@time.month} "
|
719
|
+
end
|
720
|
+
|
721
|
+
if now.year != @time.year
|
722
|
+
date_str << "#{@time.year} "
|
723
|
+
end
|
724
|
+
|
725
|
+
if args[:time]
|
726
|
+
date_str << "#{@time.hour}:#{"%02d" % @time.min}"
|
727
|
+
end
|
728
|
+
|
729
|
+
return date_str
|
730
|
+
end
|
624
731
|
end
|
data/lib/knj/eruby.rb
CHANGED
@@ -4,8 +4,7 @@ class Knj::Eruby
|
|
4
4
|
def initialize(args = {})
|
5
5
|
@args = args
|
6
6
|
|
7
|
-
|
8
|
-
@tmpdir = "#{Dir.tmpdir}/knj_erb"
|
7
|
+
@tmpdir = "#{Knj::Os.tmpdir}/knj_erb"
|
9
8
|
Dir.mkdir(@tmpdir, 0777) if !File.exists?(@tmpdir)
|
10
9
|
|
11
10
|
|
@@ -20,7 +19,8 @@ class Knj::Eruby
|
|
20
19
|
@cache_mode = :code_eval
|
21
20
|
#@cache_mode = :compile_knj
|
22
21
|
elsif RUBY_VERSION.slice(0..2) == "1.9" and RubyVM::InstructionSequence.respond_to?(:compile_file)
|
23
|
-
@cache_mode = :
|
22
|
+
@cache_mode = :code_eval
|
23
|
+
#@cache_mode = :inseq
|
24
24
|
#@cache_mode = :compile_knj
|
25
25
|
end
|
26
26
|
|
@@ -45,6 +45,7 @@ class Knj::Eruby
|
|
45
45
|
begin
|
46
46
|
if !File.exists?(cachename) or filetime > cachetime
|
47
47
|
Knj::Eruby::Handler.load_file(filename, {:cachename => cachename})
|
48
|
+
File.chmod(0777, cachename)
|
48
49
|
cachetime = File.mtime(cachename)
|
49
50
|
reload_cache = true
|
50
51
|
elsif !@cache.key?(cachename)
|
@@ -55,8 +56,15 @@ class Knj::Eruby
|
|
55
56
|
when :compile_knj
|
56
57
|
@compiler.eval_file(:filepath => cachename, :fileident => filename)
|
57
58
|
when :code_eval
|
59
|
+
if @args[:binding_callback]
|
60
|
+
binding_use = @args[:binding_callback].call
|
61
|
+
else
|
62
|
+
eruby_binding = Knj::Eruby::Binding.new
|
63
|
+
binding_use = eruby_binding.get_binding
|
64
|
+
end
|
65
|
+
|
58
66
|
@cache[cachename] = File.read(cachename) if reload_cache
|
59
|
-
eval(@cache[cachename],
|
67
|
+
eval(@cache[cachename], binding_use, filename)
|
60
68
|
when :inseq
|
61
69
|
if reload_cache or @cache[cachename][:time] < cachetime
|
62
70
|
@cache[cachename] = {
|
@@ -212,13 +220,8 @@ class Knj::Eruby
|
|
212
220
|
print "\n\n<pre>\n\n"
|
213
221
|
print "<b>#{Knj::Web.html(e.class.name)}: #{Knj::Web.html(e.message)}</b>\n\n"
|
214
222
|
|
215
|
-
|
216
|
-
|
217
|
-
#to = bt.length - 9
|
218
|
-
#bt = bt[0..to]
|
219
|
-
|
220
|
-
bt.each do |line|
|
221
|
-
print Knj::Web.html(line) + "\n"
|
223
|
+
e.backtrace.each do |line|
|
224
|
+
print "#{Knj::Web.html(line)}\n"
|
222
225
|
end
|
223
226
|
|
224
227
|
print "</pre>"
|
@@ -228,7 +231,7 @@ class Knj::Eruby
|
|
228
231
|
print "<b>#{Knj::Web.html(e.class.name)}: #{Knj::Web.html(e.message)}</b>\n\n"
|
229
232
|
|
230
233
|
e.backtrace.each do |line|
|
231
|
-
print Knj::Web.html(line)
|
234
|
+
print "#{Knj::Web.html(line)}\n"
|
232
235
|
end
|
233
236
|
|
234
237
|
print "</pre>"
|
@@ -237,4 +240,10 @@ end
|
|
237
240
|
|
238
241
|
class Knj::Eruby::Handler < Erubis::Eruby
|
239
242
|
include Erubis::StdoutEnhancer
|
243
|
+
end
|
244
|
+
|
245
|
+
class Knj::Eruby::Binding
|
246
|
+
def get_binding
|
247
|
+
return binding
|
248
|
+
end
|
240
249
|
end
|
@@ -29,7 +29,7 @@ class Knj::Gettext_threadded
|
|
29
29
|
pofn = "#{dir}/#{file}/#{fname}/#{pofile}"
|
30
30
|
|
31
31
|
cont = nil
|
32
|
-
File.open(pofn, {:encoding => @args[:encoding]}) do |fp|
|
32
|
+
File.open(pofn, "r", {:encoding => @args[:encoding]}) do |fp|
|
33
33
|
cont = fp.read.encode("utf-8")
|
34
34
|
end
|
35
35
|
|
data/lib/knj/http2.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
require "#{$knjpath}web"
|
2
|
+
|
1
3
|
class Knj::Http2
|
2
4
|
attr_reader :cookies
|
3
5
|
|
4
6
|
def initialize(args = {})
|
5
7
|
args = {:host => args} if args.is_a?(String)
|
6
8
|
raise "Arguments wasnt a hash." if !args.is_a?(Hash)
|
7
|
-
require "#{$knjpath}web"
|
8
9
|
|
9
10
|
@args = args
|
10
11
|
@cookies = {}
|
@@ -135,6 +136,7 @@ class Knj::Http2
|
|
135
136
|
def get(addr, args = {})
|
136
137
|
begin
|
137
138
|
@mutex.synchronize do
|
139
|
+
args[:addr] = addr
|
138
140
|
header_str = "GET /#{addr} HTTP/1.1#{@nl}"
|
139
141
|
header_str << self.header_str(self.default_headers(args), args)
|
140
142
|
header_str << "#{@nl}"
|
@@ -149,8 +151,7 @@ class Knj::Http2
|
|
149
151
|
return resp
|
150
152
|
end
|
151
153
|
rescue Knj::Errors::Retry => e
|
152
|
-
print "Redirecting to: #{e.message}\n"
|
153
|
-
|
154
|
+
print "Redirecting to: #{e.message}\n" if @debug
|
154
155
|
return self.get(e.message, args)
|
155
156
|
end
|
156
157
|
end
|
@@ -191,14 +192,31 @@ class Knj::Http2
|
|
191
192
|
return headers
|
192
193
|
end
|
193
194
|
|
195
|
+
def self.post_convert_data(pdata)
|
196
|
+
praw = ""
|
197
|
+
|
198
|
+
if pdata.is_a?(Hash)
|
199
|
+
pdata.each do |key, val|
|
200
|
+
praw << "&" if praw != ""
|
201
|
+
praw << "#{Knj::Web.urlenc(Knj::Http2.post_convert_data(key))}=#{Knj::Web.urlenc(Knj::Http2.post_convert_data(val))}"
|
202
|
+
end
|
203
|
+
elsif pdata.is_a?(Array)
|
204
|
+
count = 0
|
205
|
+
pdata.each do |val|
|
206
|
+
count += 1
|
207
|
+
praw << "#{count}=#{Knj::Web.urlenc(Knj::Http2.post_convert_data(val))}"
|
208
|
+
end
|
209
|
+
else
|
210
|
+
return pdata.to_s
|
211
|
+
end
|
212
|
+
|
213
|
+
return praw
|
214
|
+
end
|
215
|
+
|
194
216
|
def post(addr, pdata = {}, args = {})
|
195
217
|
begin
|
196
218
|
@mutex.synchronize do
|
197
|
-
praw =
|
198
|
-
pdata.each do |key, val|
|
199
|
-
praw << "&" if praw != ""
|
200
|
-
praw << "#{Knj::Web.urlenc(key)}=#{Knj::Web.urlenc(val)}"
|
201
|
-
end
|
219
|
+
praw = Knj::Http2.post_convert_data(pdata)
|
202
220
|
|
203
221
|
header_str = "POST /#{addr} HTTP/1.1#{@nl}"
|
204
222
|
header_str << self.header_str(self.default_headers(args).merge("Content-Length" => praw.length), args)
|
@@ -360,7 +378,7 @@ class Knj::Http2
|
|
360
378
|
return http.get(uri.path)
|
361
379
|
end
|
362
380
|
elsif resp.args[:code].to_s == "500"
|
363
|
-
raise "500 - Internal server error."
|
381
|
+
raise "500 - Internal server error: '#{args[:addr]}':\n\n#{resp.body}"
|
364
382
|
elsif resp.args[:code].to_s == "403"
|
365
383
|
raise Knj::Errors::NoAccess
|
366
384
|
else
|
data/lib/knj/image.rb
CHANGED
@@ -152,4 +152,14 @@ class Knj::Image
|
|
152
152
|
|
153
153
|
pic.matte = true
|
154
154
|
end
|
155
|
+
|
156
|
+
#Returns the width relative to the height.
|
157
|
+
def self.width_for_height(orig_width, orig_height, new_height)
|
158
|
+
return (orig_width.to_f / (orig_height.to_f / new_height.to_f)).to_i
|
159
|
+
end
|
160
|
+
|
161
|
+
#Returns the height relative to the width.
|
162
|
+
def self.height_for_width(orig_width, orig_height, new_width)
|
163
|
+
return (orig_height.to_f / (orig_width.to_f / new_width.to_f)).to_i
|
164
|
+
end
|
155
165
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
Knj::REQUIRE_INFO = {}
|
2
2
|
|
3
3
|
class Object
|
4
4
|
alias_method :require_knj, :require
|
@@ -6,8 +6,8 @@ class Object
|
|
6
6
|
def require(path)
|
7
7
|
stat = require_knj(path)
|
8
8
|
|
9
|
-
if stat and
|
10
|
-
|
9
|
+
if stat and !Knj::REQUIRE_INFO.key?(path)
|
10
|
+
Knj::REQUIRE_INFO[path] = {:caller => caller}
|
11
11
|
end
|
12
12
|
|
13
13
|
return stat
|
data/lib/knj/knj.rb
CHANGED
@@ -1,13 +1,20 @@
|
|
1
|
-
if
|
2
|
-
autoload_path = "#{$knjpath}autoload.rb"
|
3
|
-
else
|
4
|
-
$knjpath = "knj/"
|
5
|
-
autoload_path = "#{File.dirname(__FILE__)}/autoload.rb"
|
6
|
-
end
|
7
|
-
|
8
|
-
require autoload_path if $knjautoload != false
|
1
|
+
$knjpath = "knj/" if !$knjpath
|
9
2
|
|
10
3
|
module Knj
|
4
|
+
CONFIG = {}
|
5
|
+
|
6
|
+
def self.const_missing(name)
|
7
|
+
if name == "db"
|
8
|
+
filepath = "#{$knjpath}/knjdb/libknjdb"
|
9
|
+
else
|
10
|
+
filepath = "#{$knjpath}#{name.to_s.downcase}"
|
11
|
+
end
|
12
|
+
|
13
|
+
require filepath
|
14
|
+
raise "Constant still not defined: '#{name}'." if !Knj.const_defined?(name)
|
15
|
+
return Knj.const_get(name)
|
16
|
+
end
|
17
|
+
|
11
18
|
def self.appserver_cli(filename)
|
12
19
|
Knj::Os.chdir_file(filename)
|
13
20
|
require "#{$knjpath}/includes/appserver_cli.rb"
|
@@ -15,7 +22,7 @@ module Knj
|
|
15
22
|
|
16
23
|
def self.dirname(filepath)
|
17
24
|
raise "Filepath does not exist: #{filepath}" if !File.exists?(filepath)
|
18
|
-
return
|
25
|
+
return File.realpath(File.dirname(filepath))
|
19
26
|
end
|
20
27
|
|
21
28
|
#Returns the path of the knjrbfw-framework.
|
data/lib/knj/knj_controller.rb
CHANGED
@@ -8,9 +8,18 @@ class KnjController < Rho::RhoController
|
|
8
8
|
def html_links
|
9
9
|
System.open_url(@params["url"])
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def callback
|
13
13
|
block = $rhodes.callbacks(@params["callback_id"])
|
14
14
|
block.call(:params => @params)
|
15
15
|
end
|
16
|
+
|
17
|
+
def youtube_embed
|
18
|
+
@iframe_height = System.get_property("screen_height").to_i - 40
|
19
|
+
render :file => "Knj/rhodes/youtube_embed.erb"
|
20
|
+
end
|
21
|
+
|
22
|
+
def youtube_open
|
23
|
+
render :file => "Knj/rhodes/youtube_open.erb"
|
24
|
+
end
|
16
25
|
end
|