nanoant-sinatra-hat 0.0.2 → 0.0.3

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 CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -1,9 +1,10 @@
1
1
  module GetText
2
2
  class Reloader < ::Rack::Reloader
3
- def initialize(app, cooldown = 10)
4
- @po = Dir.glob(File.join(File.dirname(__FILE__), '..', 'locale', '**', '*.po'))
5
- @mo = Dir.glob(File.join(File.dirname(__FILE__), '..', 'locale', '**', '*.mo'))
6
- @pot = File.join(File.dirname(__FILE__), '..', 'locale', 'rbigg.pot') # Used for locking
3
+ def initialize(app, path, cooldown=10)
4
+ @path = path
5
+ @po = Dir.glob(File.join(@path, '**', '*.po'))
6
+ @mo = Dir.glob(File.join(@path, '**', '*.mo'))
7
+ @pot = File.join(@path, 'rbigg.pot') # Used for locking
7
8
  # If there are not translations, give up
8
9
  cooldown = nil unless @po && @mo && @po.size > 0 && @mo.size > 0
9
10
  super(app, cooldown, Stat)
@@ -28,12 +29,12 @@ module GetText
28
29
  found, mstat = safe_stat(@mo.first)
29
30
  if found && mstat && mstat.mtime == stat.mtime
30
31
  require 'gettext/tools'
31
- Dir.chdir File.join(File.dirname(__FILE__), '..') do
32
- GetText.create_mofiles(:po_root => 'locale', :mo_root => 'locale')
32
+ Dir.chdir @path do
33
+ GetText.create_mofiles(:po_root => '.', :mo_root => '.')
33
34
  end
34
35
  end
35
36
  # Reload whole translation
36
- FastGettext.add_text_domain(FastGettext.text_domain, :path => File.join(File.dirname(__FILE__), '..', 'locale'))
37
+ FastGettext.add_text_domain(FastGettext.text_domain, :path => @path)
37
38
  FastGettext.current_cache = {}
38
39
  end
39
40
  end
@@ -0,0 +1,153 @@
1
+ # encoding: utf-8
2
+ require 'iconv'
3
+
4
+ class Integer
5
+ def minute
6
+ self * 60
7
+ end
8
+ alias minutes minute
9
+ def hour
10
+ minute * 60
11
+ end
12
+ alias hours hour
13
+ def day
14
+ hour * 24
15
+ end
16
+ alias days day
17
+ def week
18
+ day * 7
19
+ end
20
+ alias weeks week
21
+ def month
22
+ day * 30
23
+ end
24
+ alias months month
25
+ def year
26
+ day * 365
27
+ end
28
+ alias years year
29
+ def ago
30
+ Time.now - self
31
+ end
32
+ end
33
+
34
+ class Time
35
+ def year_start
36
+ d = (self - (month-1).months - (day-1).days - hour.hours - min.minutes - sec)
37
+ d - (d.day-1).days - d.hour.hours - d.min.minutes - d.sec
38
+ end
39
+ def month_start
40
+ self - (day-1).days - hour.hours - min.minutes - sec
41
+ end
42
+ def week_start
43
+ self - ((wday + 6) % 7).days - hour.hours - min.minutes - sec
44
+ end
45
+ def midnight
46
+ self - hour.hours - min.minutes - sec
47
+ end
48
+ def noon
49
+ midnight + 12.hours
50
+ end
51
+ end
52
+
53
+ class String
54
+ def mail_utf8_subject
55
+ # 4.2 http://tools.ietf.org/html/rfc2047
56
+ '=?UTF-8?Q?'+(self.chomp.gsub(/[^ !-<>-^`-~]/){|m| m.unpack('C*').map{|c| '=%02X' % c}.join}.gsub(/\s/, '_'))+'?='
57
+ end
58
+ def cdata
59
+ "<![CDATA[#{self.gsub(/\]\]>/,']]]]><![CDATA[>')}]]>"
60
+ end
61
+ def md5
62
+ hash = Digest::MD5.new
63
+ hash << self
64
+ hash.hexdigest
65
+ end
66
+ def sha1
67
+ hash = Digest::SHA1.new
68
+ hash << self
69
+ hash.hexdigest
70
+ end
71
+ # This is Pligg style password hash
72
+ def pwdhash(salt=nil)
73
+ salt = String.random_password.md5 if salt.nil?
74
+ salt = salt[0..8]
75
+ salt+(salt+self).sha1
76
+ end
77
+ def excerpt(chars=nil)
78
+ first = split(/(?:\n\r?){2,}/)[0] || ""
79
+ return first if chars.nil?
80
+ words = first.split(' ')
81
+ pos, count = words.inject([0, 0]) do |c, v|
82
+ c[1] + v.length < chars ? [c[0] + 1, c[1] + v.length] : c
83
+ end
84
+ words[0..pos].join(' ') + ((pos == words.size) ? '' : '…')
85
+ end
86
+ def utf8_length
87
+ unpack('U*').length
88
+ end
89
+ def pad(other, extra=0)
90
+ padding = other.utf8_length - utf8_length
91
+ padding = 0 if padding < 0
92
+ ' ' * (padding+extra) + self
93
+ end
94
+ def self.random_password(length=9, strength=0)
95
+ vowels = 'aeuy'
96
+ consonants = 'bdghjmnpqrstvz'
97
+ consonants += 'BDGHJLMNPQRSTVWXZ' if strength & 1 != 0
98
+ vowels += 'AEUY' if strength & 2 != 0
99
+ consonants += '23456789' if strength & 4 != 0
100
+ consonants += '@#$%' if strength & 8 != 0
101
+ password = '';
102
+ alt = rand(2)
103
+ length.times do
104
+ password += consonants[rand(consonants.size - 1)].chr if alt != 0
105
+ password += vowels[rand(vowels.size - 1)].chr if alt == 0
106
+ alt = 1 - alt
107
+ end
108
+ password
109
+ end
110
+ def comma_split
111
+ CSV.parse_line(gsub(/"\s+,/,'",').gsub(/,\s+"/,',"')).collect{|t| t.strip unless t.nil?}.delete_if{|t| t.nil? || t.empty?}
112
+ end
113
+ # http://gist.github.com/93045
114
+ def to_permalink
115
+ Iconv.iconv('ascii//translit//IGNORE', 'utf-8', self).first.gsub("'", "").gsub(/[^\x00-\x7F]+/, '').gsub(/[^a-zA-Z0-9-]+/, '-').gsub(/--+/, '-').gsub(/^-/, '').gsub(/-$/, '').downcase
116
+ end
117
+ end
118
+
119
+ class Array
120
+ def comma_join
121
+ map{|v| s = v.gsub!(/,/,',') || v.gsub!(/"/,'""'); s ? '"'+v+'"' : v}.join(', ')
122
+ end
123
+ end
124
+
125
+ if defined? Rack
126
+ class Rack::Request
127
+ def url(path=nil)
128
+ url = scheme + "://"
129
+ url << host
130
+ if scheme == "https" && port != 443 ||
131
+ scheme == "http" && port != 80
132
+ url << ":#{port}"
133
+ end
134
+ url << (path ? path : fullpath)
135
+ url
136
+ end
137
+ end
138
+ end
139
+
140
+ def silence_warnings
141
+ old_verbose, $VERBOSE = $VERBOSE, nil
142
+ yield
143
+ ensure
144
+ $VERBOSE = old_verbose
145
+ end
146
+
147
+ if RUBY_VERSION < "1.9.0"
148
+ class Symbol
149
+ def to_proc
150
+ proc { |obj, *args| obj.send(self, *args) }
151
+ end
152
+ end
153
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nanoant-sinatra-hat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Strzelecki
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-09 00:00:00 -07:00
12
+ date: 2009-07-10 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -26,7 +26,6 @@ files:
26
26
  - README.markdown
27
27
  - Rakefile
28
28
  - VERSION
29
- - lib/gettext/date.rb
30
29
  - lib/gettext/haml.rb
31
30
  - lib/gettext/haml_parser.rb
32
31
  - lib/gettext/ruby19_fix.rb
@@ -34,8 +33,6 @@ files:
34
33
  - lib/rack/gettext_reloader.rb
35
34
  - lib/sequel/utf8_fix.rb
36
35
  - lib/sinatra-hat.rb
37
- - lib/sinatra-hat/string_permalink.rb
38
- - lib/sinatra-hat/utils.rb
39
36
  - lib/sinatra/reloader.rb
40
37
  - lib/sinatra/template_cache.rb
41
38
  - test/sinatra-hat_test.rb
@@ -1,80 +0,0 @@
1
- class Date
2
- silence_warnings do
3
- MONTHNAMES = [nil,
4
- N_('January'),
5
- N_('February'),
6
- N_('March'),
7
- N_('April'),
8
- N_('May'),
9
- N_('June'),
10
- N_('July'),
11
- N_('August'),
12
- N_('September'),
13
- N_('October'),
14
- N_('November'),
15
- N_('December')]
16
-
17
- BASE_MONTHNAMES = [nil,
18
- N_('b|January'),
19
- N_('b|February'),
20
- N_('b|March'),
21
- N_('b|April'),
22
- N_('b|May'),
23
- N_('b|June'),
24
- N_('b|July'),
25
- N_('b|August'),
26
- N_('b|September'),
27
- N_('b|October'),
28
- N_('b|November'),
29
- N_('b|December')]
30
-
31
- DAYNAMES = [
32
- N_('Sunday'),
33
- N_('Monday'),
34
- N_('Tuesday'),
35
- N_('Wednesday'),
36
- N_('Thursday'),
37
- N_('Friday'),
38
- N_('Saturday')]
39
-
40
- ABBR_MONTHNAMES = [nil,
41
- N_('Jan'),
42
- N_('Feb'),
43
- N_('Mar'),
44
- N_('Apr'),
45
- N_('May'),
46
- N_('Jun'),
47
- N_('Jul'),
48
- N_('Aug'),
49
- N_('Sep'),
50
- N_('Oct'),
51
- N_('Nov'),
52
- N_('Dec')]
53
-
54
- ABBR_DAYNAMES = [
55
- N_('Sun'),
56
- N_('Mon'),
57
- N_('Tue'),
58
- N_('Wed'),
59
- N_('Thu'),
60
- N_('Fri'),
61
- N_('Sat')]
62
- end
63
- end
64
-
65
- class Time
66
- alias :strftime_nolocale :strftime
67
-
68
- def strftime_gettext(format)
69
- format = format.dup
70
- format.gsub!(/%a/, _(Date::ABBR_DAYNAMES[self.wday]))
71
- format.gsub!(/%A/, _(Date::DAYNAMES[self.wday]))
72
- format.gsub!(/%b/, _(Date::ABBR_MONTHNAMES[self.mon]))
73
- format.gsub!(/%B/, _(Date::MONTHNAMES[self.mon]))
74
- self.strftime_nolocale(format)
75
- end
76
-
77
- def to_s
78
- strftime_gettext _('%I:%M %p, %A, %B %d, %Y')
79
- end
80
- end
@@ -1,7 +0,0 @@
1
- # http://gist.github.com/93045
2
- require 'iconv'
3
- class String
4
- def to_permalink
5
- Iconv.iconv('ascii//translit//IGNORE', 'utf-8', self).first.gsub("'", "").gsub(/[^\x00-\x7F]+/, '').gsub(/[^a-zA-Z0-9-]+/, '-').gsub(/--+/, '-').gsub(/^-/, '').gsub(/-$/, '').downcase
6
- end
7
- end
@@ -1,164 +0,0 @@
1
- # encoding: utf-8
2
-
3
- class Integer
4
- def minute
5
- self * 60
6
- end
7
- alias minutes minute
8
- def hour
9
- minute * 60
10
- end
11
- alias hours hour
12
- def day
13
- hour * 24
14
- end
15
- alias days day
16
- def week
17
- day * 7
18
- end
19
- alias weeks week
20
- def month
21
- day * 30
22
- end
23
- alias months month
24
- def year
25
- day * 365
26
- end
27
- alias years year
28
- def ago
29
- Time.now - self
30
- end
31
- end
32
-
33
- class Time
34
- def year_start
35
- d = (self - (month-1).months - (day-1).days - hour.hours - min.minutes - sec)
36
- d - (d.day-1).days - d.hour.hours - d.min.minutes - d.sec
37
- end
38
- def month_start
39
- self - (day-1).days - hour.hours - min.minutes - sec
40
- end
41
- def week_start
42
- self - ((wday + 6) % 7).days - hour.hours - min.minutes - sec
43
- end
44
- def midnight
45
- self - hour.hours - min.minutes - sec
46
- end
47
- def noon
48
- midnight + 12.hours
49
- end
50
- def ago
51
- s = (Time.now - self).round
52
- if (m = s.div(60)) > 0
53
- if (h = m.div(60)) > 0
54
- if (d = h.div(24)) > 0
55
- "#{d} " + n_('day', 'days', d)
56
- else
57
- "#{h} " + n_('hour', 'hours', h)
58
- end
59
- else
60
- "#{m} " + n_('minute', 'minutes', m)
61
- end
62
- else
63
- "#{s} " + n_('second', 'seconds', s)
64
- end
65
- end
66
- end
67
-
68
- class String
69
- def mail_utf8_subject
70
- # 4.2 http://tools.ietf.org/html/rfc2047
71
- '=?UTF-8?Q?'+(self.chomp.gsub(/[^ !-<>-^`-~]/){|m| m.unpack('C*').map{|c| '=%02X' % c}.join}.gsub(/\s/, '_'))+'?='
72
- end
73
- def cdata
74
- "<![CDATA[#{self.gsub(/\]\]>/,']]]]><![CDATA[>')}]]>"
75
- end
76
- def md5
77
- hash = Digest::MD5.new
78
- hash << self
79
- hash.hexdigest
80
- end
81
- def sha1
82
- hash = Digest::SHA1.new
83
- hash << self
84
- hash.hexdigest
85
- end
86
- # This is Pligg style password hash
87
- def pwdhash(salt=nil)
88
- salt = String.random_password.md5 if salt.nil?
89
- salt = salt[0..8]
90
- salt+(salt+self).sha1
91
- end
92
- def excerpt(chars=nil)
93
- first = split(/(?:\n\r?){2,}/)[0] || ""
94
- return first if chars.nil?
95
- words = first.split(' ')
96
- pos, count = words.inject([0, 0]) do |c, v|
97
- c[1] + v.length < chars ? [c[0] + 1, c[1] + v.length] : c
98
- end
99
- words[0..pos].join(' ') + ((pos == words.size) ? '' : '…')
100
- end
101
- def utf8_length
102
- unpack('U*').length
103
- end
104
- def pad(other, extra=0)
105
- padding = other.utf8_length - utf8_length
106
- padding = 0 if padding < 0
107
- ' ' * (padding+extra) + self
108
- end
109
- def self.random_password(length=9, strength=0)
110
- vowels = 'aeuy'
111
- consonants = 'bdghjmnpqrstvz'
112
- consonants += 'BDGHJLMNPQRSTVWXZ' if strength & 1 != 0
113
- vowels += 'AEUY' if strength & 2 != 0
114
- consonants += '23456789' if strength & 4 != 0
115
- consonants += '@#$%' if strength & 8 != 0
116
- password = '';
117
- alt = rand(2)
118
- length.times do
119
- password += consonants[rand(consonants.size - 1)].chr if alt != 0
120
- password += vowels[rand(vowels.size - 1)].chr if alt == 0
121
- alt = 1 - alt
122
- end
123
- password
124
- end
125
- def comma_split
126
- CSV.parse_line(gsub(/"\s+,/,'",').gsub(/,\s+"/,',"')).collect{|t| t.strip unless t.nil?}.delete_if{|t| t.nil? || t.empty?}
127
- end
128
- end
129
-
130
- class Array
131
- def comma_join
132
- map{|v| s = v.gsub!(/,/,',') || v.gsub!(/"/,'""'); s ? '"'+v+'"' : v}.join(', ')
133
- end
134
- end
135
-
136
- if defined? Rack
137
- class Rack::Request
138
- def url(path=nil)
139
- url = scheme + "://"
140
- url << host
141
- if scheme == "https" && port != 443 ||
142
- scheme == "http" && port != 80
143
- url << ":#{port}"
144
- end
145
- url << (path ? path : fullpath)
146
- url
147
- end
148
- end
149
- end
150
-
151
- def silence_warnings
152
- old_verbose, $VERBOSE = $VERBOSE, nil
153
- yield
154
- ensure
155
- $VERBOSE = old_verbose
156
- end
157
-
158
- if RUBY_VERSION < "1.9.0"
159
- class Symbol
160
- def to_proc
161
- proc { |obj, *args| obj.send(self, *args) }
162
- end
163
- end
164
- end