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.
@@ -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.02.18"
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.02.18
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-13 00:00:00 -08:00
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