manveru-makura 2009.02.18 → 2009.03.01
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/lib/makura/plugin/localize.rb +68 -0
- data/makura.gemspec +3 -2
- metadata +4 -3
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module Makura
|
|
2
|
+
module Plugin
|
|
3
|
+
# Automatically store/retrieve values for different languages.
|
|
4
|
+
# Useful especially if combined with the locale gem.
|
|
5
|
+
#
|
|
6
|
+
# Default language is 'en'.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
#
|
|
10
|
+
# class Page
|
|
11
|
+
# include Makura::Model
|
|
12
|
+
#
|
|
13
|
+
# plugin :localize
|
|
14
|
+
# localized :title, :text
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
# page = Page.new
|
|
18
|
+
# page.title = 'english title'
|
|
19
|
+
# page.title # => 'english title'
|
|
20
|
+
#
|
|
21
|
+
# page.language = 'de'
|
|
22
|
+
# page.title # => nil
|
|
23
|
+
# page.title = 'deutscher titel'
|
|
24
|
+
# page.title # => 'deutscher titel'
|
|
25
|
+
#
|
|
26
|
+
# page.language = 'en'
|
|
27
|
+
# page.title # => 'english title'
|
|
28
|
+
module Localize
|
|
29
|
+
LOCALIZE_GET = '
|
|
30
|
+
def %key%
|
|
31
|
+
raise(ArgumentError, "No language set") unless language
|
|
32
|
+
self["%key%_#{language}"] || self["%key%_#{self.class.default_language}"]
|
|
33
|
+
end'.strip
|
|
34
|
+
|
|
35
|
+
LOCALIZE_SET = '
|
|
36
|
+
def %key%=(data)
|
|
37
|
+
raise(ArgumentError, "No language set") unless language
|
|
38
|
+
self["%key%_#{language}"] = data
|
|
39
|
+
end'.strip
|
|
40
|
+
|
|
41
|
+
module SingletonMethods
|
|
42
|
+
def localized(*keys)
|
|
43
|
+
keys.each do |key|
|
|
44
|
+
key = key.to_s
|
|
45
|
+
class_eval(LOCALIZE_GET.gsub('%key%', key))
|
|
46
|
+
class_eval(LOCALIZE_SET.gsub('%key%', key))
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def default_language=(dl)
|
|
51
|
+
@default_language = dl
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def default_language
|
|
55
|
+
@default_language ||= 'en'
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
module InstanceMethods
|
|
60
|
+
attr_writer :language
|
|
61
|
+
|
|
62
|
+
def language
|
|
63
|
+
@language || self.class.default_language
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
data/makura.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = "makura"
|
|
3
|
-
s.version = "2009.
|
|
3
|
+
s.version = "2009.03.01"
|
|
4
4
|
|
|
5
5
|
s.summary = "Ruby wrapper around the CouchDB REST API."
|
|
6
6
|
s.description = "Ruby wrapper around the CouchDB REST API."
|
|
@@ -26,16 +26,17 @@ Gem::Specification.new do |s|
|
|
|
26
26
|
"example/couch/map/post_all.js",
|
|
27
27
|
"example/couch/map/post_comments.js",
|
|
28
28
|
"example/couch/reduce/sum_length.js",
|
|
29
|
+
"lib/makura.rb",
|
|
29
30
|
"lib/makura/database.rb",
|
|
30
31
|
"lib/makura/design.rb",
|
|
31
32
|
"lib/makura/error.rb",
|
|
32
33
|
"lib/makura/http_methods.rb",
|
|
33
34
|
"lib/makura/layout.rb",
|
|
34
35
|
"lib/makura/model.rb",
|
|
36
|
+
"lib/makura/plugin/localize.rb",
|
|
35
37
|
"lib/makura/plugin/pager.rb",
|
|
36
38
|
"lib/makura/server.rb",
|
|
37
39
|
"lib/makura/uuid_cache.rb",
|
|
38
|
-
"lib/makura.rb",
|
|
39
40
|
"makura.gemspec"
|
|
40
41
|
]
|
|
41
42
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: manveru-makura
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2009.
|
|
4
|
+
version: 2009.03.01
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael 'manveru' Fellinger
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-02-
|
|
12
|
+
date: 2009-02-25 00:00:00 -08:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -50,16 +50,17 @@ files:
|
|
|
50
50
|
- example/couch/map/post_all.js
|
|
51
51
|
- example/couch/map/post_comments.js
|
|
52
52
|
- example/couch/reduce/sum_length.js
|
|
53
|
+
- lib/makura.rb
|
|
53
54
|
- lib/makura/database.rb
|
|
54
55
|
- lib/makura/design.rb
|
|
55
56
|
- lib/makura/error.rb
|
|
56
57
|
- lib/makura/http_methods.rb
|
|
57
58
|
- lib/makura/layout.rb
|
|
58
59
|
- lib/makura/model.rb
|
|
60
|
+
- lib/makura/plugin/localize.rb
|
|
59
61
|
- lib/makura/plugin/pager.rb
|
|
60
62
|
- lib/makura/server.rb
|
|
61
63
|
- lib/makura/uuid_cache.rb
|
|
62
|
-
- lib/makura.rb
|
|
63
64
|
- makura.gemspec
|
|
64
65
|
has_rdoc: true
|
|
65
66
|
homepage: http://github.com/manveru/makura
|