zen 0.1a

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.
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>