runo 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. data/README.rdoc +1 -118
  2. data/bin/runo +4 -29
  3. data/lib/dummy.rb +0 -0
  4. metadata +12 -278
  5. data/lib/_error.rb +0 -14
  6. data/lib/_field.rb +0 -260
  7. data/lib/_i18n.rb +0 -144
  8. data/lib/_parser.rb +0 -256
  9. data/lib/_path.rb +0 -86
  10. data/lib/_storage/_storage.rb +0 -215
  11. data/lib/_storage/file.rb +0 -201
  12. data/lib/_storage/sequel.rb +0 -174
  13. data/lib/_storage/temp.rb +0 -73
  14. data/lib/_widget/action_create.rb +0 -23
  15. data/lib/_widget/action_login.rb +0 -22
  16. data/lib/_widget/action_signup.rb +0 -16
  17. data/lib/_widget/action_update.rb +0 -16
  18. data/lib/_widget/crumb.rb +0 -24
  19. data/lib/_widget/done.rb +0 -16
  20. data/lib/_widget/login.rb +0 -25
  21. data/lib/_widget/me.rb +0 -31
  22. data/lib/_widget/message.rb +0 -51
  23. data/lib/_widget/navi.rb +0 -88
  24. data/lib/_widget/submit.rb +0 -49
  25. data/lib/_widget/view_ym.rb +0 -77
  26. data/lib/_workflow/_workflow.rb +0 -89
  27. data/lib/_workflow/attachment.rb +0 -50
  28. data/lib/_workflow/blog.rb +0 -28
  29. data/lib/_workflow/contact.rb +0 -23
  30. data/lib/_workflow/forum.rb +0 -26
  31. data/lib/_workflow/register.rb +0 -39
  32. data/lib/meta/_meta.rb +0 -20
  33. data/lib/meta/group.rb +0 -19
  34. data/lib/meta/id.rb +0 -59
  35. data/lib/meta/owner.rb +0 -21
  36. data/lib/meta/timestamp.rb +0 -118
  37. data/lib/runo.rb +0 -396
  38. data/lib/scalar/checkbox.rb +0 -68
  39. data/lib/scalar/file.rb +0 -144
  40. data/lib/scalar/img.rb +0 -112
  41. data/lib/scalar/password.rb +0 -58
  42. data/lib/scalar/radio.rb +0 -47
  43. data/lib/scalar/select.rb +0 -47
  44. data/lib/scalar/text.rb +0 -38
  45. data/lib/scalar/textarea.rb +0 -35
  46. data/lib/scalar/textarea_pre.rb +0 -14
  47. data/lib/scalar/textarea_wiki.rb +0 -173
  48. data/lib/set/_set.rb +0 -196
  49. data/lib/set/dynamic.rb +0 -177
  50. data/lib/set/static.rb +0 -102
  51. data/lib/set/static_folder.rb +0 -96
  52. data/locale/en/index.po +0 -242
  53. data/locale/index.pot +0 -243
  54. data/locale/ja/index.po +0 -242
  55. data/locale/lazy_parser.rb +0 -54
  56. data/skel/config.ru +0 -27
  57. data/skel/skin/_users/00000000_frank-avatar.jpg +0 -0
  58. data/skel/skin/_users/00000000_frank-avatar_small.jpg +0 -0
  59. data/skel/skin/_users/00000000_frank.yaml +0 -12
  60. data/skel/skin/_users/00000000_root-avatar.jpg +0 -0
  61. data/skel/skin/_users/00000000_root-avatar_small.jpg +0 -0
  62. data/skel/skin/_users/00000000_root.yaml +0 -11
  63. data/skel/skin/_users/css/users.css +0 -21
  64. data/skel/skin/_users/css/users.less +0 -25
  65. data/skel/skin/_users/done.html +0 -42
  66. data/skel/skin/_users/index.html +0 -46
  67. data/skel/skin/_users/index.yaml +0 -3
  68. data/skel/skin/_users/summary.html +0 -40
  69. data/skel/skin/css/base.css +0 -93
  70. data/skel/skin/css/base.less +0 -139
  71. data/skel/skin/css/coax.css +0 -199
  72. data/skel/skin/css/coax.less +0 -244
  73. data/skel/skin/examples/blog/20091214_0001.yaml +0 -8
  74. data/skel/skin/examples/blog/20100630_0001.yaml +0 -8
  75. data/skel/skin/examples/blog/20100630_0002.yaml +0 -14
  76. data/skel/skin/examples/blog/20100701_0001.yaml +0 -8
  77. data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f.jpg +0 -0
  78. data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f_small.jpg +0 -0
  79. data/skel/skin/examples/blog/20100701_0002.yaml +0 -19
  80. data/skel/skin/examples/blog/frank/20100701_0001.yaml +0 -10
  81. data/skel/skin/examples/blog/frank/index.yaml +0 -4
  82. data/skel/skin/examples/blog/index.html +0 -51
  83. data/skel/skin/examples/blog/rss.xml +0 -18
  84. data/skel/skin/examples/contact/20100701_0001-file.txt +0 -1
  85. data/skel/skin/examples/contact/20100701_0001.yaml +0 -15
  86. data/skel/skin/examples/contact/20100701_0002.yaml +0 -8
  87. data/skel/skin/examples/contact/20100701_0003.yaml +0 -9
  88. data/skel/skin/examples/contact/index.html +0 -47
  89. data/skel/skin/examples/contact/js/contact.js +0 -13
  90. data/skel/skin/examples/contact/summary.html +0 -54
  91. data/skel/skin/examples/forum/20100701_0001.yaml +0 -41
  92. data/skel/skin/examples/forum/20100701_0002.yaml +0 -25
  93. data/skel/skin/examples/forum/index.html +0 -68
  94. data/skel/skin/examples/forum/summary.html +0 -47
  95. data/skel/skin/examples/index.html +0 -73
  96. data/skel/skin/index.html +0 -39
  97. data/skel/skin/js/base.js +0 -50
  98. data/t/locale/de/index.po +0 -19
  99. data/t/locale/en-GB/index.po +0 -25
  100. data/t/locale/ja/index.po +0 -30
  101. data/t/skin/_users/00000000_test.yaml +0 -3
  102. data/t/skin/_users/index.html +0 -13
  103. data/t/skin/foo/20091120_0001.yaml +0 -7
  104. data/t/skin/foo/bar/20091120_0001.yaml +0 -5
  105. data/t/skin/foo/bar/index.yaml +0 -5
  106. data/t/skin/foo/baz/css/baz.css +0 -1
  107. data/t/skin/foo/css/foo.css +0 -1
  108. data/t/skin/foo/index.html +0 -14
  109. data/t/skin/foo/index.yaml +0 -7
  110. data/t/skin/foo/not_css/foo.css +0 -1
  111. data/t/skin/foo/qux/index.html +0 -8
  112. data/t/skin/foo/qux/moo/index.html +0 -6
  113. data/t/skin/foo/sub-20100306_0001.yaml +0 -3
  114. data/t/skin/index.yaml +0 -3
  115. data/t/skin/t_attachment/index.html +0 -13
  116. data/t/skin/t_contact/done.html +0 -6
  117. data/t/skin/t_contact/index.html +0 -9
  118. data/t/skin/t_file/index.html +0 -16
  119. data/t/skin/t_img/index.html +0 -14
  120. data/t/skin/t_img/test.jpg +0 -0
  121. data/t/skin/t_select/index.html +0 -9
  122. data/t/skin/t_store/index.html +0 -9
  123. data/t/skin/t_summary/20100326_0001.yaml +0 -3
  124. data/t/skin/t_summary/create.html +0 -9
  125. data/t/skin/t_summary/index.html +0 -9
  126. data/t/skin/t_summary/summary.html +0 -9
  127. data/t/t.rb +0 -27
  128. data/t/test_checkbox.rb +0 -273
  129. data/t/test_field.rb +0 -330
  130. data/t/test_file.rb +0 -900
  131. data/t/test_id.rb +0 -215
  132. data/t/test_img.rb +0 -328
  133. data/t/test_meta.rb +0 -57
  134. data/t/test_parser.rb +0 -1516
  135. data/t/test_password.rb +0 -188
  136. data/t/test_radio.rb +0 -226
  137. data/t/test_role.rb +0 -249
  138. data/t/test_runo.rb +0 -768
  139. data/t/test_runo_call.rb +0 -1281
  140. data/t/test_runo_i18n.rb +0 -325
  141. data/t/test_select.rb +0 -182
  142. data/t/test_set_complex.rb +0 -527
  143. data/t/test_set_dynamic.rb +0 -1504
  144. data/t/test_set_folder.rb +0 -515
  145. data/t/test_set_permit.rb +0 -246
  146. data/t/test_set_static.rb +0 -468
  147. data/t/test_storage.rb +0 -915
  148. data/t/test_text.rb +0 -125
  149. data/t/test_textarea.rb +0 -138
  150. data/t/test_timestamp.rb +0 -473
  151. data/t/test_workflow.rb +0 -367
@@ -1,177 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- # Author:: Akira FUNAI
4
- # Copyright:: Copyright (c) 2009 Akira FUNAI
5
-
6
- class Runo::Set::Dynamic < Runo::Field
7
-
8
- include Runo::Set
9
-
10
- attr_reader :storage, :workflow
11
-
12
- def initialize(meta = {})
13
- @meta = meta
14
- @storage = Runo::Storage.instance self
15
- @workflow = Runo::Workflow.instance self
16
- @meta = @workflow.class.const_get(:DEFAULT_META).merge @meta
17
- @item_object = {}
18
-
19
- my[:item] ||= {
20
- 'default' => {:item => {}}
21
- }
22
- my[:item].each {|type, item_meta|
23
- item_meta[:item] = @workflow.default_sub_items.merge item_meta[:item]
24
- }
25
-
26
- my[:p_size] = meta[:max] if meta[:max]
27
- my[:preview] = :optional if Array(meta[:tokens]).include?('may_preview')
28
- my[:preview] = :mandatory if Array(meta[:tokens]).include?('should_preview')
29
- my[:order] = 'id' if Array(meta[:tokens]).include? 'asc'
30
- my[:order] = '-id' if Array(meta[:tokens]).include? 'desc'
31
- end
32
-
33
- def meta_href
34
- "#{Runo.uri}#{my[:path]}/"
35
- end
36
-
37
- def meta_tid
38
- unless @meta[:tid]
39
- t = Time.now
40
- @meta[:tid] = t.strftime('%m%d%H%M%S.') + t.usec.to_s
41
- end
42
- @meta[:tid]
43
- end
44
-
45
- def get(arg = {})
46
- if !arg[:conds].is_a?(::Hash) || arg[:conds].empty?
47
- arg[:conds] = my[:conds].is_a?(::Hash) ? my[:conds].dup : {}
48
- end
49
- super
50
- end
51
-
52
- def commit(type = :temp)
53
- @workflow.before_commit
54
-
55
- items = pending_items
56
- items.each {|id, item|
57
- item.commit(:temp) || next
58
- case type
59
- when :temp
60
- store(id, item) if @storage.is_a? Runo::Storage::Temp
61
- when :persistent
62
- store(id, item)
63
- item.commit :persistent
64
- end
65
- }
66
- if valid?
67
- @result = (@action == :update) ? items : @action
68
- @action = nil if type == :persistent
69
- @workflow.after_commit
70
- self
71
- end
72
- end
73
-
74
- private
75
-
76
- def _val
77
- @storage.val
78
- end
79
-
80
- def _get(arg)
81
- (@workflow._get(arg) || super) unless @workflow._hide? arg
82
- end
83
-
84
- def _get_by_tmpl(arg, tmpl = '')
85
- if arg[:action] == :read || self != Runo.base
86
- super
87
- else
88
- base_path = Runo.transaction[my[:tid]].is_a?(Runo::Field) ? nil : my[:base_path]
89
- action = "#{base_path}/#{my[:tid]}/update.html"
90
- <<_html
91
- <form id="form_#{my[:name]}" method="post" enctype="multipart/form-data" action="#{action}">
92
- <input name="_token" type="hidden" value="#{Runo.token}" />
93
- #{super}</form>
94
- _html
95
- end
96
- end
97
-
98
- def _get_by_self_reference(arg)
99
- super unless @workflow._hide?(arg)
100
- end
101
-
102
- def permit_get?(arg)
103
- permit?(arg[:action]) || collect_item(arg[:conds] || {}).all? {|item|
104
- item[:id][Runo::REX::ID_NEW] ?
105
- item.permit?(:create) :
106
- item.send(:permit_get?, :action => arg[:action])
107
- }
108
- end
109
-
110
- def _post(action, v = nil)
111
- if action == :create
112
- @storage.build({})
113
- @item_object.clear
114
- end
115
-
116
- case action
117
- when :create, :update
118
- v.keys.sort_by {|id| id.to_s }.each {|id|
119
- next unless id.is_a? ::String
120
-
121
- v[id][:action] ||= id[Runo::REX::ID_NEW] ? :create : :update
122
- item_instance(id).post(v[id][:action], v[id])
123
- }
124
- when :load, :load_default
125
- @storage.build v
126
- end
127
-
128
- !pending_items.empty? || action == :delete
129
- end
130
-
131
- def store(id, item)
132
- case item.action
133
- when :create
134
- return if id[Runo::REX::ID] || item.empty?
135
- new_id = @storage.store(:new_id, item.val)
136
- item[:id] = new_id
137
- @item_object.delete id
138
- @item_object[item[:id]] = item
139
- when :update, nil
140
- new_id = @storage.store(item[:id], item.val)
141
- if new_id != item[:id]
142
- @item_object[new_id] = @item_object.delete item[:id]
143
- item[:id] = new_id
144
- end
145
- when :delete
146
- @storage.delete id
147
- @item_object.delete id
148
- end
149
- end
150
-
151
- def collect_item(conds = {}, &block)
152
- @storage.select(conds).collect {|id|
153
- item = item_instance id
154
- block ? block.call(item) : item
155
- }
156
- end
157
-
158
- def item_instance(id, type = 'default')
159
- unless @item_object[id]
160
- item_meta = my[:item][type] || my[:item]['default']
161
- @item_object[id] = Runo::Field.instance(
162
- item_meta.merge(
163
- :id => id,
164
- :parent => self,
165
- :klass => 'set-static'
166
- )
167
- )
168
- if id[Runo::REX::ID_NEW]
169
- @item_object[id].load_default
170
- else
171
- @item_object[id].load @storage.val(id)
172
- end
173
- end
174
- @item_object[id]
175
- end
176
-
177
- end
@@ -1,102 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- # Author:: Akira FUNAI
4
- # Copyright:: Copyright (c) 2009 Akira FUNAI
5
-
6
- require 'strscan'
7
-
8
- class Runo::Set::Static < Runo::Field
9
-
10
- include Runo::Set
11
-
12
- def initialize(meta = {})
13
- @meta = meta
14
- @meta.merge!(Runo::Parser.parse_html(meta[:html])) if meta[:html]
15
- @meta[:item] ||= {}
16
- @item_object = {}
17
- end
18
-
19
- def meta_href
20
- my[:sd] ? "#{my[:sd][:href]}id=#{my[:id]}/" : "#{Runo.uri}#{my[:dir]}/"
21
- end
22
-
23
- def commit(type = :temp)
24
- items = pending_items
25
- items.each {|id, item| item.commit type }
26
- if valid?
27
- @result = (@action == :update) ? items : @action
28
- @action = nil if type == :persistent
29
- self
30
- end
31
- end
32
-
33
- private
34
-
35
- def _val
36
- inject({}) {|v, item|
37
- v[item[:id]] = item.val unless item.empty?
38
- v
39
- }
40
- end
41
-
42
- def _g_a_update(arg)
43
- if arg[:orig_action] != :read
44
- '<a>'
45
- elsif permit_get?(:action => :update)
46
- "<a href=\"#{_g_uri_update arg}\">"
47
- elsif permit? :delete
48
- "<a href=\"#{_g_uri_delete arg}\">"
49
- else
50
- '<a>'
51
- end
52
- end
53
-
54
- def _g_uri_update(arg)
55
- "#{my[:parent][:path]}/#{Runo::Path::path_of :id => my[:id]}update.html"
56
- end
57
-
58
- def _g_uri_delete(arg)
59
- "#{my[:parent][:path]}/#{Runo::Path::path_of :id => my[:id]}preview_delete.html"
60
- end
61
-
62
- def _g_uri_detail(arg)
63
- "#{my[:parent][:path]}/#{Runo::Path::path_of :id => my[:id]}read_detail.html"
64
- end
65
-
66
- def _g_hidden(arg)
67
- if arg[:orig_action] == :preview
68
- action = my[:id][Runo::REX::ID_NEW] ? :create : arg[:sub_action]
69
- <<_html.chomp
70
- <input type="hidden" name="#{my[:short_name]}.action" value="#{action}" />
71
- _html
72
- end
73
- end
74
-
75
- def _post(action, v = {})
76
- each {|item|
77
- id = item[:id]
78
- item_action = (item.is_a?(Runo::Set) && action == :create) ? :update : action
79
- item_action = v[id][:action] if v[id].is_a?(::Hash) && v[id][:action]
80
- if [:load_default, :delete].include?(item_action) || v.key?(id) || item(id).is_a?(Runo::Meta)
81
- item.post(item_action, v[id])
82
- end
83
- }
84
- !pending_items.empty? || action == :delete
85
- end
86
-
87
- def collect_item(conds = {}, &block)
88
- items = my[:item].keys
89
- items &= Array(conds[:id]) if conds[:id] # select item(s) by id
90
- items.sort.collect {|id|
91
- item = @item_object[id] ||= Runo::Field.instance(
92
- my[:item][id].merge(:id => id, :parent => self)
93
- )
94
- block ? block.call(item) : item
95
- }
96
- end
97
-
98
- def val_cast(v)
99
- v.is_a?(::Hash) ? v : {:self => v}
100
- end
101
-
102
- end
@@ -1,96 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- # Author:: Akira FUNAI
4
- # Copyright:: Copyright (c) 2009 Akira FUNAI
5
-
6
- class Runo::Set::Static::Folder < Runo::Set::Static
7
-
8
- def self.root
9
- self.new(:id => '')
10
- end
11
-
12
- def initialize(meta = {})
13
- meta[:dir] = meta[:parent] ? ::File.join(meta[:parent][:dir], meta[:id]) : meta[:id]
14
- meta[:html] = load_html(meta[:dir], meta[:parent])
15
- super
16
-
17
- ::Dir.glob(::File.join(Runo['skin_dir'], my[:html_dir].to_s, '*.html')).each {|f|
18
- action = ::File.basename(f, '.*').intern
19
- merge_tmpl(@meta, Runo::Parser.parse_html(::File.read(f), action)) if action != :index
20
- }
21
- ::Dir.glob(::File.join(Runo['skin_dir'], my[:html_dir].to_s, '*.xml')).each {|f|
22
- action = ::File.basename(f, '.*').intern
23
- merge_tmpl(@meta, Runo::Parser.parse_xml(::File.read(f), action)) if action != :index
24
- }
25
-
26
- @meta[:tmpl].values.each {|tmpl|
27
- tmpl.sub!(/<head>([\s\n]*)/i) {
28
- "#{$&}<base href=\"@(href)\" />#{$1}"
29
- }
30
- } if @meta[:tmpl]
31
-
32
- @meta.merge! load_yaml(my[:dir], my[:parent])
33
- end
34
-
35
- def meta_dir
36
- @meta[:dir]
37
- end
38
-
39
- def meta_html_dir
40
- if ::File.readable? ::File.join(Runo['skin_dir'], my[:dir], 'index.html')
41
- my[:dir]
42
- elsif my[:parent]
43
- my[:parent][:html_dir]
44
- end
45
- end
46
-
47
- private
48
-
49
- def _get(arg)
50
- if arg['main'] && action_tmpl = my[:tmpl][arg['main'][:action]]
51
- _get_by_tmpl(arg, action_tmpl)
52
- else
53
- super
54
- end
55
- end
56
-
57
- def collect_item(conds = {}, &block)
58
- if conds[:id] =~ Runo::REX::ID && sd = item('main')
59
- return sd.instance_eval { collect_item(conds, &block) }
60
- elsif (
61
- conds[:id] =~ /\A\w+\z/ &&
62
- ::File.directory?(::File.join(Runo['skin_dir'], my[:dir], conds[:id]))
63
- )
64
- my[:item][conds[:id]] = {:klass => 'set-static-folder'}
65
- end
66
- super
67
- end
68
-
69
- def load_html(dir, parent, action = :index)
70
- html_file = ::File.join Runo['skin_dir'], dir, "#{action}.html"
71
- if ::File.exists? html_file
72
- ::File.read html_file
73
- elsif parent
74
- parent[:html]
75
- end
76
- end
77
-
78
- def load_yaml(dir, parent)
79
- yaml_file = ::File.join(Runo['skin_dir'], dir, 'index.yaml')
80
- meta = ::File.exists?(yaml_file) ? YAML.load_file(yaml_file) : {}
81
- meta.keys.inject({}) {|m, k|
82
- m[k.intern] = meta[k]
83
- m
84
- }
85
- end
86
-
87
- def merge_tmpl(meta, action_meta)
88
- meta[:tmpl].merge! action_meta[:tmpl]
89
- meta[:item].each {|id, val|
90
- merge_tmpl(val, action_meta[:item][id]) if action_meta[:item][id]
91
- } if action_meta[:item]
92
- meta
93
- end
94
-
95
- end
96
-
@@ -1,242 +0,0 @@
1
- # Copyright (C) 2009-2010 Akira FUNAI
2
- # This file is distributed under the same license as the Runo package.
3
- # Akira FUNAI <akira@funai.com>, 2010.
4
- #
5
- msgid ""
6
- msgstr ""
7
- "Project-Id-Version: Runo 0.1\n"
8
- "POT-Creation-Date: 2010-05-09 17:07+0900\n"
9
- "PO-Revision-Date: 2010-06-29 22:51+0900\n"
10
- "Last-Translator: Akira FUNAI <akira@funai.com>\n"
11
- "Language-Team: English <en@translate.freefriends.org>\n"
12
- "MIME-Version: 1.0\n"
13
- "Content-Type: text/plain; charset=UTF-8\n"
14
- "Content-Transfer-Encoding: 8bit\n"
15
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
-
17
- #: lib/_widget/action_signup.rb:12
18
- msgid "signup"
19
- msgstr "signup"
20
-
21
- #: lib/_workflow/_workflow.rb:11
22
- msgid "item"
23
- msgid_plural "items"
24
- msgstr[0] "item"
25
- msgstr[1] "items"
26
-
27
- #: lib/_workflow/_workflow.rb:41
28
- msgid "admin"
29
- msgstr "admin"
30
-
31
- #: lib/_workflow/_workflow.rb:41
32
- msgid "group"
33
- msgstr "group"
34
-
35
- #: lib/_workflow/_workflow.rb:41
36
- msgid "owner"
37
- msgstr "owner"
38
-
39
- #: lib/_workflow/_workflow.rb:41
40
- msgid "user"
41
- msgid_plural "users"
42
- msgstr[0] "user"
43
- msgstr[1] "users"
44
-
45
- #: lib/_workflow/_workflow.rb:41
46
- msgid "none"
47
- msgstr "none"
48
-
49
- #: lib/_workflow/_workflow.rb:94 lib/_workflow/attachment.rb:32
50
- msgid "create"
51
- msgstr "create"
52
-
53
- #: lib/_workflow/_workflow.rb:94 lib/_workflow/attachment.rb:32
54
- msgid "update"
55
- msgstr "update"
56
-
57
- #: lib/_workflow/_workflow.rb:94 lib/_workflow/attachment.rb:32
58
- msgid "delete"
59
- msgstr "delete"
60
-
61
- #: lib/_workflow/_workflow.rb:99
62
- msgid "preview"
63
- msgstr "preview"
64
-
65
- #: lib/_workflow/_workflow.rb:112
66
- msgid "delete..."
67
- msgstr "delete..."
68
-
69
- #: lib/_workflow/attachment.rb:10
70
- msgid "attachment"
71
- msgid_plural "attachments"
72
- msgstr[0] "attachment"
73
- msgstr[1] "attachments"
74
-
75
- #: lib/_workflow/blog.rb:11
76
- msgid "entry"
77
- msgid_plural "entries"
78
- msgstr[0] "entry"
79
- msgstr[1] "entries"
80
-
81
- #: lib/_workflow/contact.rb:11
82
- msgid "answer"
83
- msgid_plural "answers"
84
- msgstr[0] "answer"
85
- msgstr[1] "answers"
86
-
87
- #: lib/meta/id.rb:23
88
- msgid "malformatted id"
89
- msgstr "malformatted id"
90
-
91
- #: lib/meta/id.rb:30
92
- msgid "duplicate id: %{id}"
93
- msgstr "duplicate id: %{id}"
94
-
95
- #: lib/meta/timestamp.rb:44
96
- msgid "%Y-%m-%dT%H:%M:%S"
97
- msgstr "%Y-%m-%d %H:%M:%S"
98
-
99
- #: lib/meta/timestamp.rb:63
100
- msgid "update the timestamp"
101
- msgstr "update the timestamp"
102
-
103
- #: lib/scalar/checkbox.rb:22 lib/scalar/file.rb:55 lib/scalar/radio.rb:15
104
- #: lib/scalar/select.rb:15 lib/scalar/text.rb:17 lib/scalar/textarea.rb:12
105
- msgid "mandatory"
106
- msgstr "mandatory"
107
-
108
- #: lib/scalar/checkbox.rb:24 lib/scalar/radio.rb:17 lib/scalar/select.rb:19
109
- msgid "no such option"
110
- msgstr "no such option"
111
-
112
- #: lib/scalar/file.rb:53
113
- msgid "wrong file type: should be %{types}"
114
- msgstr "wrong file type: should be %{types}"
115
-
116
- #: lib/scalar/file.rb:53
117
- msgid "too large: %{max} bytes maximum"
118
- msgstr "too large: %{max} bytes maximum"
119
-
120
- #: lib/scalar/file.rb:57
121
- msgid "too small: %{min} bytes minimum"
122
- msgstr "too small: %{min} bytes minimum"
123
-
124
- #: lib/scalar/select.rb:31
125
- msgid "please select"
126
- msgstr "please select"
127
-
128
- #: lib/scalar/text.rb:15 lib/scalar/textarea.rb:10
129
- msgid "too long: %{max} characters maximum"
130
- msgstr "too long: %{max} characters maximum"
131
-
132
- #: lib/scalar/text.rb:19 lib/scalar/textarea.rb:14
133
- msgid "too short: %{min} characters minimum"
134
- msgstr "too short: %{min} characters minimum"
135
-
136
- #: lib/set/dynamic.rb:112
137
- msgid "login"
138
- msgstr "login"
139
-
140
- #: lib/set/dynamic.rb:118
141
- msgid "done."
142
- msgstr "done."
143
-
144
- #: lib/set/dynamic.rb:125
145
- msgid "please login."
146
- msgstr "please login."
147
-
148
- #: lib/set/dynamic.rb:127
149
- msgid "please confirm."
150
- msgstr "please confirm."
151
-
152
- #: lib/set/dynamic.rb:129
153
- msgid "malformed input."
154
- msgstr "malformed input."
155
-
156
- #: lib/set/dynamic.rb:134
157
- msgid "%{result} %{n} %{item}."
158
- msgstr "%{result} %{n} %{item}."
159
-
160
- #: lib/set/dynamic.rb:136
161
- msgid "created"
162
- msgstr "created"
163
-
164
- #: lib/set/dynamic.rb:137
165
- msgid "updated"
166
- msgstr "updated"
167
-
168
- #: lib/set/dynamic.rb:138
169
- msgid "deleted"
170
- msgstr "deleted"
171
-
172
- #: lib/set/dynamic.rb:161
173
- msgid "create new %{item}..."
174
- msgstr "create new %{item}..."
175
-
176
- #: lib/set/dynamic.rb:181
177
- msgid "prev"
178
- msgstr "prev"
179
-
180
- #: lib/set/dynamic.rb:186
181
- msgid "next"
182
- msgstr "next"
183
-
184
- #: lib/set/dynamic.rb:294
185
- msgid "%{year}/%{month}"
186
- msgstr "%{year}/%{month}"
187
-
188
- #: lib/set/dynamic.rb:301
189
- msgid "Jan"
190
- msgstr "Jan"
191
-
192
- #: lib/set/dynamic.rb:301
193
- msgid "Feb"
194
- msgstr "Feb"
195
-
196
- #: lib/set/dynamic.rb:301
197
- msgid "Mar"
198
- msgstr "Mar"
199
-
200
- #: lib/set/dynamic.rb:301
201
- msgid "Apr"
202
- msgstr "Apr"
203
-
204
- #: lib/set/dynamic.rb:301
205
- msgid "May"
206
- msgstr "May"
207
-
208
- #: lib/set/dynamic.rb:301
209
- msgid "Jun"
210
- msgstr "Jun"
211
-
212
- #: lib/set/dynamic.rb:301
213
- msgid "Jul"
214
- msgstr "Jul"
215
-
216
- #: lib/set/dynamic.rb:301
217
- msgid "Aug"
218
- msgstr "Aug"
219
-
220
- #: lib/set/dynamic.rb:301
221
- msgid "Sep"
222
- msgstr "Sep"
223
-
224
- #: lib/set/dynamic.rb:301
225
- msgid "Oct"
226
- msgstr "Oct"
227
-
228
- #: lib/set/dynamic.rb:301
229
- msgid "Nov"
230
- msgstr "Nov"
231
-
232
- #: lib/set/dynamic.rb:301
233
- msgid "Dec"
234
- msgstr "Dec"
235
-
236
- #: lib/set/static.rb:40
237
- msgid "update..."
238
- msgstr "update..."
239
-
240
- #: lib/set/static_folder.rb:56
241
- msgid "logout"
242
- msgstr "logout"