knjrbfw 0.0.23 → 0.0.24
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/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
|