zen 0.1a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (338) hide show
  1. data/LICENSE +19 -0
  2. data/MANIFEST +337 -0
  3. data/README.textile +42 -0
  4. data/Rakefile +6 -0
  5. data/bin/zen +9 -0
  6. data/doc/Categories.html +93 -0
  7. data/doc/Categories/Controllers.html +93 -0
  8. data/doc/Categories/Controllers/Categories.html +995 -0
  9. data/doc/Categories/Controllers/CategoryGroups.html +878 -0
  10. data/doc/Categories/Models.html +97 -0
  11. data/doc/Categories/Models/Category.html +269 -0
  12. data/doc/Categories/Models/CategoryGroup.html +231 -0
  13. data/doc/Comments.html +93 -0
  14. data/doc/Comments/Controllers.html +93 -0
  15. data/doc/Comments/Controllers/Comments.html +797 -0
  16. data/doc/Comments/Controllers/CommentsForm.html +487 -0
  17. data/doc/Comments/Liquid.html +93 -0
  18. data/doc/Comments/Liquid/CommentForm.html +522 -0
  19. data/doc/Comments/Liquid/Comments.html +543 -0
  20. data/doc/Comments/Models.html +95 -0
  21. data/doc/Comments/Models/Comment.html +260 -0
  22. data/doc/CustomFields.html +93 -0
  23. data/doc/CustomFields/Controllers.html +93 -0
  24. data/doc/CustomFields/Controllers/CustomFieldGroups.html +902 -0
  25. data/doc/CustomFields/Controllers/CustomFields.html +974 -0
  26. data/doc/CustomFields/Models.html +97 -0
  27. data/doc/CustomFields/Models/CustomField.html +272 -0
  28. data/doc/CustomFields/Models/CustomFieldGroup.html +259 -0
  29. data/doc/CustomFields/Models/CustomFieldValue.html +154 -0
  30. data/doc/Ramaze.html +93 -0
  31. data/doc/Ramaze/Helper.html +93 -0
  32. data/doc/Ramaze/Helper/ACL.html +531 -0
  33. data/doc/Ramaze/Helper/Asset.html +617 -0
  34. data/doc/Ramaze/Helper/Breadcrumb.html +411 -0
  35. data/doc/Ramaze/Helper/Common.html +738 -0
  36. data/doc/Sections.html +93 -0
  37. data/doc/Sections/Controllers.html +93 -0
  38. data/doc/Sections/Controllers/SectionEntries.html +1100 -0
  39. data/doc/Sections/Controllers/Sections.html +953 -0
  40. data/doc/Sections/Liquid.html +93 -0
  41. data/doc/Sections/Liquid/SectionEntries.html +674 -0
  42. data/doc/Sections/Liquid/Sections.html +494 -0
  43. data/doc/Sections/Models.html +97 -0
  44. data/doc/Sections/Models/Section.html +272 -0
  45. data/doc/Sections/Models/SectionEntry.html +264 -0
  46. data/doc/Sequel.html +91 -0
  47. data/doc/Sequel/Model.html +243 -0
  48. data/doc/Settings.html +93 -0
  49. data/doc/Settings/Controllers.html +91 -0
  50. data/doc/Settings/Controllers/Settings.html +565 -0
  51. data/doc/Settings/Liquid.html +91 -0
  52. data/doc/Settings/Liquid/Setting.html +426 -0
  53. data/doc/Settings/Models.html +95 -0
  54. data/doc/Settings/Models/Setting.html +293 -0
  55. data/doc/Users.html +93 -0
  56. data/doc/Users/Controllers.html +93 -0
  57. data/doc/Users/Controllers/AccessRules.html +904 -0
  58. data/doc/Users/Controllers/UserGroups.html +879 -0
  59. data/doc/Users/Controllers/Users.html +1124 -0
  60. data/doc/Users/Liquid.html +93 -0
  61. data/doc/Users/Liquid/User.html +480 -0
  62. data/doc/Users/Liquid/Users.html +495 -0
  63. data/doc/Users/Models.html +97 -0
  64. data/doc/Users/Models/AccessRule.html +257 -0
  65. data/doc/Users/Models/User.html +649 -0
  66. data/doc/Users/Models/UserGroup.html +267 -0
  67. data/doc/Zen.html +391 -0
  68. data/doc/Zen/Bin.html +113 -0
  69. data/doc/Zen/Bin/Base.html +727 -0
  70. data/doc/Zen/Controllers.html +115 -0
  71. data/doc/Zen/Controllers/AdminController.html +298 -0
  72. data/doc/Zen/Controllers/BaseController.html +272 -0
  73. data/doc/Zen/Controllers/FrontendController.html +164 -0
  74. data/doc/Zen/Controllers/MainController.html +421 -0
  75. data/doc/Zen/Database.html +498 -0
  76. data/doc/Zen/Language.html +660 -0
  77. data/doc/Zen/Liquid.html +117 -0
  78. data/doc/Zen/Liquid/ControllerBehavior.html +448 -0
  79. data/doc/Zen/Liquid/General.html +444 -0
  80. data/doc/Zen/Liquid/Redirect.html +435 -0
  81. data/doc/Zen/Liquid/Strip.html +447 -0
  82. data/doc/Zen/Logger.html +393 -0
  83. data/doc/Zen/Package.html +909 -0
  84. data/doc/_index.html +724 -0
  85. data/doc/class_list.html +36 -0
  86. data/doc/css/common.css +1 -0
  87. data/doc/css/full_list.css +53 -0
  88. data/doc/css/style.css +310 -0
  89. data/doc/file.README.html +86 -0
  90. data/doc/file_list.html +38 -0
  91. data/doc/frames.html +13 -0
  92. data/doc/index.html +86 -0
  93. data/doc/js/app.js +203 -0
  94. data/doc/js/full_list.js +149 -0
  95. data/doc/js/jquery.js +154 -0
  96. data/doc/method_list.html +1139 -0
  97. data/doc/top-level-namespace.html +88 -0
  98. data/lib/zen.rb +77 -0
  99. data/lib/zen/base/database.rb +105 -0
  100. data/lib/zen/base/language.rb +132 -0
  101. data/lib/zen/base/logger.rb +54 -0
  102. data/lib/zen/base/package.rb +233 -0
  103. data/lib/zen/base/version.rb +11 -0
  104. data/lib/zen/bin/zen_binary.rb +173 -0
  105. data/lib/zen/controller/admin_controller.rb +60 -0
  106. data/lib/zen/controller/base_controller.rb +39 -0
  107. data/lib/zen/controller/frontend_controller.rb +16 -0
  108. data/lib/zen/controller/main_controller.rb +93 -0
  109. data/lib/zen/helper/acl.rb +124 -0
  110. data/lib/zen/helper/asset.rb +104 -0
  111. data/lib/zen/helper/breadcrumb.rb +71 -0
  112. data/lib/zen/helper/common.rb +157 -0
  113. data/lib/zen/language/en/zen_general.rb +21 -0
  114. data/lib/zen/language/en/zen_models.rb +39 -0
  115. data/lib/zen/layout/admin.xhtml +72 -0
  116. data/lib/zen/layout/login.xhtml +44 -0
  117. data/lib/zen/liquid/controller_behavior.rb +55 -0
  118. data/lib/zen/liquid/general.rb +69 -0
  119. data/lib/zen/liquid/redirect.rb +47 -0
  120. data/lib/zen/liquid/strip.rb +58 -0
  121. data/lib/zen/model/methods.rb +26 -0
  122. data/lib/zen/model/settings.rb +27 -0
  123. data/lib/zen/packages/categories/LICENSE +19 -0
  124. data/lib/zen/packages/categories/README.textile +0 -0
  125. data/lib/zen/packages/categories/lib/categories.rb +24 -0
  126. data/lib/zen/packages/categories/lib/categories/controller/categories.rb +202 -0
  127. data/lib/zen/packages/categories/lib/categories/controller/category_groups.rb +173 -0
  128. data/lib/zen/packages/categories/lib/categories/language/en/categories.rb +38 -0
  129. data/lib/zen/packages/categories/lib/categories/language/en/category_groups.rb +37 -0
  130. data/lib/zen/packages/categories/lib/categories/model/category.rb +42 -0
  131. data/lib/zen/packages/categories/lib/categories/model/category_group.rb +29 -0
  132. data/lib/zen/packages/categories/lib/categories/view/admin/categories/edit.xhtml +7 -0
  133. data/lib/zen/packages/categories/lib/categories/view/admin/categories/form.xhtml +36 -0
  134. data/lib/zen/packages/categories/lib/categories/view/admin/categories/index.xhtml +70 -0
  135. data/lib/zen/packages/categories/lib/categories/view/admin/categories/new.xhtml +7 -0
  136. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/edit.xhtml +7 -0
  137. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/form.xhtml +18 -0
  138. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/index.xhtml +72 -0
  139. data/lib/zen/packages/categories/lib/categories/view/admin/category_groups/new.xhtml +7 -0
  140. data/lib/zen/packages/categories/migrations/.gitkeep +0 -0
  141. data/lib/zen/packages/categories/migrations/1295282303_create_schema.rb +40 -0
  142. data/lib/zen/packages/comments/LICENSE +19 -0
  143. data/lib/zen/packages/comments/README.textile +0 -0
  144. data/lib/zen/packages/comments/lib/comments.rb +26 -0
  145. data/lib/zen/packages/comments/lib/comments/controller/comments.rb +157 -0
  146. data/lib/zen/packages/comments/lib/comments/controller/comments_form.rb +135 -0
  147. data/lib/zen/packages/comments/lib/comments/language/en/comments.rb +52 -0
  148. data/lib/zen/packages/comments/lib/comments/liquid/comment_form.rb +97 -0
  149. data/lib/zen/packages/comments/lib/comments/liquid/comments.rb +115 -0
  150. data/lib/zen/packages/comments/lib/comments/model/comment.rb +34 -0
  151. data/lib/zen/packages/comments/lib/comments/view/admin/comments/edit.xhtml +7 -0
  152. data/lib/zen/packages/comments/lib/comments/view/admin/comments/form.xhtml +31 -0
  153. data/lib/zen/packages/comments/lib/comments/view/admin/comments/index.xhtml +74 -0
  154. data/lib/zen/packages/comments/migrations/.gitkeep +0 -0
  155. data/lib/zen/packages/comments/migrations/1295282202_create_schema.rb +24 -0
  156. data/lib/zen/packages/comments/migrations/1296949631_add_defensio_signature.rb +11 -0
  157. data/lib/zen/packages/custom_fields/LICENSE +19 -0
  158. data/lib/zen/packages/custom_fields/README.textile +0 -0
  159. data/lib/zen/packages/custom_fields/lib/custom_fields.rb +24 -0
  160. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +179 -0
  161. data/lib/zen/packages/custom_fields/lib/custom_fields/controller/custom_fields.rb +194 -0
  162. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_field_groups.rb +45 -0
  163. data/lib/zen/packages/custom_fields/lib/custom_fields/language/en/custom_fields.rb +64 -0
  164. data/lib/zen/packages/custom_fields/lib/custom_fields/model/custom_field.rb +41 -0
  165. data/lib/zen/packages/custom_fields/lib/custom_fields/model/custom_field_group.rb +32 -0
  166. data/lib/zen/packages/custom_fields/lib/custom_fields/model/custom_field_value.rb +20 -0
  167. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/edit.xhtml +7 -0
  168. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/form.xhtml +18 -0
  169. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/index.xhtml +88 -0
  170. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_field_groups/new.xhtml +7 -0
  171. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/edit.xhtml +7 -0
  172. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/form.xhtml +50 -0
  173. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/index.xhtml +75 -0
  174. data/lib/zen/packages/custom_fields/lib/custom_fields/view/admin/custom_fields/new.xhtml +7 -0
  175. data/lib/zen/packages/custom_fields/migrations/.gitkeep +0 -0
  176. data/lib/zen/packages/custom_fields/migrations/1295255665_create_schema.rb +53 -0
  177. data/lib/zen/packages/sections/LICENSE +19 -0
  178. data/lib/zen/packages/sections/README.textile +43 -0
  179. data/lib/zen/packages/sections/lib/sections.rb +33 -0
  180. data/lib/zen/packages/sections/lib/sections/controller/section_entries.rb +251 -0
  181. data/lib/zen/packages/sections/lib/sections/controller/sections.rb +205 -0
  182. data/lib/zen/packages/sections/lib/sections/language/en/section_entries.rb +58 -0
  183. data/lib/zen/packages/sections/lib/sections/language/en/sections.rb +63 -0
  184. data/lib/zen/packages/sections/lib/sections/liquid/section_entries.rb +209 -0
  185. data/lib/zen/packages/sections/lib/sections/liquid/sections.rb +76 -0
  186. data/lib/zen/packages/sections/lib/sections/model/section.rb +43 -0
  187. data/lib/zen/packages/sections/lib/sections/model/section_entry.rb +43 -0
  188. data/lib/zen/packages/sections/lib/sections/view/admin/edit.xhtml +7 -0
  189. data/lib/zen/packages/sections/lib/sections/view/admin/form.xhtml +54 -0
  190. data/lib/zen/packages/sections/lib/sections/view/admin/index.xhtml +77 -0
  191. data/lib/zen/packages/sections/lib/sections/view/admin/new.xhtml +7 -0
  192. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/edit.xhtml +7 -0
  193. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/form.xhtml +147 -0
  194. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/index.xhtml +74 -0
  195. data/lib/zen/packages/sections/lib/sections/view/admin/section_entries/new.xhtml +7 -0
  196. data/lib/zen/packages/sections/migrations/.gitkeep +0 -0
  197. data/lib/zen/packages/sections/migrations/1295251836_create_schema.rb +35 -0
  198. data/lib/zen/packages/sections/migrations/1296335671_userdata_section_entries.rb +18 -0
  199. data/lib/zen/packages/sections/migrations/1296936110_drop_comment_antispam.rb +11 -0
  200. data/lib/zen/packages/settings/LICENSE +0 -0
  201. data/lib/zen/packages/settings/README.textile +0 -0
  202. data/lib/zen/packages/settings/lib/settings.rb +22 -0
  203. data/lib/zen/packages/settings/lib/settings/controller/settings.rb +113 -0
  204. data/lib/zen/packages/settings/lib/settings/language/en/settings.rb +56 -0
  205. data/lib/zen/packages/settings/lib/settings/liquid/setting.rb +56 -0
  206. data/lib/zen/packages/settings/lib/settings/model/setting.rb +38 -0
  207. data/lib/zen/packages/settings/lib/settings/view/admin/settings/index.xhtml +79 -0
  208. data/lib/zen/packages/settings/migrations/.gitkeep +0 -0
  209. data/lib/zen/packages/settings/migrations/1295597111_create_schema.rb +31 -0
  210. data/lib/zen/packages/users/LICENSE +19 -0
  211. data/lib/zen/packages/users/README.textile +0 -0
  212. data/lib/zen/packages/users/lib/users.rb +35 -0
  213. data/lib/zen/packages/users/lib/users/controller/access_rules.rb +186 -0
  214. data/lib/zen/packages/users/lib/users/controller/user_groups.rb +171 -0
  215. data/lib/zen/packages/users/lib/users/controller/users.rb +240 -0
  216. data/lib/zen/packages/users/lib/users/language/en/access_rules.rb +49 -0
  217. data/lib/zen/packages/users/lib/users/language/en/user_groups.rb +42 -0
  218. data/lib/zen/packages/users/lib/users/language/en/users.rb +63 -0
  219. data/lib/zen/packages/users/lib/users/liquid/user.rb +75 -0
  220. data/lib/zen/packages/users/lib/users/liquid/users.rb +80 -0
  221. data/lib/zen/packages/users/lib/users/model/access_rule.rb +29 -0
  222. data/lib/zen/packages/users/lib/users/model/user.rb +96 -0
  223. data/lib/zen/packages/users/lib/users/model/user_group.rb +38 -0
  224. data/lib/zen/packages/users/lib/users/public/admin/js/users/access_rules.js +43 -0
  225. data/lib/zen/packages/users/lib/users/view/admin/access_rules/edit.xhtml +7 -0
  226. data/lib/zen/packages/users/lib/users/view/admin/access_rules/form.xhtml +68 -0
  227. data/lib/zen/packages/users/lib/users/view/admin/access_rules/index.xhtml +85 -0
  228. data/lib/zen/packages/users/lib/users/view/admin/access_rules/new.xhtml +7 -0
  229. data/lib/zen/packages/users/lib/users/view/admin/user_groups/edit.xhtml +7 -0
  230. data/lib/zen/packages/users/lib/users/view/admin/user_groups/form.xhtml +19 -0
  231. data/lib/zen/packages/users/lib/users/view/admin/user_groups/index.xhtml +69 -0
  232. data/lib/zen/packages/users/lib/users/view/admin/user_groups/new.xhtml +7 -0
  233. data/lib/zen/packages/users/lib/users/view/admin/users/edit.xhtml +7 -0
  234. data/lib/zen/packages/users/lib/users/view/admin/users/form.xhtml +25 -0
  235. data/lib/zen/packages/users/lib/users/view/admin/users/index.xhtml +73 -0
  236. data/lib/zen/packages/users/lib/users/view/admin/users/login.xhtml +22 -0
  237. data/lib/zen/packages/users/lib/users/view/admin/users/new.xhtml +7 -0
  238. data/lib/zen/packages/users/migrations/.gitkeep +0 -0
  239. data/lib/zen/packages/users/migrations/1295281013_create_schema.rb +54 -0
  240. data/lib/zen/public/admin/css/boilerplate.css +174 -0
  241. data/lib/zen/public/admin/css/general.css +485 -0
  242. data/lib/zen/public/admin/css/grid.css +119 -0
  243. data/lib/zen/public/admin/css/layout.css +111 -0
  244. data/lib/zen/public/admin/images/general/noise.jpg +0 -0
  245. data/lib/zen/public/admin/images/icons/accept.png +0 -0
  246. data/lib/zen/public/admin/images/icons/add.png +0 -0
  247. data/lib/zen/public/admin/images/icons/back.png +0 -0
  248. data/lib/zen/public/admin/images/icons/bold.png +0 -0
  249. data/lib/zen/public/admin/images/icons/close.png +0 -0
  250. data/lib/zen/public/admin/images/icons/delete.png +0 -0
  251. data/lib/zen/public/admin/images/icons/edit.png +0 -0
  252. data/lib/zen/public/admin/images/icons/error.png +0 -0
  253. data/lib/zen/public/admin/images/icons/help.png +0 -0
  254. data/lib/zen/public/admin/images/icons/info.png +0 -0
  255. data/lib/zen/public/admin/images/icons/italic.png +0 -0
  256. data/lib/zen/public/admin/images/icons/large/error.png +0 -0
  257. data/lib/zen/public/admin/images/icons/large/notice.png +0 -0
  258. data/lib/zen/public/admin/images/icons/large/success.png +0 -0
  259. data/lib/zen/public/admin/images/icons/link.png +0 -0
  260. data/lib/zen/public/admin/images/icons/logout.png +0 -0
  261. data/lib/zen/public/admin/images/icons/ol.png +0 -0
  262. data/lib/zen/public/admin/images/icons/pdf.png +0 -0
  263. data/lib/zen/public/admin/images/icons/ul.png +0 -0
  264. data/lib/zen/public/admin/images/icons/user.png +0 -0
  265. data/lib/zen/public/admin/images/icons/view.png +0 -0
  266. data/lib/zen/public/admin/js/mootools/core.js +436 -0
  267. data/lib/zen/public/admin/js/mootools/more.js +288 -0
  268. data/lib/zen/public/admin/js/zen/editor/base.js +265 -0
  269. data/lib/zen/public/admin/js/zen/editor/drivers/html.js +104 -0
  270. data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +102 -0
  271. data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +102 -0
  272. data/lib/zen/public/admin/js/zen/init.js +57 -0
  273. data/lib/zen/public/admin/js/zen/modal.js +159 -0
  274. data/lib/zen/public/admin/js/zen/notification.js +213 -0
  275. data/lib/zen/public/admin/js/zen/tabs.js +263 -0
  276. data/lib/zen/tasks.rb +6 -0
  277. data/pkg/.gitkeep +0 -0
  278. data/proto/app/Rakefile +2 -0
  279. data/proto/app/app.rb +20 -0
  280. data/proto/app/config.ru +18 -0
  281. data/proto/app/config/config.rb +17 -0
  282. data/proto/app/config/database.rb +18 -0
  283. data/proto/app/config/middlewares.rb +23 -0
  284. data/proto/app/config/requires.rb +8 -0
  285. data/proto/app/logs/.gitkeep +0 -0
  286. data/proto/app/public/.gitkeep +0 -0
  287. data/proto/app/start.rb +22 -0
  288. data/proto/app/vendor/.gitkeep +0 -0
  289. data/proto/app/vendor/themes/.gitkeep +0 -0
  290. data/proto/migration.rb +11 -0
  291. data/proto/module/LICENSE +0 -0
  292. data/proto/module/README.textile +0 -0
  293. data/proto/module/lib/module.rb +15 -0
  294. data/proto/module/lib/module/controller/controllers.rb +86 -0
  295. data/proto/module/lib/module/language/en/languages.rb +3 -0
  296. data/proto/module/lib/module/model/model.rb +12 -0
  297. data/proto/module/lib/module/view/admin/edit.xhtml +0 -0
  298. data/proto/module/lib/module/view/admin/form.xhtml +0 -0
  299. data/proto/module/lib/module/view/admin/index.xhtml +0 -0
  300. data/proto/module/lib/module/view/admin/new.xhtml +0 -0
  301. data/proto/module/migrations/.gitkeep +0 -0
  302. data/spec/javascript/css/base.css +177 -0
  303. data/spec/javascript/css/style.css +204 -0
  304. data/spec/javascript/css/typography.css +70 -0
  305. data/spec/javascript/editor/index.html +65 -0
  306. data/spec/javascript/images/close.png +0 -0
  307. data/spec/javascript/images/info.png +0 -0
  308. data/spec/javascript/js/editor.js +16 -0
  309. data/spec/javascript/js/modal.js +12 -0
  310. data/spec/javascript/js/namespace.js +2 -0
  311. data/spec/javascript/js/notification.js +43 -0
  312. data/spec/javascript/js/tabs.js +8 -0
  313. data/spec/javascript/modal/index.html +45 -0
  314. data/spec/javascript/notification/index.html +48 -0
  315. data/spec/javascript/tabs/index.html +73 -0
  316. data/spec/javascript/tabs/tab_1.html +1 -0
  317. data/spec/javascript/tabs/tab_2.html +1 -0
  318. data/spec/zen/base/language.rb +31 -0
  319. data/spec/zen/base/logger.rb +34 -0
  320. data/spec/zen/base/package.rb +47 -0
  321. data/spec/zen/config/database.rb +8 -0
  322. data/spec/zen/helper/asset.rb +26 -0
  323. data/spec/zen/helper/breadcrumb.rb +24 -0
  324. data/spec/zen/language/en/general.rb +4 -0
  325. data/spec/zen/language/nl/general.rb +4 -0
  326. data/spec/zen/liquid/general.rb +42 -0
  327. data/spec/zen/logs/.gitkeep +0 -0
  328. data/spec/zen/spec.rb +9 -0
  329. data/spec/zen/spec_database.db +0 -0
  330. data/tasks/bacon.rake +99 -0
  331. data/tasks/build.rake +72 -0
  332. data/tasks/clean.rake +18 -0
  333. data/tasks/db.rake +81 -0
  334. data/tasks/doc.rake +5 -0
  335. data/tasks/extension.rake +65 -0
  336. data/tasks/proto.rake +37 -0
  337. data/tasks/theme.rake +63 -0
  338. metadata +512 -0
@@ -0,0 +1,660 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>Module: Zen::Language</title>
7
+ <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '..';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <script type="text/javascript" charset="utf-8">
20
+ if (window.top.frames.main) document.body.className = 'frames';
21
+ </script>
22
+
23
+ <div id="header">
24
+ <div id="menu">
25
+
26
+ <a href="../_index.html">Index (L)</a> &raquo;
27
+ <span class='title'><span class='object_link'><a href="../Zen.html" title="Zen (module)">Zen</a></span></span>
28
+ &raquo;
29
+ <span class="title">Language</span>
30
+
31
+
32
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
33
+ </div>
34
+
35
+ <div id="search">
36
+ <a id="class_list_link" href="#">Class List</a>
37
+ <a id="method_list_link" href="#">Method List</a>
38
+ <a id ="file_list_link" href="#">File List</a>
39
+ </div>
40
+
41
+ <div class="clear"></div>
42
+ </div>
43
+
44
+ <iframe id="search_frame"></iframe>
45
+
46
+ <div id="content"><h1>Module: Zen::Language
47
+
48
+
49
+
50
+ </h1>
51
+
52
+ <dl class="box">
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ <dt class="r1 last">Defined in:</dt>
62
+ <dd class="r1 last">/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/language.rb</dd>
63
+
64
+ </dl>
65
+ <div class="clear"></div>
66
+
67
+ <h2>Overview</h2><div class="docstring">
68
+ <div class="discussion">
69
+ <p>The Language module enables developers to create multi-lingual applications/extensions using
70
+ nothing more than Ruby. While Ramaze already ships with multi-language support it relies on <span class="caps">YAML</span>
71
+ for it&#8217;s language files. While <span class="caps">YAML</span> is nice for config/language files my aim is to keep everything in Ruby
72
+ as much as possible. Another problem with the language class provided by Ramaze is that at the time of writing
73
+ (October 2011) it was completely undocumented and didn&#8217;t make much sense.</p>
74
+ <h2>Usage</h2>
75
+ <p>Using the language system provided by Zen is fairly straight forward. Create a directory named &#8220;language&#8221;
76
+ and create a sub directory for each language. For example, if you&#8217;re adding an English language pack this directory would be named &#8220;en&#8221;.
77
+ Language files can be named whatever you like as long as they contain the following block:</p>
78
+ <pre class="code"><span class='const'>Zen</span><span class='op'>::</span><span class='const'>Language</span><span class='period'>.</span><span class='id translation'>translation</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>translation_name</span><span class='tstring_end'>'</span></span> <span class='kw'>do</span> <span class='op'>|</span><span class='id item'>item</span><span class='op'>|</span>
79
+ <span class='comment'># ...
80
+ </span><span class='kw'>end</span></pre>
81
+ <p>Inside this block you&#8217;ll define your language items. For example, if we want a localized username and password we could
82
+ do something like the following:</p>
83
+ <pre class="code"><span class='const'>Zen</span><span class='op'>::</span><span class='const'>Language</span><span class='period'>.</span><span class='id translation'>translation</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>example</span><span class='tstring_end'>'</span></span> <span class='kw'>do</span> <span class='op'>|</span><span class='id item'>item</span><span class='op'>|</span>
84
+ <span class='id item'>item</span><span class='period'>.</span><span class='id username'>username</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Username</span><span class='tstring_end'>'</span></span>
85
+ <span class='id item'>item</span><span class='period'>.</span><span class='id passowrd'>passowrd</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Password</span><span class='tstring_end'>'</span></span>
86
+ <span class='kw'>end</span></pre>
87
+ <p>This language file can then be loaded as following (assuming it&#8217;s named &#8220;example.rb&#8221;):</p>
88
+ <pre class="code"><span class='id lang'>lang</span> <span class='op'>=</span> <span class='const'>Zen</span><span class='op'>::</span><span class='const'>Language</span><span class='period'>.</span><span class='id load'>load</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>example</span><span class='tstring_end'>'</span></span>
89
+ <span class='comment'># We can now access our translation items from the lang variable
90
+ </span><span class='id lang'>lang</span><span class='period'>.</span><span class='id username'>username</span>
91
+ <span class='id lang'>lang</span><span class='period'>.</span><span class='id password'>password</span></pre>
92
+ <p>Zen will use the setting Zen.options.language to determine what language should be loaded.</p>
93
+ <h2>Sub Items</h2>
94
+ <p>Since language files are nothing more than Ruby blocks you can do everything you normally can. This makes
95
+ it extremely easy to retrieve dynamic data for your language files (a list of installed extensions for example).
96
+ Sub items are generally specified as a hash:</p>
97
+ <pre class="code"><span class='id item'>item</span><span class='period'>.</span><span class='id sub_items'>sub_items</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='symbol'>:name</span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Name</span><span class='tstring_end'>'</span></span><span class='rbrace'>}</span></pre>
98
+ <p>Note that Zen won&#8217;t convert the keys from format A to B, if you specify a symbol it will stay a symbol.</p>
99
+
100
+ </div>
101
+ </div>
102
+ <div class="tags">
103
+ <h3>Author:</h3>
104
+ <ul class="author">
105
+
106
+ <li>
107
+
108
+
109
+
110
+
111
+
112
+ <div class='inline'><p>Yorick Peterse</p></div>
113
+
114
+ </li>
115
+
116
+ </ul>
117
+ <h3>Since:</h3>
118
+ <ul class="since">
119
+
120
+ <li>
121
+
122
+
123
+
124
+
125
+
126
+ <div class='inline'><p>0.1</p></div>
127
+
128
+ </li>
129
+
130
+ </ul>
131
+
132
+ </div>
133
+
134
+ <h2>Class Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
135
+ <ul class="summary">
136
+
137
+ <li class="public ">
138
+ <span class="summary_signature">
139
+
140
+ <a href="#language_keys-class_method" title="language_keys (class method)">+ (Object) <strong>language_keys</strong> </a>
141
+
142
+
143
+
144
+ </span>
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+ <span class="summary_desc"><div class='inline'><p>Returns the value of attribute language_keys.</p></div></span>
157
+
158
+ </li>
159
+
160
+
161
+ <li class="public ">
162
+ <span class="summary_signature">
163
+
164
+ <a href="#language_paths-class_method" title="language_paths (class method)">+ (Object) <strong>language_paths</strong> </a>
165
+
166
+
167
+
168
+ </span>
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+ <span class="summary_desc"><div class='inline'><p>Returns the value of attribute language_paths.</p></div></span>
181
+
182
+ </li>
183
+
184
+
185
+ </ul>
186
+
187
+
188
+
189
+ <h2>
190
+ Class Method Summary
191
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
192
+ </h2>
193
+
194
+ <ul class="summary">
195
+
196
+ <li class="public ">
197
+ <span class="summary_signature">
198
+
199
+ <a href="#load-class_method" title="load (class method)">+ (Object) <strong>load</strong>(lang_name) </a>
200
+
201
+
202
+
203
+ </span>
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+ <span class="summary_desc"><div class='inline'><p>Tries to load the specified language file from each directory specified in Ramaze.options.roots.</p></div></span>
213
+
214
+ </li>
215
+
216
+
217
+ <li class="public ">
218
+ <span class="summary_signature">
219
+
220
+ <a href="#translation-class_method" title="translation (class method)">+ (Object) <strong>translation</strong>(lang_name) {|@language_keys[hash_key]| ... }</a>
221
+
222
+
223
+
224
+ </span>
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+ <span class="summary_desc"><div class='inline'><p>Given a block this method will store all the keys in the language_keys instance variable.</p></div></span>
234
+
235
+ </li>
236
+
237
+
238
+ </ul>
239
+
240
+
241
+
242
+ <div id="class_attr_details" class="attr_details">
243
+ <h2>Class Attribute Details</h2>
244
+
245
+
246
+ <span id="language_keys=-class_method"></span>
247
+ <span id="language_keys-class_method"></span>
248
+ <div class="method_details first">
249
+ <p class="signature first" id="language_keys-class_method">
250
+
251
+ + (<tt>Object</tt>) <strong>language_keys</strong>
252
+
253
+
254
+
255
+ </p><div class="docstring">
256
+ <div class="discussion">
257
+ <p>Returns the value of attribute language_keys</p>
258
+
259
+ </div>
260
+ </div>
261
+ <div class="tags">
262
+ <h3>Since:</h3>
263
+ <ul class="since">
264
+
265
+ <li>
266
+
267
+
268
+
269
+
270
+
271
+ <div class='inline'><p>0.1</p></div>
272
+
273
+ </li>
274
+
275
+ </ul>
276
+
277
+ </div><table class="source_code">
278
+ <tr>
279
+ <td>
280
+ <pre class="lines">
281
+
282
+
283
+ 56
284
+ 57
285
+ 58</pre>
286
+ </td>
287
+ <td>
288
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/language.rb', line 56</span>
289
+
290
+ <span class='kw'>def</span> <span class='id language_keys'>language_keys</span>
291
+ <span class='ivar'>@language_keys</span>
292
+ <span class='kw'>end</span></pre>
293
+ </td>
294
+ </tr>
295
+ </table>
296
+ </div>
297
+
298
+
299
+ <span id="language_paths=-class_method"></span>
300
+ <span id="language_paths-class_method"></span>
301
+ <div class="method_details ">
302
+ <p class="signature " id="language_paths-class_method">
303
+
304
+ + (<tt>Object</tt>) <strong>language_paths</strong>
305
+
306
+
307
+
308
+ </p><div class="docstring">
309
+ <div class="discussion">
310
+ <p>Returns the value of attribute language_paths</p>
311
+
312
+ </div>
313
+ </div>
314
+ <div class="tags">
315
+ <h3>Since:</h3>
316
+ <ul class="since">
317
+
318
+ <li>
319
+
320
+
321
+
322
+
323
+
324
+ <div class='inline'><p>0.1</p></div>
325
+
326
+ </li>
327
+
328
+ </ul>
329
+
330
+ </div><table class="source_code">
331
+ <tr>
332
+ <td>
333
+ <pre class="lines">
334
+
335
+
336
+ 57
337
+ 58
338
+ 59</pre>
339
+ </td>
340
+ <td>
341
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/language.rb', line 57</span>
342
+
343
+ <span class='kw'>def</span> <span class='id language_paths'>language_paths</span>
344
+ <span class='ivar'>@language_paths</span>
345
+ <span class='kw'>end</span></pre>
346
+ </td>
347
+ </tr>
348
+ </table>
349
+ </div>
350
+
351
+ </div>
352
+
353
+
354
+ <div id="class_method_details" class="method_details_list">
355
+ <h2>Class Method Details</h2>
356
+
357
+
358
+ <div class="method_details first">
359
+ <p class="signature first" id="load-class_method">
360
+
361
+ + (<tt>Object</tt>) <strong>load</strong>(lang_name)
362
+
363
+
364
+
365
+ </p><div class="docstring">
366
+ <div class="discussion">
367
+ <p>Tries to load the specified language file from each directory specified in Ramaze.options.roots.
368
+ After a language file has been loaded the OpenStruct object will be stored in a hash and returned
369
+ in case the same language file is loaded multiple times.</p>
370
+ <p>the filename and the name defined in Zen::Language.translation().</p>
371
+
372
+ </div>
373
+ </div>
374
+ <div class="tags">
375
+
376
+ <div class="examples">
377
+ <h3>Examples:</h3>
378
+
379
+ <h4><div class='inline'></div></h4>
380
+ <pre class="example code"><span class='ivar'>@user_lang</span> <span class='op'>=</span> <span class='const'>Zen</span><span class='op'>::</span><span class='const'>Language</span><span class='period'>.</span><span class='id load'>load</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user</span><span class='tstring_end'>'</span></span>
381
+ <span class='ivar'>@user_lang</span><span class='period'>.</span><span class='id username'>username</span></pre>
382
+
383
+ </div>
384
+ <h3>Parameters:</h3>
385
+ <ul class="param">
386
+
387
+ <li>
388
+
389
+ <span class='type'>(<tt>String</tt>)</span>
390
+
391
+
392
+ <span class='name'>lang_name</span>
393
+
394
+
395
+
396
+ &mdash;
397
+ <div class='inline'><p>The name of the language file to load. This name should match both</p></div>
398
+
399
+ </li>
400
+
401
+ </ul>
402
+ <h3>Returns:</h3>
403
+ <ul class="return">
404
+
405
+ <li>
406
+
407
+ <span class='type'>(<tt>Object</tt>)</span>
408
+
409
+
410
+
411
+
412
+ &mdash;
413
+ <div class='inline'><p>An OpenStruct object containing all the language keys and their values.</p></div>
414
+
415
+ </li>
416
+
417
+ </ul>
418
+ <h3>Author:</h3>
419
+ <ul class="author">
420
+
421
+ <li>
422
+
423
+
424
+
425
+
426
+
427
+ <div class='inline'><p>Yorick Peterse</p></div>
428
+
429
+ </li>
430
+
431
+ </ul>
432
+ <h3>Since:</h3>
433
+ <ul class="since">
434
+
435
+ <li>
436
+
437
+
438
+
439
+
440
+
441
+ <div class='inline'><p>0.1</p></div>
442
+
443
+ </li>
444
+
445
+ </ul>
446
+
447
+ </div><table class="source_code">
448
+ <tr>
449
+ <td>
450
+ <pre class="lines">
451
+
452
+
453
+ 74
454
+ 75
455
+ 76
456
+ 77
457
+ 78
458
+ 79
459
+ 80
460
+ 81
461
+ 82
462
+ 83
463
+ 84
464
+ 85
465
+ 86
466
+ 87
467
+ 88
468
+ 89
469
+ 90
470
+ 91
471
+ 92
472
+ 93
473
+ 94
474
+ 95
475
+ 96
476
+ 97
477
+ 98
478
+ 99
479
+ 100</pre>
480
+ </td>
481
+ <td>
482
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/language.rb', line 74</span>
483
+
484
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id load'>load</span> <span class='id lang_name'>lang_name</span>
485
+ <span class='comment'># Each language file is stored in the hash using a key with the following format:
486
+ </span> <span class='comment'># language-name_language-file
487
+ </span> <span class='id hash_key'>hash_key</span> <span class='op'>=</span> <span class='const'>Zen</span><span class='period'>.</span><span class='id options'>options</span><span class='period'>.</span><span class='id language'>language</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>_</span><span class='tstring_end'>'</span></span> <span class='op'>+</span> <span class='id lang_name'>lang_name</span>
488
+ <span class='id hash_key'>hash_key</span> <span class='op'>=</span> <span class='id hash_key'>hash_key</span><span class='period'>.</span><span class='id to_sym'>to_sym</span>
489
+
490
+ <span class='comment'># Let's see if the language file is already loaded
491
+ </span> <span class='kw'>if</span> <span class='ivar'>@language_keys</span><span class='period'>.</span><span class='id key?'>key?</span><span class='lparen'>(</span><span class='id hash_key'>hash_key</span><span class='rparen'>)</span>
492
+ <span class='kw'>return</span> <span class='ivar'>@language_keys</span><span class='lbracket'>[</span><span class='id hash_key'>hash_key</span><span class='rbracket'>]</span>
493
+ <span class='kw'>end</span>
494
+
495
+ <span class='comment'># Time to load the file
496
+ </span> <span class='id paths'>paths</span> <span class='op'>=</span> <span class='ivar'>@language_paths</span> <span class='op'>+</span> <span class='const'>Ramaze</span><span class='period'>.</span><span class='id options'>options</span><span class='period'>.</span><span class='id roots'>roots</span>
497
+
498
+ <span class='id paths'>paths</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id dir'>dir</span><span class='op'>|</span>
499
+ <span class='id lang_path'>lang_path</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id dir'>dir</span><span class='rbrace'>}</span><span class='tstring_content'>/language/</span><span class='embexpr_beg'>#{</span><span class='const'>Zen</span><span class='period'>.</span><span class='id options'>options</span><span class='period'>.</span><span class='id language'>language</span><span class='rbrace'>}</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='id lang_name'>lang_name</span><span class='rbrace'>}</span><span class='tstring_content'>.rb</span><span class='tstring_end'>&quot;</span></span>
500
+
501
+ <span class='comment'># Load the file if it exists
502
+ </span> <span class='kw'>if</span> <span class='const'>File</span><span class='period'>.</span><span class='id exist?'>exist?</span><span class='lparen'>(</span><span class='id lang_path'>lang_path</span><span class='rparen'>)</span>
503
+ <span class='id require'>require</span> <span class='id lang_path'>lang_path</span>
504
+ <span class='kw'>return</span> <span class='ivar'>@language_keys</span><span class='lbracket'>[</span><span class='id hash_key'>hash_key</span><span class='rbracket'>]</span>
505
+ <span class='kw'>end</span>
506
+ <span class='kw'>end</span>
507
+
508
+ <span class='comment'># No language file found
509
+ </span> <span class='kw'>return</span> <span class='kw'>false</span>
510
+ <span class='kw'>end</span></pre>
511
+ </td>
512
+ </tr>
513
+ </table>
514
+ </div>
515
+
516
+ <div class="method_details ">
517
+ <p class="signature " id="translation-class_method">
518
+
519
+ + (<tt>Object</tt>) <strong>translation</strong>(lang_name) {|@language_keys[hash_key]| ... }
520
+
521
+
522
+
523
+ </p><div class="docstring">
524
+ <div class="discussion">
525
+ <p>Given a block this method will store all the keys in the language_keys instance variable.
526
+ Using Zen::Language.load these variables will be returned as an OpenStruct object.</p>
527
+
528
+ </div>
529
+ </div>
530
+ <div class="tags">
531
+
532
+ <div class="examples">
533
+ <h3>Examples:</h3>
534
+
535
+ <h4><div class='inline'></div></h4>
536
+ <pre class="example code"><span class='const'>Zen</span><span class='op'>::</span><span class='const'>Language</span><span class='period'>.</span><span class='id translation'>translation</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>example</span><span class='tstring_end'>'</span></span> <span class='kw'>do</span> <span class='op'>|</span><span class='id lang'>lang</span><span class='op'>|</span>
537
+ <span class='id lang'>lang</span><span class='period'>.</span><span class='id username'>username</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Username</span><span class='tstring_end'>'</span></span>
538
+ <span class='id lang'>lang</span><span class='period'>.</span><span class='id password'>password</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Password</span><span class='tstring_end'>'</span></span>
539
+ <span class='kw'>end</span></pre>
540
+
541
+ </div>
542
+ <h3>Parameters:</h3>
543
+ <ul class="param">
544
+
545
+ <li>
546
+
547
+ <span class='type'>(<tt>Block</tt>)</span>
548
+
549
+
550
+ <span class='name'>Block</span>
551
+
552
+
553
+
554
+ &mdash;
555
+ <div class='inline'><p>containing all the language items.</p></div>
556
+
557
+ </li>
558
+
559
+ </ul>
560
+ <h3>Yields:</h3>
561
+ <ul class="yield">
562
+
563
+ <li>
564
+
565
+ <span class='type'>(<tt>@<span class='object_link'><a href="#language_keys-class_method" title="Zen::Language.language_keys (method)">language_keys</a></span>[hash_key]</tt>)</span>
566
+
567
+
568
+
569
+
570
+ </li>
571
+
572
+ </ul>
573
+ <h3>Author:</h3>
574
+ <ul class="author">
575
+
576
+ <li>
577
+
578
+
579
+
580
+
581
+
582
+ <div class='inline'><p>Yorick Peterse</p></div>
583
+
584
+ </li>
585
+
586
+ </ul>
587
+ <h3>Since:</h3>
588
+ <ul class="since">
589
+
590
+ <li>
591
+
592
+
593
+
594
+
595
+
596
+ <div class='inline'><p>0.1</p></div>
597
+
598
+ </li>
599
+
600
+ </ul>
601
+
602
+ </div><table class="source_code">
603
+ <tr>
604
+ <td>
605
+ <pre class="lines">
606
+
607
+
608
+ 115
609
+ 116
610
+ 117
611
+ 118
612
+ 119
613
+ 120
614
+ 121
615
+ 122
616
+ 123
617
+ 124
618
+ 125
619
+ 126
620
+ 127
621
+ 128
622
+ 129
623
+ 130</pre>
624
+ </td>
625
+ <td>
626
+ <pre class="code"><span class="info file"># File '/Applications/MAMP/htdocs/ruby/zen/zen/lib/zen/base/language.rb', line 115</span>
627
+
628
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id translation'>translation</span> <span class='id lang_name'>lang_name</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id block'>block</span>
629
+ <span class='comment'># Each language file is stored in the hash using a key with the following format:
630
+ </span> <span class='comment'># language-name_language-file
631
+ </span> <span class='id hash_key'>hash_key</span> <span class='op'>=</span> <span class='const'>Zen</span><span class='period'>.</span><span class='id options'>options</span><span class='period'>.</span><span class='id language'>language</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>_</span><span class='tstring_end'>'</span></span> <span class='op'>+</span> <span class='id lang_name'>lang_name</span>
632
+ <span class='id hash_key'>hash_key</span> <span class='op'>=</span> <span class='id hash_key'>hash_key</span><span class='period'>.</span><span class='id to_sym'>to_sym</span>
633
+
634
+ <span class='comment'># Does the language key already exist?
635
+ </span> <span class='kw'>if</span> <span class='ivar'>@language_keys</span><span class='period'>.</span><span class='id key?'>key?</span><span class='lparen'>(</span><span class='id hash_key'>hash_key</span><span class='rparen'>)</span>
636
+ <span class='id raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>There already is a language file named \&quot;</span><span class='embexpr_beg'>#{</span><span class='id lang_name'>lang_name</span><span class='rbrace'>}</span><span class='tstring_content'>\&quot; for the language \&quot;</span><span class='embexpr_beg'>#{</span><span class='const'>Zen</span><span class='period'>.</span><span class='id options'>options</span><span class='period'>.</span><span class='id language'>language</span><span class='rbrace'>}</span><span class='tstring_content'>\&quot;.</span><span class='tstring_end'>&quot;</span></span>
637
+ <span class='kw'>end</span>
638
+
639
+ <span class='comment'># Process the language file
640
+ </span> <span class='ivar'>@language_keys</span><span class='lbracket'>[</span><span class='id hash_key'>hash_key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'>OpenStruct</span><span class='period'>.</span><span class='id new'>new</span>
641
+
642
+ <span class='kw'>yield</span> <span class='ivar'>@language_keys</span><span class='lbracket'>[</span><span class='id hash_key'>hash_key</span><span class='rbracket'>]</span>
643
+ <span class='kw'>end</span></pre>
644
+ </td>
645
+ </tr>
646
+ </table>
647
+ </div>
648
+
649
+ </div>
650
+
651
+ </div>
652
+
653
+ <div id="footer">
654
+ Generated on Sun Feb 6 21:24:00 2011 by
655
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
656
+ 0.6.4 (ruby-1.9.2).
657
+ </div>
658
+
659
+ </body>
660
+ </html>