imagine_cms 3.0.0.beta6 → 3.0.0.beta7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (278) hide show
  1. data/README.rdoc +1 -1
  2. data/app/assets/images/codepress/line-numbers.png +0 -0
  3. data/app/assets/images/cropper/marqueeHoriz.gif +0 -0
  4. data/app/assets/images/cropper/marqueeVert.gif +0 -0
  5. data/app/assets/images/management/btn_add.gif +0 -0
  6. data/app/assets/images/management/btn_archive.gif +0 -0
  7. data/app/assets/images/management/btn_delete.gif +0 -0
  8. data/app/assets/images/management/btn_duplicate.gif +0 -0
  9. data/app/assets/images/management/btn_edit.gif +0 -0
  10. data/app/assets/images/management/btn_help.gif +0 -0
  11. data/app/assets/images/management/btn_new_page.gif +0 -0
  12. data/app/assets/images/management/btn_preview.gif +0 -0
  13. data/app/assets/images/management/btn_properties.gif +0 -0
  14. data/app/assets/images/management/btn_restore.gif +0 -0
  15. data/app/assets/images/management/btn_top_delete.gif +0 -0
  16. data/app/assets/images/management/btn_top_duplicate.gif +0 -0
  17. data/app/assets/images/management/btn_top_edit.gif +0 -0
  18. data/app/assets/images/management/btn_top_new.gif +0 -0
  19. data/app/assets/images/management/btn_top_preview.gif +0 -0
  20. data/app/assets/images/management/btn_top_properties.gif +0 -0
  21. data/app/assets/{manage → images/management}/bullet.gif +0 -0
  22. data/app/assets/images/management/cvv2_graphic.gif +0 -0
  23. data/app/assets/images/management/error.gif +0 -0
  24. data/app/assets/images/management/gallery_index.gif +0 -0
  25. data/app/assets/images/management/gallery_preview_overlay.png +0 -0
  26. data/app/assets/images/management/gallery_small_drag_overlay.png +0 -0
  27. data/app/assets/images/management/gallery_small_overlay.png +0 -0
  28. data/app/assets/images/management/gallery_sort.gif +0 -0
  29. data/app/assets/images/management/icon_download.gif +0 -0
  30. data/app/assets/images/management/icon_locked.png +0 -0
  31. data/app/assets/images/management/icon_page.gif +0 -0
  32. data/app/assets/images/management/icon_time.gif +0 -0
  33. data/app/assets/images/management/icon_unlocked.png +0 -0
  34. data/app/assets/images/management/page_loading.gif +0 -0
  35. data/app/assets/{manage → images/management}/start.gif +0 -0
  36. data/app/assets/images/management/vcard.gif +0 -0
  37. data/app/assets/javascripts/builder.js +101 -0
  38. data/app/assets/javascripts/codepress/codepress.html +36 -0
  39. data/app/assets/javascripts/codepress/codepress.js +130 -0
  40. data/app/assets/javascripts/codepress/engines/gecko.js +240 -0
  41. data/{vendor/gems/acts_as_tree/test/abstract_unit.rb → app/assets/javascripts/codepress/engines/khtml.js} +0 -0
  42. data/app/assets/javascripts/codepress/engines/msie.js +263 -0
  43. data/{vendor/gems/acts_as_tree/test/database.yml → app/assets/javascripts/codepress/engines/older.js} +0 -0
  44. data/app/assets/javascripts/codepress/engines/opera.js +259 -0
  45. data/app/assets/javascripts/codepress/languages/css.js +23 -0
  46. data/app/assets/javascripts/codepress/languages/generic.js +25 -0
  47. data/app/assets/javascripts/codepress/languages/html.js +63 -0
  48. data/app/assets/javascripts/codepress/languages/java.js +24 -0
  49. data/app/assets/javascripts/codepress/languages/javascript.js +30 -0
  50. data/app/assets/javascripts/codepress/languages/perl.js +27 -0
  51. data/app/assets/javascripts/codepress/languages/php.js +60 -0
  52. data/app/assets/javascripts/codepress/languages/ruby.js +26 -0
  53. data/app/assets/javascripts/codepress/languages/sql.js +30 -0
  54. data/app/assets/javascripts/codepress/languages/text.js +9 -0
  55. data/app/assets/javascripts/cropper.js +568 -0
  56. data/app/assets/javascripts/dojo/dojo.js +14155 -0
  57. data/app/assets/javascripts/dojo/src/html/images/shadowB.png +0 -0
  58. data/app/assets/javascripts/dojo/src/html/images/shadowBL.png +0 -0
  59. data/app/assets/javascripts/dojo/src/html/images/shadowBR.png +0 -0
  60. data/app/assets/javascripts/dojo/src/html/images/shadowL.png +0 -0
  61. data/app/assets/javascripts/dojo/src/html/images/shadowR.png +0 -0
  62. data/app/assets/javascripts/dojo/src/html/images/shadowT.png +0 -0
  63. data/app/assets/javascripts/dojo/src/html/images/shadowTL.png +0 -0
  64. data/app/assets/javascripts/dojo/src/html/images/shadowTR.png +0 -0
  65. data/app/assets/javascripts/dojo/src/widget/templates/Editor2/showtableborder_gecko.css +19 -0
  66. data/app/assets/javascripts/dojo/src/widget/templates/HslColorPicker.svg +30 -0
  67. data/app/assets/javascripts/dojo/src/widget/templates/buttons/aggregate.gif +0 -0
  68. data/app/assets/javascripts/dojo/src/widget/templates/buttons/aggregate.psd +0 -0
  69. data/app/assets/javascripts/dojo/src/widget/templates/buttons/backcolor.gif +0 -0
  70. data/app/assets/javascripts/dojo/src/widget/templates/buttons/bg-fade.png +0 -0
  71. data/app/assets/javascripts/dojo/src/widget/templates/buttons/bold.gif +0 -0
  72. data/app/assets/javascripts/dojo/src/widget/templates/buttons/cancel.gif +0 -0
  73. data/app/assets/javascripts/dojo/src/widget/templates/buttons/copy.gif +0 -0
  74. data/app/assets/javascripts/dojo/src/widget/templates/buttons/createlink.gif +0 -0
  75. data/app/assets/javascripts/dojo/src/widget/templates/buttons/cut.gif +0 -0
  76. data/app/assets/javascripts/dojo/src/widget/templates/buttons/delete.gif +0 -0
  77. data/app/assets/javascripts/dojo/src/widget/templates/buttons/forecolor.gif +0 -0
  78. data/app/assets/javascripts/dojo/src/widget/templates/buttons/hilitecolor.gif +0 -0
  79. data/app/assets/javascripts/dojo/src/widget/templates/buttons/indent.gif +0 -0
  80. data/app/assets/javascripts/dojo/src/widget/templates/buttons/inserthorizontalrule.gif +0 -0
  81. data/app/assets/javascripts/dojo/src/widget/templates/buttons/insertimage.gif +0 -0
  82. data/app/assets/javascripts/dojo/src/widget/templates/buttons/insertorderedlist.gif +0 -0
  83. data/app/assets/javascripts/dojo/src/widget/templates/buttons/inserttable.gif +0 -0
  84. data/app/assets/javascripts/dojo/src/widget/templates/buttons/insertunorderedlist.gif +0 -0
  85. data/app/assets/javascripts/dojo/src/widget/templates/buttons/italic.gif +0 -0
  86. data/app/assets/javascripts/dojo/src/widget/templates/buttons/justifycenter.gif +0 -0
  87. data/app/assets/javascripts/dojo/src/widget/templates/buttons/justifyfull.gif +0 -0
  88. data/app/assets/javascripts/dojo/src/widget/templates/buttons/justifyleft.gif +0 -0
  89. data/app/assets/javascripts/dojo/src/widget/templates/buttons/justifyright.gif +0 -0
  90. data/app/assets/javascripts/dojo/src/widget/templates/buttons/left_to_right.gif +0 -0
  91. data/app/assets/javascripts/dojo/src/widget/templates/buttons/list_bullet_indent.gif +0 -0
  92. data/app/assets/javascripts/dojo/src/widget/templates/buttons/list_bullet_outdent.gif +0 -0
  93. data/app/assets/javascripts/dojo/src/widget/templates/buttons/list_num_indent.gif +0 -0
  94. data/app/assets/javascripts/dojo/src/widget/templates/buttons/list_num_outdent.gif +0 -0
  95. data/app/assets/javascripts/dojo/src/widget/templates/buttons/outdent.gif +0 -0
  96. data/app/assets/javascripts/dojo/src/widget/templates/buttons/paste.gif +0 -0
  97. data/app/assets/javascripts/dojo/src/widget/templates/buttons/redo.gif +0 -0
  98. data/app/assets/javascripts/dojo/src/widget/templates/buttons/removeformat.gif +0 -0
  99. data/app/assets/javascripts/dojo/src/widget/templates/buttons/right_to_left.gif +0 -0
  100. data/app/assets/javascripts/dojo/src/widget/templates/buttons/save.gif +0 -0
  101. data/app/assets/javascripts/dojo/src/widget/templates/buttons/sep.gif +0 -0
  102. data/app/assets/javascripts/dojo/src/widget/templates/buttons/space.gif +0 -0
  103. data/app/assets/javascripts/dojo/src/widget/templates/buttons/strikethrough.gif +0 -0
  104. data/app/assets/javascripts/dojo/src/widget/templates/buttons/subscript.gif +0 -0
  105. data/app/assets/javascripts/dojo/src/widget/templates/buttons/superscript.gif +0 -0
  106. data/app/assets/javascripts/dojo/src/widget/templates/buttons/underline.gif +0 -0
  107. data/app/assets/javascripts/dojo/src/widget/templates/buttons/undo.gif +0 -0
  108. data/app/assets/javascripts/dojo/src/widget/templates/buttons/wikiword.gif +0 -0
  109. data/app/assets/javascripts/dojo/src/widget/templates/check.gif +0 -0
  110. data/app/assets/javascripts/dojo/src/widget/templates/decrementMonth.gif +0 -0
  111. data/app/assets/javascripts/dojo/src/widget/templates/decrementWeek.gif +0 -0
  112. data/app/assets/javascripts/dojo/src/widget/templates/grabCorner.gif +0 -0
  113. data/app/assets/javascripts/dojo/src/widget/templates/images/floatingPaneClose.gif +0 -0
  114. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaAccordionOff.gif +0 -0
  115. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaAccordionSelected.gif +0 -0
  116. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaActive-c.gif +0 -0
  117. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaActive-l.gif +0 -0
  118. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaActive-r.gif +0 -0
  119. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaBarBg.gif +0 -0
  120. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaButton-c.gif +0 -0
  121. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaButton-l.gif +0 -0
  122. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaButton-r.gif +0 -0
  123. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaDisabled-c.gif +0 -0
  124. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaDisabled-l.gif +0 -0
  125. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaDisabled-r.gif +0 -0
  126. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaMenuBg.gif +0 -0
  127. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaPressed-c.gif +0 -0
  128. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaPressed-l.gif +0 -0
  129. data/app/assets/javascripts/dojo/src/widget/templates/images/soriaPressed-r.gif +0 -0
  130. data/app/assets/javascripts/dojo/src/widget/templates/images/tab_close.gif +0 -0
  131. data/app/assets/javascripts/dojo/src/widget/templates/images/toolbar-bg.gif +0 -0
  132. data/app/assets/javascripts/dojo/src/widget/templates/incrementMonth.gif +0 -0
  133. data/app/assets/javascripts/dojo/src/widget/templates/incrementWeek.gif +0 -0
  134. data/app/assets/javascripts/dojo/src/widget/templates/richtextframe.html +24 -0
  135. data/app/assets/javascripts/imagine.js +1385 -0
  136. data/app/assets/javascripts/jquery_no_conflict.js +9405 -0
  137. data/app/assets/stylesheets/codepress/codepress.css +7 -0
  138. data/app/assets/stylesheets/codepress/languages/css.css +10 -0
  139. data/app/assets/stylesheets/codepress/languages/generic.css +9 -0
  140. data/app/assets/stylesheets/codepress/languages/html.css +18 -0
  141. data/app/assets/stylesheets/codepress/languages/java.css +7 -0
  142. data/app/assets/stylesheets/codepress/languages/javascript.css +8 -0
  143. data/app/assets/stylesheets/codepress/languages/perl.css +11 -0
  144. data/app/assets/stylesheets/codepress/languages/php.css +12 -0
  145. data/app/assets/stylesheets/codepress/languages/ruby.css +10 -0
  146. data/app/assets/stylesheets/codepress/languages/sql.css +10 -0
  147. data/app/assets/stylesheets/codepress/languages/text.css +5 -0
  148. data/app/assets/stylesheets/cropper.css +182 -0
  149. data/app/assets/stylesheets/management.css +96 -0
  150. data/app/assets/stylesheets/reset.css +58 -0
  151. data/app/controllers/cms/content_controller.rb +318 -2
  152. data/app/controllers/management/cms_controller.rb +1669 -0
  153. data/app/controllers/management/user_controller.rb +4 -4
  154. data/app/controllers/management/users_controller.rb +18 -4
  155. data/app/controllers/util_controller.rb +45 -0
  156. data/app/helpers/cms_application_helper.rb +662 -15
  157. data/app/models/cms_content_sweeper.rb +21 -0
  158. data/app/models/cms_page.rb +126 -0
  159. data/app/models/cms_page_object.rb +23 -0
  160. data/app/models/cms_page_tag.rb +5 -0
  161. data/app/models/cms_page_version.rb +3 -0
  162. data/app/models/cms_snippet.rb +16 -0
  163. data/app/models/cms_template.rb +29 -0
  164. data/app/models/user.rb +6 -3
  165. data/app/views/management/cms/_complete_gallery.html.erb +5 -0
  166. data/app/views/management/cms/_create_file_link.html.erb +21 -0
  167. data/app/views/management/cms/_crop_feature_image.html.erb +188 -0
  168. data/app/views/management/cms/_crop_image.html.erb +188 -0
  169. data/app/views/management/cms/_crop_results.html.erb +1 -0
  170. data/app/views/management/cms/_crop_results_feature_image.html.erb +1 -0
  171. data/app/views/management/cms/_crop_results_thumb.html.erb +1 -0
  172. data/app/views/management/cms/_crop_thumb.html.erb +188 -0
  173. data/app/views/management/cms/_dialogs.html.erb +39 -0
  174. data/app/views/management/cms/_edit_page.html.erb +176 -0
  175. data/app/views/management/cms/_gallery_index.html.erb +10 -0
  176. data/app/views/management/cms/_gallery_setup.html.erb +22 -0
  177. data/app/views/management/cms/_image.html.erb +3 -0
  178. data/app/views/management/cms/_image_details.html.erb +26 -0
  179. data/app/views/management/cms/_image_draggable.html.erb +4 -0
  180. data/app/views/management/cms/_list_page.html.erb +8 -0
  181. data/app/views/management/cms/_list_page_select.html.erb +8 -0
  182. data/app/views/management/cms/_list_pages.html.erb +1 -0
  183. data/app/views/management/cms/_list_pages_select.html.erb +1 -0
  184. data/app/views/management/cms/_page_attribute.html.erb +6 -0
  185. data/app/views/management/cms/_page_list.html.erb +171 -0
  186. data/app/views/management/cms/_page_list_source_folder.html.erb +20 -0
  187. data/app/views/management/cms/_page_list_source_tag.html.erb +18 -0
  188. data/app/views/management/cms/_select_gallery.html.erb +117 -0
  189. data/app/views/management/cms/_snippet.html.erb +3 -0
  190. data/app/views/management/cms/_sort_images.html.erb +15 -0
  191. data/app/views/management/cms/_temp.html.erb +3 -0
  192. data/app/views/management/cms/_template_options.html.erb +21 -0
  193. data/app/views/management/cms/_template_reference.html.erb +42 -0
  194. data/app/views/management/cms/_upload_feature_image.html.erb +35 -0
  195. data/app/views/management/cms/_upload_file.html.erb +31 -0
  196. data/app/views/management/cms/_upload_image.html.erb +74 -0
  197. data/app/views/management/cms/_upload_thumb.html.erb +35 -0
  198. data/app/views/management/cms/edit_master.html.erb +48 -0
  199. data/app/views/management/cms/edit_page_content.html.erb +4 -0
  200. data/app/views/management/cms/edit_snippet.html.erb +47 -0
  201. data/app/views/management/cms/edit_template.html.erb +48 -0
  202. data/app/views/management/cms/gallery_management.html.erb +108 -0
  203. data/app/views/management/cms/index.html.erb +20 -0
  204. data/app/views/management/cms/page_tags_for_lookup.html.erb +5 -0
  205. data/app/views/management/cms/pages.html.erb +99 -0
  206. data/app/views/management/cms/permission_denied.html.erb +1 -0
  207. data/app/views/management/cms/select_page.html.erb +57 -0
  208. data/app/views/management/cms/snippets.html.erb +14 -0
  209. data/app/views/management/cms/templates.html.erb +14 -0
  210. data/app/views/management/cms/toolbar_edit.html.erb +269 -0
  211. data/app/views/management/cms/toolbar_preview.html.erb +109 -0
  212. data/app/views/util/_calendar_days.html.erb +72 -0
  213. data/app/views/util/_calendar_month_year.html.erb +1 -0
  214. data/app/views/util/_date_picker.html.erb +56 -0
  215. data/app/views/util/_message.html.erb +1 -0
  216. data/app/views/util/_show_message.js.erb +6 -0
  217. data/app/views/util/_tab.html.erb +4 -0
  218. data/config/routes.rb +4 -1
  219. data/imagine_cms.gemspec +4 -0
  220. data/{vendor/gems → lib}/acts_as_versioned/.document +0 -0
  221. data/{vendor/gems → lib}/acts_as_versioned/.gitignore +2 -0
  222. data/{vendor/gems → lib}/acts_as_versioned/CHANGELOG +0 -0
  223. data/lib/acts_as_versioned/Gemfile +7 -0
  224. data/{vendor/gems → lib}/acts_as_versioned/MIT-LICENSE +0 -0
  225. data/{vendor/gems → lib}/acts_as_versioned/README +0 -0
  226. data/{vendor/gems → lib}/acts_as_versioned/RUNNING_UNIT_TESTS +0 -0
  227. data/{vendor/gems → lib}/acts_as_versioned/Rakefile +1 -1
  228. data/{vendor/gems → lib}/acts_as_versioned/acts_as_versioned.gemspec +4 -4
  229. data/{vendor/gems → lib}/acts_as_versioned/init.rb +0 -0
  230. data/{vendor/gems → lib}/acts_as_versioned/lib/acts_as_versioned.rb +109 -107
  231. data/{vendor/gems → lib}/acts_as_versioned/test/abstract_unit.rb +0 -0
  232. data/{vendor/gems → lib}/acts_as_versioned/test/database.yml +0 -0
  233. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/authors.yml +0 -0
  234. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/landmark.rb +0 -0
  235. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/landmark_versions.yml +0 -0
  236. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/landmarks.yml +0 -0
  237. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/locked_pages.yml +0 -0
  238. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/locked_pages_revisions.yml +0 -0
  239. data/{vendor/gems/acts_as_versioned/test/fixtures/migrations/1_add_versioned_tables.rb → lib/acts_as_versioned/test/fixtures/migrations/2_add_versioned_tables.rb} +0 -0
  240. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/page.rb +0 -0
  241. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/page_versions.yml +0 -0
  242. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/pages.yml +0 -0
  243. data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/widget.rb +0 -0
  244. data/{vendor/gems → lib}/acts_as_versioned/test/migration_test.rb +0 -1
  245. data/{vendor/gems → lib}/acts_as_versioned/test/schema.rb +0 -0
  246. data/{vendor/gems → lib}/acts_as_versioned/test/versioned_test.rb +0 -0
  247. data/lib/extensions/action_controller.rb +154 -143
  248. data/lib/imagine_cms/engine.rb +33 -12
  249. data/lib/imagine_cms/version.rb +1 -1
  250. data/lib/imagine_cms.rb +30 -6
  251. data/lib/prototype_legacy_helper/README.markdown +13 -0
  252. data/lib/prototype_legacy_helper/init.rb +1 -0
  253. data/lib/prototype_legacy_helper/lib/prototype_legacy_helper.rb +430 -0
  254. data/lib/prototype_legacy_helper/test/test_prototype_helper.rb +297 -0
  255. data/lib/upload_progress/CHANGELOG +5 -0
  256. data/lib/upload_progress/MIT-LICENSE +20 -0
  257. data/lib/upload_progress/README +45 -0
  258. data/{vendor/gems/acts_as_tree → lib/upload_progress}/Rakefile +6 -5
  259. data/lib/upload_progress/init.rb +7 -0
  260. data/lib/upload_progress/lib/multipart_progress.rb +176 -0
  261. data/lib/upload_progress/lib/progress.rb +145 -0
  262. data/lib/upload_progress/lib/upload_progress.rb +303 -0
  263. data/lib/upload_progress/lib/upload_progress_helper.rb +425 -0
  264. data/lib/upload_progress/public/stylesheets/upload_progress.css +21 -0
  265. data/lib/upload_progress/test/multipart_progress_testx.rb +364 -0
  266. data/lib/upload_progress/test/upload_progress_helper_testx.rb +134 -0
  267. data/lib/upload_progress/test/upload_progress_testx.rb +88 -0
  268. metadata +305 -43
  269. data/app/assets/manage/btn_delete.gif +0 -0
  270. data/vendor/gems/.DS_Store +0 -0
  271. data/vendor/gems/acts_as_tree/README +0 -26
  272. data/vendor/gems/acts_as_tree/init.rb +0 -1
  273. data/vendor/gems/acts_as_tree/lib/active_record/acts/tree.rb +0 -96
  274. data/vendor/gems/acts_as_tree/test/acts_as_tree_test.rb +0 -219
  275. data/vendor/gems/acts_as_tree/test/fixtures/mixin.rb +0 -0
  276. data/vendor/gems/acts_as_tree/test/fixtures/mixins.yml +0 -0
  277. data/vendor/gems/acts_as_tree/test/schema.rb +0 -0
  278. data/vendor/gems/acts_as_versioned/Gemfile +0 -7
@@ -0,0 +1,263 @@
1
+ /*
2
+ * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
3
+ *
4
+ * Copyright (C) 2007 Fernando M.A.d.S. <fermads@gmail.com>
5
+ *
6
+ * Contributors :
7
+ *
8
+ * Michael Hurni <michael.hurni@gmail.com>
9
+ *
10
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
11
+ * GNU Lesser General Public License as published by the Free Software Foundation.
12
+ *
13
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
14
+ */
15
+
16
+
17
+ CodePress = {
18
+ scrolling : false,
19
+ autocomplete : true,
20
+
21
+ // set initial vars and start sh
22
+ initialize : function() {
23
+ if(typeof(editor)=='undefined' && !arguments[0]) return;
24
+ chars = '|32|46|62|'; // charcodes that trigger syntax highlighting
25
+ cc = '\u2009'; // control char
26
+ editor = document.getElementsByTagName('pre')[0];
27
+ editor.contentEditable = 'true';
28
+ document.getElementsByTagName('body')[0].onfocus = function() {editor.focus();}
29
+ document.attachEvent('onkeydown', this.metaHandler);
30
+ document.attachEvent('onkeypress', this.keyHandler);
31
+ window.attachEvent('onscroll', function() { if(!CodePress.scrolling) setTimeout(function(){CodePress.syntaxHighlight('scroll')},1)});
32
+ completeChars = this.getCompleteChars();
33
+ // CodePress.syntaxHighlight('init');
34
+ setTimeout(function() { window.scroll(0,0) },50); // scroll IE to top
35
+ },
36
+
37
+ // treat key bindings
38
+ keyHandler : function(evt) {
39
+ charCode = evt.keyCode;
40
+ if(completeChars.indexOf('|'+String.fromCharCode(charCode)+'|')!=-1 && CodePress.autocomplete) { // auto complete
41
+ CodePress.complete(String.fromCharCode(charCode))
42
+ }
43
+ else if(chars.indexOf('|'+charCode+'|')!=-1||charCode==13) { // syntax highlighting
44
+ CodePress.syntaxHighlight('generic');
45
+ }
46
+ },
47
+
48
+ metaHandler : function(evt) {
49
+ keyCode = evt.keyCode;
50
+ if(keyCode==9 || evt.tabKey) {
51
+ CodePress.snippets();
52
+ }
53
+ else if((keyCode==122||keyCode==121||keyCode==90) && evt.ctrlKey) { // undo and redo
54
+ (keyCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo();
55
+ evt.returnValue = false;
56
+ }
57
+ else if(keyCode==34||keyCode==33) { // handle page up/down for IE
58
+ self.scrollBy(0, (keyCode==34) ? 200 : -200);
59
+ evt.returnValue = false;
60
+ }
61
+ else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
62
+ CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
63
+ }
64
+ else if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && keyCode!=90) { // shortcuts = ctrl||appleKey+shift+key!=z(undo)
65
+ CodePress.shortcuts(keyCode);
66
+ evt.returnValue = false;
67
+ }
68
+ else if(keyCode==86 && evt.ctrlKey) { // paste
69
+ // TODO: pasted text should be parsed and highlighted
70
+ }
71
+ },
72
+
73
+ // put cursor back to its original position after every parsing
74
+ findString : function() {
75
+ range = self.document.body.createTextRange();
76
+ if(range.findText(cc)){
77
+ range.select();
78
+ range.text = '';
79
+ }
80
+ },
81
+
82
+ // split big files, highlighting parts of it
83
+ split : function(code,flag) {
84
+ if(flag=='scroll') {
85
+ this.scrolling = true;
86
+ return code;
87
+ }
88
+ else {
89
+ this.scrolling = false;
90
+ mid = code.indexOf(cc);
91
+ if(mid-2000<0) {ini=0;end=4000;}
92
+ else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;}
93
+ else {ini=mid-2000;end=mid+2000;}
94
+ code = code.substring(ini,end);
95
+ return code.substring(code.indexOf('<P>'),code.lastIndexOf('</P>')+4);
96
+ }
97
+ },
98
+
99
+ // syntax highlighting parser
100
+ syntaxHighlight : function(flag) {
101
+ if(flag!='init') document.selection.createRange().text = cc;
102
+ o = editor.innerHTML;
103
+ o = o.replace(/<P>/g,'\n');
104
+ o = o.replace(/<\/P>/g,'\r');
105
+ o = o.replace(/<.*?>/g,'');
106
+ o = o.replace(/&nbsp;/g,'');
107
+ o = '<PRE><P>'+o+'</P></PRE>';
108
+ o = o.replace(/\n\r/g,'<P></P>');
109
+ o = o.replace(/\n/g,'<P>');
110
+ o = o.replace(/\r/g,'<\/P>');
111
+ o = o.replace(/<P>(<P>)+/,'<P>');
112
+ o = o.replace(/<\/P>(<\/P>)+/,'</P>');
113
+ o = o.replace(/<P><\/P>/g,'<P><BR/></P>');
114
+ x = z = this.split(o,flag);
115
+
116
+ if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
117
+
118
+ for(i=0;i<Language.syntax.length;i++)
119
+ x = x.replace(Language.syntax[i].input,Language.syntax[i].output);
120
+
121
+ editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.replace(z,x);
122
+ if(flag!='init') this.findString();
123
+ },
124
+
125
+ snippets : function(evt) {
126
+ var snippets = Language.snippets;
127
+ var trigger = this.getLastWord();
128
+ for (var i=0; i<snippets.length; i++) {
129
+ if(snippets[i].input == trigger) {
130
+ var content = snippets[i].output.replace(/</g,'&lt;');
131
+ content = content.replace(/>/g,'&gt;');
132
+ if(content.indexOf('$0')<0) content += cc;
133
+ else content = content.replace(/\$0/,cc);
134
+ content = content.replace(/\n/g,'</P><P>');
135
+ var pattern = new RegExp(trigger+cc);
136
+ this.syntaxHighlight('snippets',pattern,content);
137
+ }
138
+ }
139
+ },
140
+
141
+ readOnly : function() {
142
+ editor.contentEditable = (arguments[0]) ? 'false' : 'true';
143
+ },
144
+
145
+ complete : function(trigger) {
146
+ var complete = Language.complete;
147
+ for (var i=0; i<complete.length; i++) {
148
+ if(complete[i].input == trigger) {
149
+ var pattern = new RegExp('\\'+trigger+cc);
150
+ var content = complete[i].output.replace(/\$0/g,cc);
151
+ setTimeout(function () { CodePress.syntaxHighlight('complete',pattern,content)},0); // wait for char to appear on screen
152
+ }
153
+ }
154
+ },
155
+
156
+ getCompleteChars : function() {
157
+ var cChars = '';
158
+ for(var i=0;i<Language.complete.length;i++)
159
+ cChars += '|'+Language.complete[i].input;
160
+ return cChars+'|';
161
+ },
162
+
163
+ shortcuts : function() {
164
+ var cCode = arguments[0];
165
+ if(cCode==13) cCode = '[enter]';
166
+ else if(cCode==32) cCode = '[space]';
167
+ else cCode = '['+String.fromCharCode(keyCode).toLowerCase()+']';
168
+ for(var i=0;i<Language.shortcuts.length;i++)
169
+ if(Language.shortcuts[i].input == cCode)
170
+ this.insertCode(Language.shortcuts[i].output,false);
171
+ },
172
+
173
+ getLastWord : function() {
174
+ var rangeAndCaret = CodePress.getRangeAndCaret();
175
+ words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]);
176
+ words = words.replace(/[\s\r\);]/g,'\n').split('\n');
177
+ return words[words.length-1];
178
+ },
179
+
180
+ getRangeAndCaret : function() {
181
+ var range = document.selection.createRange();
182
+ var caret = Math.abs(range.moveStart('character', -1000000)+1);
183
+ range = this.getCode();
184
+ range = range.replace(/\n\r/gi,' ');
185
+ range = range.replace(/\n/gi,'');
186
+ return [range.toString(),caret];
187
+ },
188
+
189
+ insertCode : function(code,replaceCursorBefore) {
190
+ var repdeb = '';
191
+ var repfin = '';
192
+
193
+ if(replaceCursorBefore) { repfin = code; }
194
+ else { repdeb = code; }
195
+
196
+ if(typeof document.selection != 'undefined') {
197
+ var range = document.selection.createRange();
198
+ range.text = repdeb + repfin;
199
+ range = document.selection.createRange();
200
+ range.move('character', -repfin.length);
201
+ range.select();
202
+ }
203
+ },
204
+
205
+ // get code from editor
206
+ getCode : function() {
207
+ var code = editor.innerHTML;
208
+ code = code.replace(/<br>/g,'\n');
209
+ code = code.replace(/<\/p>/gi,'\r');
210
+ code = code.replace(/<p>/i,''); // IE first line fix
211
+ code = code.replace(/<p>/gi,'\n');
212
+ code = code.replace(/&nbsp;/gi,'');
213
+ code = code.replace(/\u2009/g,'');
214
+ code = code.replace(/<.*?>/g,'');
215
+ code = code.replace(/&lt;/g,'<');
216
+ code = code.replace(/&gt;/g,'>');
217
+ code = code.replace(/&amp;/gi,'&');
218
+ return code;
219
+ },
220
+
221
+ // put code inside editor
222
+ setCode : function() {
223
+ var code = arguments[0];
224
+ code = code.replace(/\u2009/gi,'');
225
+ code = code.replace(/&/gi,'&amp;');
226
+ code = code.replace(/</g,'&lt;');
227
+ code = code.replace(/>/g,'&gt;');
228
+ editor.innerHTML = '<pre>'+code+'</pre>';
229
+ },
230
+
231
+
232
+ // undo and redo methods
233
+ actions : {
234
+ pos : -1, // actual history position
235
+ history : [], // history vector
236
+
237
+ undo : function() {
238
+ if(editor.innerHTML.indexOf(cc)==-1){
239
+ document.selection.createRange().text = cc;
240
+ this.history[this.pos] = editor.innerHTML;
241
+ }
242
+ this.pos--;
243
+ if(typeof(this.history[this.pos])=='undefined') this.pos++;
244
+ editor.innerHTML = this.history[this.pos];
245
+ CodePress.findString();
246
+ },
247
+
248
+ redo : function() {
249
+ this.pos++;
250
+ if(typeof(this.history[this.pos])=='undefined') this.pos--;
251
+ editor.innerHTML = this.history[this.pos];
252
+ CodePress.findString();
253
+ },
254
+
255
+ next : function() { // get next vector position and clean old ones
256
+ if(this.pos>20) this.history[this.pos-21] = undefined;
257
+ return ++this.pos;
258
+ }
259
+ }
260
+ }
261
+
262
+ Language={};
263
+ window.attachEvent('onload', function() { CodePress.initialize('new');});
@@ -0,0 +1,259 @@
1
+ /*
2
+ * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
3
+ *
4
+ * Copyright (C) 2007 Fernando M.A.d.S. <fermads@gmail.com>
5
+ *
6
+ * Contributors :
7
+ *
8
+ * Michael Hurni <michael.hurni@gmail.com>
9
+ *
10
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
11
+ * GNU Lesser General Public License as published by the Free Software Foundation.
12
+ *
13
+ * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
14
+ */
15
+
16
+
17
+ CodePress = {
18
+ scrolling : false,
19
+ autocomplete : true,
20
+
21
+ // set initial vars and start sh
22
+ initialize : function() {
23
+ if(typeof(editor)=='undefined' && !arguments[0]) return;
24
+ chars = '|32|46|62|'; // charcodes that trigger syntax highlighting
25
+ cc = '\u2009'; // control char
26
+ editor = document.getElementsByTagName('body')[0];
27
+ document.designMode = 'on';
28
+ document.addEventListener('keyup', this.keyHandler, true);
29
+ window.addEventListener('scroll', function() { if(!CodePress.scrolling) CodePress.syntaxHighlight('scroll') }, false);
30
+ completeChars = this.getCompleteChars();
31
+ // CodePress.syntaxHighlight('init');
32
+ },
33
+
34
+ // treat key bindings
35
+ keyHandler : function(evt) {
36
+ keyCode = evt.keyCode;
37
+ charCode = evt.charCode;
38
+
39
+ if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && charCode!=90) { // shortcuts = ctrl||appleKey+shift+key!=z(undo)
40
+ CodePress.shortcuts(charCode?charCode:keyCode);
41
+ }
42
+ else if(completeChars.indexOf('|'+String.fromCharCode(charCode)+'|')!=-1 && CodePress.autocomplete) { // auto complete
43
+ CodePress.complete(String.fromCharCode(charCode));
44
+ }
45
+ else if(chars.indexOf('|'+charCode+'|')!=-1||keyCode==13) { // syntax highlighting
46
+ CodePress.syntaxHighlight('generic');
47
+ }
48
+ else if(keyCode==9 || evt.tabKey) { // snippets activation (tab)
49
+ CodePress.snippets(evt);
50
+ }
51
+ else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
52
+ CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
53
+ }
54
+ else if((charCode==122||charCode==121||charCode==90) && evt.ctrlKey) { // undo and redo
55
+ (charCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo();
56
+ evt.preventDefault();
57
+ }
58
+ else if(keyCode==86 && evt.ctrlKey) { // paste
59
+ // TODO: pasted text should be parsed and highlighted
60
+ }
61
+ },
62
+
63
+ // put cursor back to its original position after every parsing
64
+ findString : function() {
65
+ var sel = window.getSelection();
66
+ var range = window.document.createRange();
67
+ var span = window.document.getElementsByTagName('span')[0];
68
+
69
+ range.selectNode(span);
70
+ sel.removeAllRanges();
71
+ sel.addRange(range);
72
+ span.parentNode.removeChild(span);
73
+ //if(self.find(cc))
74
+ //window.getSelection().getRangeAt(0).deleteContents();
75
+ },
76
+
77
+ // split big files, highlighting parts of it
78
+ split : function(code,flag) {
79
+ if(flag=='scroll') {
80
+ this.scrolling = true;
81
+ return code;
82
+ }
83
+ else {
84
+ this.scrolling = false;
85
+ mid = code.indexOf('<SPAN>');
86
+ if(mid-2000<0) {ini=0;end=4000;}
87
+ else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;}
88
+ else {ini=mid-2000;end=mid+2000;}
89
+ code = code.substring(ini,end);
90
+ return code;
91
+ }
92
+ },
93
+
94
+ // syntax highlighting parser
95
+ syntaxHighlight : function(flag) {
96
+ //if(document.designMode=='off') document.designMode='on'
97
+ if(flag!='init') {
98
+ var span = document.createElement('span');
99
+ window.getSelection().getRangeAt(0).insertNode(span);
100
+ }
101
+
102
+ o = editor.innerHTML;
103
+ // o = o.replace(/<br>/g,'\r\n');
104
+ // o = o.replace(/<(b|i|s|u|a|em|tt|ins|big|cite|strong)?>/g,'');
105
+ //alert(o)
106
+ o = o.replace(/<(?!span|\/span|br).*?>/gi,'');
107
+ // alert(o)
108
+ // x = o;
109
+ x = z = this.split(o,flag);
110
+ //alert(z)
111
+ // x = x.replace(/\r\n/g,'<br>');
112
+ x = x.replace(/\t/g, ' ');
113
+
114
+
115
+ if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
116
+
117
+ for(i=0;i<Language.syntax.length;i++)
118
+ x = x.replace(Language.syntax[i].input,Language.syntax[i].output);
119
+
120
+ editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.split(z).join(x);
121
+
122
+ if(flag!='init') this.findString();
123
+ },
124
+
125
+ getLastWord : function() {
126
+ var rangeAndCaret = CodePress.getRangeAndCaret();
127
+ var words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]).split(/[\s\r\n\);]/);
128
+ return words[words.length-1].replace(/_/g,'');
129
+ },
130
+
131
+ snippets : function(evt) {
132
+ var snippets = Language.snippets;
133
+ var trigger = this.getLastWord();
134
+ for (var i=0; i<snippets.length; i++) {
135
+ if(snippets[i].input == trigger) {
136
+ var content = snippets[i].output.replace(/</g,'&lt;');
137
+ content = content.replace(/>/g,'&gt;');
138
+ if(content.indexOf('$0')<0) content += cc;
139
+ else content = content.replace(/\$0/,cc);
140
+ content = content.replace(/\n/g,'<br>');
141
+ var pattern = new RegExp(trigger+cc,'g');
142
+ evt.preventDefault(); // prevent the tab key from being added
143
+ this.syntaxHighlight('snippets',pattern,content);
144
+ }
145
+ }
146
+ },
147
+
148
+ readOnly : function() {
149
+ document.designMode = (arguments[0]) ? 'off' : 'on';
150
+ },
151
+
152
+ complete : function(trigger) {
153
+ window.getSelection().getRangeAt(0).deleteContents();
154
+ var complete = Language.complete;
155
+ for (var i=0; i<complete.length; i++) {
156
+ if(complete[i].input == trigger) {
157
+ var pattern = new RegExp('\\'+trigger+cc);
158
+ var content = complete[i].output.replace(/\$0/g,cc);
159
+ parent.setTimeout(function () { CodePress.syntaxHighlight('complete',pattern,content)},0); // wait for char to appear on screen
160
+ }
161
+ }
162
+ },
163
+
164
+ getCompleteChars : function() {
165
+ var cChars = '';
166
+ for(var i=0;i<Language.complete.length;i++)
167
+ cChars += '|'+Language.complete[i].input;
168
+ return cChars+'|';
169
+ },
170
+
171
+ shortcuts : function() {
172
+ var cCode = arguments[0];
173
+ if(cCode==13) cCode = '[enter]';
174
+ else if(cCode==32) cCode = '[space]';
175
+ else cCode = '['+String.fromCharCode(charCode).toLowerCase()+']';
176
+ for(var i=0;i<Language.shortcuts.length;i++)
177
+ if(Language.shortcuts[i].input == cCode)
178
+ this.insertCode(Language.shortcuts[i].output,false);
179
+ },
180
+
181
+ getRangeAndCaret : function() {
182
+ var range = window.getSelection().getRangeAt(0);
183
+ var range2 = range.cloneRange();
184
+ var node = range.endContainer;
185
+ var caret = range.endOffset;
186
+ range2.selectNode(node);
187
+ return [range2.toString(),caret];
188
+ },
189
+
190
+ insertCode : function(code,replaceCursorBefore) {
191
+ var range = window.getSelection().getRangeAt(0);
192
+ var node = window.document.createTextNode(code);
193
+ var selct = window.getSelection();
194
+ var range2 = range.cloneRange();
195
+ // Insert text at cursor position
196
+ selct.removeAllRanges();
197
+ range.deleteContents();
198
+ range.insertNode(node);
199
+ // Move the cursor to the end of text
200
+ range2.selectNode(node);
201
+ range2.collapse(replaceCursorBefore);
202
+ selct.removeAllRanges();
203
+ selct.addRange(range2);
204
+ },
205
+
206
+ // get code from editor
207
+ getCode : function() {
208
+ var code = editor.innerHTML;
209
+ code = code.replace(/<br>/g,'\n');
210
+ code = code.replace(/\u2009/g,'');
211
+ code = code.replace(/<.*?>/g,'');
212
+ code = code.replace(/&lt;/g,'<');
213
+ code = code.replace(/&gt;/g,'>');
214
+ code = code.replace(/&amp;/gi,'&');
215
+ return code;
216
+ },
217
+
218
+ // put code inside editor
219
+ setCode : function() {
220
+ var code = arguments[0];
221
+ code = code.replace(/\u2009/gi,'');
222
+ code = code.replace(/&/gi,'&amp;');
223
+ code = code.replace(/</g,'&lt;');
224
+ code = code.replace(/>/g,'&gt;');
225
+ editor.innerHTML = code;
226
+ },
227
+
228
+ // undo and redo methods
229
+ actions : {
230
+ pos : -1, // actual history position
231
+ history : [], // history vector
232
+
233
+ undo : function() {
234
+ if(editor.innerHTML.indexOf(cc)==-1){
235
+ window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));
236
+ this.history[this.pos] = editor.innerHTML;
237
+ }
238
+ this.pos--;
239
+ if(typeof(this.history[this.pos])=='undefined') this.pos++;
240
+ editor.innerHTML = this.history[this.pos];
241
+ CodePress.findString();
242
+ },
243
+
244
+ redo : function() {
245
+ this.pos++;
246
+ if(typeof(this.history[this.pos])=='undefined') this.pos--;
247
+ editor.innerHTML = this.history[this.pos];
248
+ CodePress.findString();
249
+ },
250
+
251
+ next : function() { // get next vector position and clean old ones
252
+ if(this.pos>20) this.history[this.pos-21] = undefined;
253
+ return ++this.pos;
254
+ }
255
+ }
256
+ }
257
+
258
+ Language={};
259
+ window.addEventListener('load', function() { CodePress.initialize('new'); }, true);
@@ -0,0 +1,23 @@
1
+ /*
2
+ * CodePress regular expressions for CSS syntax highlighting
3
+ */
4
+
5
+ // CSS
6
+ Language.syntax = [
7
+ { input : /(.*?){(.*?)}/g,output : '<b>$1</b>{<u>$2</u>}' }, // tags, ids, classes, values
8
+ { input : /([\w-]*?):([^\/])/g,output : '<a>$1</a>:$2' }, // keys
9
+ { input : /\((.*?)\)/g,output : '(<s>$1</s>)' }, // parameters
10
+ { input : /\/\*(.*?)\*\//g,output : '<i>/*$1*/</i>'} // comments
11
+ ]
12
+
13
+ Language.snippets = []
14
+
15
+ Language.complete = [
16
+ { input : '\'',output : '\'$0\'' },
17
+ { input : '"', output : '"$0"' },
18
+ { input : '(', output : '\($0\)' },
19
+ { input : '[', output : '\[$0\]' },
20
+ { input : '{', output : '{\n\t$0\n}' }
21
+ ]
22
+
23
+ Language.shortcuts = []
@@ -0,0 +1,25 @@
1
+ /*
2
+ * CodePress regular expressions for generic syntax highlighting
3
+ */
4
+
5
+ // generic languages
6
+ Language.syntax = [
7
+ { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>' }, // strings double quote
8
+ { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>' }, // strings single quote
9
+ { input : /\b(abstract|continue|for|new|switch|default|goto|boolean|do|if|private|this|break|double|protected|throw|byte|else|import|public|throws|case|return|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|const|float|while|function|label)\b/g, output : '<b>$1</b>' }, // reserved words
10
+ { input : /([\(\){}])/g, output : '<em>$1</em>' }, // special chars;
11
+ { input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3' }, // comments //
12
+ { input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' } // comments /* */
13
+ ]
14
+
15
+ Language.snippets = []
16
+
17
+ Language.complete = [
18
+ { input : '\'', output : '\'$0\'' },
19
+ { input : '"', output : '"$0"' },
20
+ { input : '(', output : '\($0\)' },
21
+ { input : '[', output : '\[$0\]' },
22
+ { input : '{', output : '{\n\t$0\n}' }
23
+ ]
24
+
25
+ Language.shortcuts = []
@@ -0,0 +1,63 @@
1
+ /*
2
+ * CodePress regular expressions for HTML syntax highlighting
3
+ */
4
+
5
+ // HTML
6
+ Language.syntax = [
7
+ { input : /(&lt;[^!]*?&gt;)/g, output : '<b>$1</b>' }, // all tags
8
+ { input : /(&lt;a .*?&gt;|&lt;\/a&gt;)/g, output : '<a>$1</a>' }, // links
9
+ { input : /(&lt;img .*?&gt;)/g, output : '<big>$1</big>' }, // images
10
+ { input : /(&lt;\/?(button|textarea|form|input|select|option|label).*?&gt;)/g, output : '<u>$1</u>' }, // forms
11
+ { input : /(&lt;style.*?&gt;)(.*?)(&lt;\/style&gt;)/g, output : '<em>$1</em><em>$2</em><em>$3</em>' }, // style tags
12
+ { input : /(&lt;script.*?&gt;)(.*?)(&lt;\/script&gt;)/g, output : '<strong>$1</strong><tt>$2</tt><strong>$3</strong>' }, // script tags
13
+ { input : /=(".*?")/g, output : '=<s>$1</s>' }, // atributes double quote
14
+ { input : /=('.*?')/g, output : '=<s>$1</s>' }, // atributes single quote
15
+ { input : /(&lt;!--.*?--&gt.)/g, output : '<ins>$1</ins>' }, // comments
16
+ { input : /(&lt;%.*?%&gt.)/g, output : '<ins><tt>$1</tt></ins>' }, // erb
17
+ { input : /(\#.*?<br>)/g, output : '<ins><i>$1</i></ins>' }, // erb comment
18
+ { input : /(\@[\w]+)/g, output : '<ins><b>$1</b></ins>' }, // ruby instance var
19
+ { input : /(\:[A-Za-z_][\w]*)/g, output : '<ins><u>$1</u></ins>' }, // ruby symbol
20
+ { input : /\b(alert|window|document|break|continue|do|for|new|this|void|case|default|else|function|return|typeof|while|if|label|switch|var|with|catch|boolean|int|try|false|throws|null|true|goto)\b/g, output : '<i>$1</i>' } // script reserved words
21
+ ]
22
+
23
+ Language.snippets = [
24
+ { input : 'aref', output : '<a href="$0"></a>' },
25
+ { input : 'h1', output : '<h1>$0</h1>' },
26
+ { input : 'h2', output : '<h2>$0</h2>' },
27
+ { input : 'h3', output : '<h3>$0</h3>' },
28
+ { input : 'h4', output : '<h4>$0</h4>' },
29
+ { input : 'h5', output : '<h5>$0</h5>' },
30
+ { input : 'h6', output : '<h6>$0</h6>' },
31
+ { input : 'html', output : '<html>\n\t$0\n</html>' },
32
+ { input : 'head', output : '<head>\n\t<meta http-equiv="content-type" content="text/html; charset=utf-8" />\n\t<title>$0</title>\n\t\n</head>' },
33
+ { input : 'img', output : '<img src="$0" alt="" />' },
34
+ { input : 'input', output : '<input name="$0" id="" type="" value="" />' },
35
+ { input : 'label', output : '<label for="$0"></label>' },
36
+ { input : 'legend', output : '<legend>\n\t$0\n</legend>' },
37
+ { input : 'link', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' },
38
+ { input : 'base', output : '<base href="$0" />' },
39
+ { input : 'body', output : '<body>\n\t$0\n</body>' },
40
+ { input : 'css', output : '<link rel="stylesheet" href="$0" type="text/css" media="screen" charset="utf-8" />' },
41
+ { input : 'div', output : '<div>\n\t$0\n</div>' },
42
+ { input : 'divid', output : '<div id="$0">\n\t\n</div>' },
43
+ { input : 'dl', output : '<dl>\n\t<dt>\n\t\t$0\n\t</dt>\n\t<dd></dd>\n</dl>' },
44
+ { input : 'fieldset', output : '<fieldset>\n\t$0\n</fieldset>' },
45
+ { input : 'form', output : '<form action="$0" method="" name="">\n\t\n</form>' },
46
+ { input : 'meta', output : '<meta name="$0" content="" />' },
47
+ { input : 'p', output : '<p>$0</p>' },
48
+ { input : 'script', output : '<script type="text/javascript">\n\t$0\t\n</script>' },
49
+ { input : 'scriptsrc', output : '<script src="$0" type="text/javascript"></script>' },
50
+ { input : 'span', output : '<span>$0</span>' },
51
+ { input : 'table', output : '<table border="$0" cellspacing="" cellpadding="">\n\t<tr><th></th></tr>\n\t<tr><td></td></tr>\n</table>' },
52
+ { input : 'style', output : '<style type="text/css" media="screen">\n\t$0\n</style>' }
53
+ ]
54
+
55
+ Language.complete = [
56
+ { input : '\'',output : '\'$0\'' },
57
+ { input : '"', output : '"$0"' },
58
+ { input : '(', output : '\($0\)' },
59
+ { input : '[', output : '\[$0\]' },
60
+ { input : '{', output : '{\n\t$0\n}' }
61
+ ]
62
+
63
+ Language.shortcuts = []
@@ -0,0 +1,24 @@
1
+ /*
2
+ * CodePress regular expressions for Java syntax highlighting
3
+ */
4
+
5
+ // Java
6
+ Language.syntax = [
7
+ { input : /\"(.*?)(\"|<br>|<\/P>)/g, output : '<s>"$1$2</s>'}, // strings double quote
8
+ { input : /\'(.*?)(\'|<br>|<\/P>)/g, output : '<s>\'$1$2</s>'}, // strings single quote
9
+ { input : /\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/g, output : '<b>$1</b>'}, // reserved words
10
+ { input : /([^:]|^)\/\/(.*?)(<br|<\/P)/g, output : '$1<i>//$2</i>$3'}, // comments //
11
+ { input : /\/\*(.*?)\*\//g, output : '<i>/*$1*/</i>' }// comments /* */
12
+ ]
13
+
14
+ Language.snippets = []
15
+
16
+ Language.complete = [
17
+ { input : '\'',output : '\'$0\'' },
18
+ { input : '"', output : '"$0"' },
19
+ { input : '(', output : '\($0\)' },
20
+ { input : '[', output : '\[$0\]' },
21
+ { input : '{', output : '{\n\t$0\n}' }
22
+ ]
23
+
24
+ Language.shortcuts = []