glebtv-ckeditor 4.6.0 → 4.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (456) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -22
  3. data/MIT-LICENSE +0 -0
  4. data/README.md +2 -325
  5. data/Rakefile +1 -2
  6. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/gal_add.jpg +0 -0
  7. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/gal_add.png +0 -0
  8. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/gal_del.png +0 -0
  9. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/gal_more.gif +0 -0
  10. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/preloader.gif +0 -0
  11. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/avi.gif +0 -0
  12. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/ckfnothumb.gif +0 -0
  13. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/doc.gif +0 -0
  14. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/docx.gif +0 -0
  15. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/exe.gif +0 -0
  16. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/gz.gif +0 -0
  17. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/htm.gif +0 -0
  18. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/jpg.gif +0 -0
  19. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/mp3.gif +0 -0
  20. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/mpg.gif +0 -0
  21. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/pdf.gif +0 -0
  22. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/psd.gif +0 -0
  23. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/rar.gif +0 -0
  24. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/swf.gif +0 -0
  25. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/tar.gif +0 -0
  26. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/txt.gif +0 -0
  27. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/unknown.gif +0 -0
  28. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/wmv.gif +0 -0
  29. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/xls.gif +0 -0
  30. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/xlsx.gif +0 -0
  31. data/app/assets/{javascripts/ckeditor/filebrowser/images → images/ckeditor/filebrowser}/thumbs/zip.gif +0 -0
  32. data/app/assets/javascripts/ckeditor/application.js +0 -0
  33. data/app/assets/javascripts/ckeditor/config.js.erb +1 -2
  34. data/app/assets/javascripts/ckeditor/filebrowser/javascripts/{application.js.erb → application.js} +4 -6
  35. data/app/assets/javascripts/ckeditor/filebrowser/javascripts/fileuploader.js +0 -0
  36. data/app/assets/javascripts/ckeditor/filebrowser/javascripts/jquery.endless-scroll.js +0 -0
  37. data/app/assets/javascripts/ckeditor/filebrowser/javascripts/jquery.tmpl.min.js +0 -0
  38. data/app/assets/javascripts/ckeditor/filebrowser/javascripts/rails.js +0 -0
  39. data/app/assets/javascripts/ckeditor/init.js.erb +0 -0
  40. data/app/assets/stylesheets/ckeditor/application.css +1 -1
  41. data/app/assets/stylesheets/ckeditor/filebrowser/uploader.scss +172 -0
  42. data/app/controllers/ckeditor/application_controller.rb +9 -10
  43. data/app/controllers/ckeditor/attachment_files_controller.rb +11 -12
  44. data/app/controllers/ckeditor/pictures_controller.rb +10 -12
  45. data/app/helpers/ckeditor/application_helper.rb +1 -10
  46. data/app/views/ckeditor/attachment_files/index.html.erb +5 -5
  47. data/app/views/ckeditor/pictures/index.html.erb +5 -5
  48. data/app/views/ckeditor/shared/_asset.html.erb +18 -21
  49. data/app/views/ckeditor/shared/_asset_tmpl.html.erb +17 -20
  50. data/app/views/layouts/ckeditor/application.html.erb +3 -3
  51. data/config/locales/en.ckeditor.yml +0 -0
  52. data/config/locales/ru.ckeditor.yml +0 -0
  53. data/config/routes.rb +2 -2
  54. data/lib/ckeditor.rb +42 -34
  55. data/lib/ckeditor/asset_response.rb +74 -25
  56. data/lib/ckeditor/backend/carrierwave.rb +8 -5
  57. data/lib/ckeditor/backend/dragonfly.rb +5 -3
  58. data/lib/ckeditor/backend/paperclip.rb +15 -22
  59. data/lib/ckeditor/backend/refile.rb +6 -4
  60. data/lib/ckeditor/helpers/controllers.rb +15 -20
  61. data/lib/ckeditor/helpers/form_builder.rb +1 -1
  62. data/lib/ckeditor/helpers/form_helper.rb +0 -0
  63. data/lib/ckeditor/helpers/view_helper.rb +0 -0
  64. data/lib/ckeditor/hooks/cancan.rb +0 -2
  65. data/lib/ckeditor/hooks/formtastic.rb +2 -2
  66. data/lib/ckeditor/hooks/pundit.rb +1 -4
  67. data/lib/ckeditor/hooks/simple_form.rb +9 -14
  68. data/lib/ckeditor/http.rb +9 -11
  69. data/lib/ckeditor/orm/active_record.rb +1 -3
  70. data/lib/ckeditor/orm/base.rb +5 -5
  71. data/lib/ckeditor/orm/mongoid.rb +4 -6
  72. data/lib/ckeditor/paginatable.rb +3 -1
  73. data/lib/ckeditor/rails.rb +39 -0
  74. data/lib/ckeditor/text_area.rb +16 -15
  75. data/lib/ckeditor/utils.rb +45 -39
  76. data/lib/ckeditor/utils/content_type_detector.rb +7 -10
  77. data/lib/ckeditor/utils/javascript_code.rb +8 -3
  78. data/lib/ckeditor/version.rb +2 -2
  79. data/lib/generators/ckeditor/install_generator.rb +52 -30
  80. data/lib/generators/ckeditor/pundit_policy_generator.rb +1 -3
  81. data/lib/generators/ckeditor/templates/active_record/carrierwave/ckeditor/asset.rb +2 -2
  82. data/lib/generators/ckeditor/templates/active_record/carrierwave/ckeditor/attachment_file.rb +1 -1
  83. data/lib/generators/ckeditor/templates/active_record/carrierwave/ckeditor/picture.rb +1 -1
  84. data/lib/generators/ckeditor/templates/active_record/carrierwave/migration.rb +6 -10
  85. data/lib/generators/ckeditor/templates/active_record/carrierwave/migration_versioned.rb +22 -0
  86. data/lib/generators/ckeditor/templates/active_record/dragonfly/ckeditor/asset.rb +1 -1
  87. data/lib/generators/ckeditor/templates/active_record/dragonfly/ckeditor/attachment_file.rb +1 -1
  88. data/lib/generators/ckeditor/templates/active_record/dragonfly/ckeditor/picture.rb +4 -4
  89. data/lib/generators/ckeditor/templates/active_record/dragonfly/migration.rb +6 -10
  90. data/lib/generators/ckeditor/templates/active_record/dragonfly/migration_versioned.rb +23 -0
  91. data/lib/generators/ckeditor/templates/active_record/paperclip/ckeditor/asset.rb +0 -0
  92. data/lib/generators/ckeditor/templates/active_record/paperclip/ckeditor/attachment_file.rb +3 -3
  93. data/lib/generators/ckeditor/templates/active_record/paperclip/ckeditor/picture.rb +5 -5
  94. data/lib/generators/ckeditor/templates/active_record/paperclip/migration.rb +2 -5
  95. data/lib/generators/ckeditor/templates/active_record/paperclip/migration_versioned.rb +23 -0
  96. data/lib/generators/ckeditor/templates/active_record/refile/ckeditor/asset.rb +0 -0
  97. data/lib/generators/ckeditor/templates/active_record/refile/ckeditor/attachment_file.rb +0 -0
  98. data/lib/generators/ckeditor/templates/active_record/refile/ckeditor/picture.rb +0 -0
  99. data/lib/generators/ckeditor/templates/active_record/refile/migration.rb +7 -12
  100. data/lib/generators/ckeditor/templates/active_record/refile/migration_versioned.rb +23 -0
  101. data/lib/generators/ckeditor/templates/base/carrierwave/uploaders/ckeditor_attachment_file_uploader.rb +0 -0
  102. data/lib/generators/ckeditor/templates/base/carrierwave/uploaders/ckeditor_picture_uploader.rb +4 -4
  103. data/lib/generators/ckeditor/templates/base/dragonfly/initializer.rb +4 -5
  104. data/lib/generators/ckeditor/templates/ckeditor.rb +16 -7
  105. data/lib/generators/ckeditor/templates/mongoid/carrierwave/ckeditor/asset.rb +2 -2
  106. data/lib/generators/ckeditor/templates/mongoid/carrierwave/ckeditor/attachment_file.rb +1 -1
  107. data/lib/generators/ckeditor/templates/mongoid/carrierwave/ckeditor/picture.rb +1 -1
  108. data/lib/generators/ckeditor/templates/mongoid/paperclip/ckeditor/asset.rb +0 -0
  109. data/lib/generators/ckeditor/templates/mongoid/paperclip/ckeditor/attachment_file.rb +5 -5
  110. data/lib/generators/ckeditor/templates/mongoid/paperclip/ckeditor/picture.rb +5 -5
  111. data/lib/generators/ckeditor/templates/pundit_policy/attachment_file_policy.rb +2 -2
  112. data/lib/generators/ckeditor/templates/pundit_policy/picture_policy.rb +2 -2
  113. data/lib/glebtv-ckeditor.rb +0 -0
  114. data/lib/tasks/ckeditor.rake +6 -14
  115. data/test/controllers/attachment_files_controller_test.rb +0 -0
  116. data/test/controllers/pictures_controller_test.rb +0 -0
  117. data/test/dummy/Rakefile +0 -0
  118. data/test/dummy/app/assets/javascripts/application.js +0 -0
  119. data/test/dummy/app/assets/stylesheets/application.css +0 -0
  120. data/test/dummy/app/assets/stylesheets/scaffold.css +0 -0
  121. data/test/dummy/app/controllers/application_controller.rb +0 -0
  122. data/test/dummy/app/controllers/posts_controller.rb +0 -0
  123. data/test/dummy/app/helpers/application_helper.rb +0 -0
  124. data/test/dummy/app/helpers/posts_helper.rb +0 -0
  125. data/test/dummy/app/models/post.rb +0 -0
  126. data/test/dummy/app/views/layouts/application.html.erb +0 -0
  127. data/test/dummy/app/views/posts/_form.html.erb +0 -0
  128. data/test/dummy/app/views/posts/edit.html.erb +0 -0
  129. data/test/dummy/app/views/posts/index.html.erb +0 -0
  130. data/test/dummy/app/views/posts/new.html.erb +0 -0
  131. data/test/dummy/app/views/posts/show.html.erb +0 -0
  132. data/test/dummy/config.ru +0 -0
  133. data/test/dummy/config/application.rb +0 -0
  134. data/test/dummy/config/boot.rb +0 -0
  135. data/test/dummy/config/database.yml +0 -0
  136. data/test/dummy/config/environment.rb +0 -0
  137. data/test/dummy/config/environments/development.rb +0 -0
  138. data/test/dummy/config/environments/production.rb +0 -0
  139. data/test/dummy/config/environments/test.rb +0 -0
  140. data/test/dummy/config/initializers/assets.rb +1 -0
  141. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -0
  142. data/test/dummy/config/initializers/ckeditor.rb +0 -0
  143. data/test/dummy/config/initializers/cookies_serializer.rb +0 -0
  144. data/test/dummy/config/initializers/inflections.rb +0 -0
  145. data/test/dummy/config/initializers/mime_types.rb +0 -0
  146. data/test/dummy/config/initializers/paperclip.rb +3 -0
  147. data/test/dummy/config/initializers/session_store.rb +0 -0
  148. data/test/dummy/config/initializers/wrap_parameters.rb +0 -0
  149. data/test/dummy/config/locales/en.yml +0 -0
  150. data/test/dummy/config/mongoid.yml +0 -0
  151. data/test/dummy/config/routes.rb +0 -0
  152. data/test/dummy/config/secrets.yml +0 -0
  153. data/test/dummy/db/migrate/20110623120047_create_posts.rb +0 -0
  154. data/test/dummy/public/404.html +0 -0
  155. data/test/dummy/public/422.html +0 -0
  156. data/test/dummy/public/500.html +0 -0
  157. data/test/dummy/public/favicon.ico +0 -0
  158. data/test/dummy/script/rails +0 -0
  159. data/test/dummy/test/fixtures/files/rails.png +0 -0
  160. data/test/dummy/test/fixtures/files/rails.tar.gz +0 -0
  161. data/test/functional/posts_controller_test.rb +2 -3
  162. data/test/generators/install_generator_test.rb +2 -2
  163. data/test/integration/navigation_test.rb +0 -0
  164. data/test/models/attachment_file_test.rb +3 -8
  165. data/test/models/ckeditor_test.rb +1 -1
  166. data/test/models/picture_test.rb +0 -0
  167. data/test/models/utils_test.rb +6 -6
  168. data/test/orm/active_record.rb +0 -0
  169. data/test/orm/mongoid.rb +0 -0
  170. data/test/support/helpers.rb +0 -0
  171. data/test/support/integration_case.rb +0 -0
  172. data/test/support/raw_post.rb +0 -0
  173. data/test/support/routes.txt +0 -0
  174. data/test/test_helper.rb +1 -1
  175. data/vendor/assets/javascripts/ckeditor/CHANGES.md +1358 -0
  176. data/vendor/assets/javascripts/ckeditor/README.md +39 -0
  177. data/vendor/assets/javascripts/ckeditor/build-config.js +31 -30
  178. data/vendor/assets/javascripts/ckeditor/ckeditor.js +709 -675
  179. data/vendor/assets/javascripts/ckeditor/config.js +10 -0
  180. data/vendor/assets/javascripts/ckeditor/contents.css +208 -0
  181. data/vendor/assets/javascripts/ckeditor/lang/en.js +4 -4
  182. data/vendor/assets/javascripts/ckeditor/lang/ru.js +4 -4
  183. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +5 -5
  184. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +3 -2
  185. data/vendor/assets/javascripts/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +3 -3
  186. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/css/codemirror.min.css +1 -1
  187. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/beautify.min.js +2 -1
  188. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.addons.min.js +2 -1
  189. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.addons.search.min.js +1 -1
  190. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.min.js +6 -1
  191. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.bbcodemixed.min.js +1 -1
  192. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.htmlmixed.min.js +2 -1
  193. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.javascript.min.js +1 -1
  194. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.php.min.js +3 -1
  195. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.mode.twig.min.js +1 -0
  196. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/plugin.js +230 -74
  197. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/abcdef.css +1 -1
  198. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/ambiance.css +1 -1
  199. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/cobalt.css +1 -1
  200. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/colorforth.css +1 -1
  201. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/dracula.css +2 -3
  202. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/duotone-dark.css +1 -1
  203. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/duotone-light.css +1 -1
  204. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/eclipse.css +1 -1
  205. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/erlang-dark.css +1 -1
  206. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/icecoder.css +1 -1
  207. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/lesser-dark.css +1 -1
  208. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/liquibyte.css +3 -3
  209. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/material.css +3 -3
  210. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/mdn-like.css +1 -1
  211. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/midnight.css +0 -2
  212. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/monokai.css +1 -1
  213. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/night.css +1 -1
  214. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/panda-syntax.css +1 -1
  215. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/pastel-on-dark.css +1 -1
  216. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/rubyblue.css +1 -1
  217. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/seti.css +1 -1
  218. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/solarized.css +1 -1
  219. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/the-matrix.css +1 -1
  220. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/ttcn.css +1 -1
  221. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/twilight.css +1 -1
  222. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/vibrant-ink.css +1 -1
  223. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/xq-dark.css +1 -1
  224. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/xq-light.css +1 -1
  225. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/theme/yeti.css +1 -1
  226. data/vendor/assets/javascripts/ckeditor/plugins/div/dialogs/div.js +2 -2
  227. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/checkbox.js +2 -2
  228. data/vendor/assets/javascripts/ckeditor/plugins/forms/dialogs/radio.js +2 -2
  229. data/vendor/assets/javascripts/ckeditor/plugins/icons.png +0 -0
  230. data/vendor/assets/javascripts/ckeditor/plugins/icons_hidpi.png +0 -0
  231. data/vendor/assets/javascripts/ckeditor/plugins/lineheight/lang/ru.js +1 -1
  232. data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/anchor.js +4 -3
  233. data/vendor/assets/javascripts/ckeditor/plugins/link/dialogs/link.js +23 -23
  234. data/vendor/assets/javascripts/ckeditor/plugins/loremipsum/icons/hidpi/loremipsum.png +0 -0
  235. data/vendor/assets/javascripts/ckeditor/plugins/loremipsum/icons/loremipsum.png +0 -0
  236. data/vendor/assets/javascripts/ckeditor/plugins/loremipsum/lang/en.js +0 -0
  237. data/vendor/assets/javascripts/ckeditor/plugins/loremipsum/lang/ru.js +2 -2
  238. data/vendor/assets/javascripts/ckeditor/plugins/loremipsum/plugin.js +2 -2
  239. data/vendor/assets/javascripts/ckeditor/plugins/notification/plugin.js +13 -7
  240. data/vendor/assets/javascripts/ckeditor/plugins/pastefromword/filter/default.js +49 -39
  241. data/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/dialog.css +23 -0
  242. data/vendor/assets/javascripts/ckeditor/plugins/scayt/dialogs/options.js +33 -19
  243. data/vendor/assets/javascripts/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css +6 -1
  244. data/vendor/assets/javascripts/ckeditor/plugins/stylesheetparser/plugin.js +1 -1
  245. data/vendor/assets/javascripts/ckeditor/plugins/wordcount/lang/en.js +4 -1
  246. data/vendor/assets/javascripts/ckeditor/plugins/wordcount/plugin.js +92 -23
  247. data/vendor/assets/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +81 -82
  248. data/vendor/assets/javascripts/ckeditor/plugins/youtube/images/icon-hdpi.png +0 -0
  249. data/vendor/assets/javascripts/ckeditor/plugins/youtube/images/icon.png +0 -0
  250. data/vendor/assets/javascripts/ckeditor/plugins/youtube/lang/ru.js +2 -1
  251. data/vendor/assets/javascripts/ckeditor/plugins/youtube/plugin.js +448 -448
  252. data/vendor/assets/javascripts/ckeditor/samples/css/samples.css +1632 -0
  253. data/vendor/assets/javascripts/ckeditor/samples/img/github-top.png +0 -0
  254. data/vendor/assets/javascripts/ckeditor/samples/img/header-bg.png +0 -0
  255. data/vendor/assets/javascripts/ckeditor/samples/img/header-separator.png +0 -0
  256. data/vendor/assets/javascripts/ckeditor/samples/img/logo.png +0 -0
  257. data/vendor/assets/javascripts/ckeditor/samples/img/navigation-tip.png +0 -0
  258. data/vendor/assets/javascripts/ckeditor/samples/index.html +128 -0
  259. data/vendor/assets/javascripts/ckeditor/samples/js/sample.js +53 -0
  260. data/vendor/assets/javascripts/ckeditor/samples/js/sf.js +17 -0
  261. data/vendor/assets/javascripts/ckeditor/samples/old/ajax.html +85 -0
  262. data/vendor/assets/javascripts/ckeditor/samples/old/api.html +210 -0
  263. data/vendor/assets/javascripts/ckeditor/samples/old/appendto.html +59 -0
  264. data/vendor/assets/javascripts/ckeditor/samples/old/assets/inlineall/logo.png +0 -0
  265. data/vendor/assets/javascripts/ckeditor/samples/old/assets/outputxhtml/outputxhtml.css +204 -0
  266. data/vendor/assets/javascripts/ckeditor/samples/old/assets/posteddata.php +59 -0
  267. data/vendor/assets/javascripts/ckeditor/samples/old/assets/sample.jpg +0 -0
  268. data/vendor/assets/javascripts/ckeditor/samples/old/assets/uilanguages/languages.js +7 -0
  269. data/vendor/assets/javascripts/ckeditor/samples/old/datafiltering.html +508 -0
  270. data/vendor/assets/javascripts/ckeditor/samples/old/dialog/assets/my_dialog.js +48 -0
  271. data/vendor/assets/javascripts/ckeditor/samples/old/dialog/dialog.html +190 -0
  272. data/vendor/assets/javascripts/ckeditor/samples/old/divreplace.html +144 -0
  273. data/vendor/assets/javascripts/ckeditor/samples/old/enterkey/enterkey.html +106 -0
  274. data/vendor/assets/javascripts/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.fla +0 -0
  275. data/vendor/assets/javascripts/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.swf +0 -0
  276. data/vendor/assets/javascripts/ckeditor/samples/old/htmlwriter/assets/outputforflash/swfobject.js +19 -0
  277. data/vendor/assets/javascripts/ckeditor/samples/old/htmlwriter/outputforflash.html +283 -0
  278. data/vendor/assets/javascripts/ckeditor/samples/old/htmlwriter/outputhtml.html +224 -0
  279. data/vendor/assets/javascripts/ckeditor/samples/old/index.html +131 -0
  280. data/vendor/assets/javascripts/ckeditor/samples/old/inlineall.html +314 -0
  281. data/vendor/assets/javascripts/ckeditor/samples/old/inlinebycode.html +124 -0
  282. data/vendor/assets/javascripts/ckeditor/samples/old/inlinetextarea.html +113 -0
  283. data/vendor/assets/javascripts/ckeditor/samples/old/jquery.html +103 -0
  284. data/vendor/assets/javascripts/ckeditor/samples/old/magicline/magicline.html +209 -0
  285. data/vendor/assets/javascripts/ckeditor/samples/old/readonly.html +76 -0
  286. data/vendor/assets/javascripts/ckeditor/samples/old/replacebyclass.html +60 -0
  287. data/vendor/assets/javascripts/ckeditor/samples/old/replacebycode.html +59 -0
  288. data/vendor/assets/javascripts/ckeditor/samples/old/sample.css +357 -0
  289. data/vendor/assets/javascripts/ckeditor/samples/old/sample.js +50 -0
  290. data/vendor/assets/javascripts/ckeditor/samples/old/sample_posteddata.php +16 -0
  291. data/vendor/assets/javascripts/ckeditor/samples/old/tabindex.html +78 -0
  292. data/vendor/assets/javascripts/ckeditor/samples/old/toolbar/toolbar.html +235 -0
  293. data/vendor/assets/javascripts/ckeditor/samples/old/uicolor.html +72 -0
  294. data/vendor/assets/javascripts/ckeditor/samples/old/uilanguages.html +122 -0
  295. data/vendor/assets/javascripts/ckeditor/samples/old/wysiwygarea/fullpage.html +80 -0
  296. data/vendor/assets/javascripts/ckeditor/samples/old/xhtmlstyle.html +234 -0
  297. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/css/fontello.css +55 -0
  298. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt +10 -0
  299. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/config.json +28 -0
  300. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.eot +0 -0
  301. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.svg +14 -0
  302. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.ttf +0 -0
  303. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.woff +0 -0
  304. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/index.html +446 -0
  305. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js +13 -0
  306. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js +9 -0
  307. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js +33 -0
  308. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js +14 -0
  309. data/vendor/assets/javascripts/ckeditor/{plugins/codemirror/LICENSE.md → samples/toolbarconfigurator/lib/codemirror/LICENSE} +19 -21
  310. data/vendor/assets/javascripts/ckeditor/{plugins/codemirror/css → samples/toolbarconfigurator/lib/codemirror}/codemirror.css +325 -341
  311. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js +288 -0
  312. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js +25 -0
  313. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css +36 -0
  314. data/vendor/assets/javascripts/ckeditor/{plugins/codemirror/js/addon/hint → samples/toolbarconfigurator/lib/codemirror}/show-hint.css +38 -36
  315. data/vendor/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js +16 -0
  316. data/vendor/assets/javascripts/ckeditor/skins/minimalist/dialog.css +5 -0
  317. data/vendor/assets/javascripts/ckeditor/skins/minimalist/dialog_ie.css +5 -0
  318. data/vendor/assets/javascripts/ckeditor/skins/minimalist/dialog_ie7.css +5 -0
  319. data/vendor/assets/javascripts/ckeditor/skins/minimalist/dialog_ie8.css +5 -0
  320. data/vendor/assets/javascripts/ckeditor/skins/minimalist/dialog_iequirks.css +5 -0
  321. data/vendor/assets/javascripts/ckeditor/skins/minimalist/editor.css +5 -0
  322. data/vendor/assets/javascripts/ckeditor/skins/minimalist/editor_gecko.css +5 -0
  323. data/vendor/assets/javascripts/ckeditor/skins/minimalist/editor_ie.css +5 -0
  324. data/vendor/assets/javascripts/ckeditor/skins/minimalist/editor_ie7.css +5 -0
  325. data/vendor/assets/javascripts/ckeditor/skins/minimalist/editor_ie8.css +5 -0
  326. data/vendor/assets/javascripts/ckeditor/skins/minimalist/editor_iequirks.css +5 -0
  327. data/vendor/assets/javascripts/ckeditor/skins/minimalist/icons.png +0 -0
  328. data/vendor/assets/javascripts/ckeditor/skins/minimalist/icons_hidpi.png +0 -0
  329. data/vendor/assets/javascripts/ckeditor/skins/minimalist/images/arrow.png +0 -0
  330. data/vendor/assets/javascripts/ckeditor/skins/minimalist/images/close.png +0 -0
  331. data/vendor/assets/javascripts/ckeditor/skins/minimalist/images/hidpi/close.png +0 -0
  332. data/vendor/assets/javascripts/ckeditor/skins/minimalist/images/hidpi/lock-open.png +0 -0
  333. data/vendor/assets/javascripts/ckeditor/skins/minimalist/images/hidpi/lock.png +0 -0
  334. data/vendor/assets/javascripts/ckeditor/skins/minimalist/images/hidpi/refresh.png +0 -0
  335. data/vendor/assets/javascripts/ckeditor/skins/minimalist/images/lock-open.png +0 -0
  336. data/vendor/assets/javascripts/ckeditor/skins/minimalist/images/lock.png +0 -0
  337. data/vendor/assets/javascripts/ckeditor/skins/minimalist/images/refresh.png +0 -0
  338. data/vendor/assets/javascripts/ckeditor/skins/minimalist/readme.md +7 -0
  339. data/vendor/assets/javascripts/ckeditor/skins/moono/dev/icons16.png +0 -0
  340. data/vendor/assets/javascripts/ckeditor/skins/moono/dev/icons16.svg +2374 -0
  341. data/vendor/assets/javascripts/ckeditor/skins/moono/dev/icons32.png +0 -0
  342. data/vendor/assets/javascripts/ckeditor/skins/moono/dev/icons32.svg +2722 -0
  343. data/vendor/assets/javascripts/ckeditor/skins/moono/dev/locations.json +145 -0
  344. data/vendor/assets/javascripts/ckeditor/skins/moono/editor.css +1 -1
  345. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_gecko.css +1 -1
  346. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_ie.css +1 -1
  347. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_ie7.css +1 -1
  348. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_ie8.css +1 -1
  349. data/vendor/assets/javascripts/ckeditor/skins/moono/editor_iequirks.css +1 -1
  350. data/vendor/assets/javascripts/ckeditor/skins/moono/icons.png +0 -0
  351. data/vendor/assets/javascripts/ckeditor/skins/moono/icons_hidpi.png +0 -0
  352. data/vendor/assets/javascripts/ckeditor/skins/moono/skin.js +10 -0
  353. data/vendor/assets/javascripts/ckeditor/styles.js +1 -1
  354. metadata +182 -177
  355. data/app/assets/javascripts/ckeditor/filebrowser/stylesheets/uploader.css.erb +0 -128
  356. data/app/views/rails_admin/main/_form_ck_editor.html.haml +0 -10
  357. data/app/views/rails_admin/main/_form_ck_editorml.html.haml +0 -11
  358. data/config/locales/bg.ckeditor.yml +0 -9
  359. data/config/locales/cs.ckeditor.yml +0 -9
  360. data/config/locales/de.ckeditor.yml +0 -9
  361. data/config/locales/el-GR.cdkeditor.yml +0 -9
  362. data/config/locales/es.ckeditor.yml +0 -9
  363. data/config/locales/fr.ckeditor.yml +0 -9
  364. data/config/locales/hu.ckeditor.yml +0 -9
  365. data/config/locales/it.ckeditor.yml +0 -9
  366. data/config/locales/ja.ckeditor.yml +0 -9
  367. data/config/locales/nb.ckeditor.yml +0 -9
  368. data/config/locales/nl.ckeditor.yml +0 -9
  369. data/config/locales/pl.ckeditor.yml +0 -9
  370. data/config/locales/pt-BR.ckeditor.yml +0 -9
  371. data/config/locales/pt-PT.ckeditor.yml +0 -9
  372. data/config/locales/sv-SE.ckeditor.yml +0 -9
  373. data/config/locales/tr.ckeditor.yml +0 -9
  374. data/config/locales/uk.ckeditor.yml +0 -9
  375. data/config/locales/zh-CN.ckeditor.yml +0 -9
  376. data/config/locales/zh-TW.ckeditor.yml +0 -9
  377. data/lib/ckeditor/engine.rb +0 -46
  378. data/vendor/assets/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +0 -12
  379. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/css/codemirror.ckeditor.css +0 -183
  380. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/comment/comment.js +0 -206
  381. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/comment/continuecomment.js +0 -85
  382. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/dialog/dialog.css +0 -32
  383. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/dialog/dialog.js +0 -157
  384. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/edit/closebrackets.js +0 -202
  385. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/edit/closetag.js +0 -169
  386. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/edit/continuelist.js +0 -51
  387. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/edit/matchbrackets.js +0 -122
  388. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/edit/matchtags.js +0 -66
  389. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/edit/trailingspace.js +0 -27
  390. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/fold/brace-fold.js +0 -105
  391. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/fold/comment-fold.js +0 -59
  392. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/fold/foldcode.js +0 -150
  393. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/fold/foldgutter.css +0 -20
  394. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/fold/foldgutter.js +0 -146
  395. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/fold/indent-fold.js +0 -44
  396. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/fold/markdown-fold.js +0 -49
  397. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/fold/xml-fold.js +0 -182
  398. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js +0 -43
  399. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/formatting.js +0 -226
  400. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/hint/anyword-hint.js +0 -41
  401. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/hint/css-hint.js +0 -60
  402. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/hint/html-hint.js +0 -348
  403. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/hint/javascript-hint.js +0 -155
  404. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/hint/show-hint.js +0 -438
  405. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/hint/sql-hint.js +0 -271
  406. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/hint/xml-hint.js +0 -110
  407. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/mode/loadmode.js +0 -64
  408. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/mode/multiplex.js +0 -123
  409. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/mode/multiplex_test.js +0 -33
  410. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/mode/overlay.js +0 -85
  411. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/mode/simple.js +0 -213
  412. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/search/jump-to-line.js +0 -49
  413. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/search/match-highlighter.js +0 -165
  414. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/search/matchesonscrollbar.css +0 -8
  415. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/search/matchesonscrollbar.js +0 -97
  416. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/search/search.js +0 -252
  417. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/search/searchcursor.js +0 -189
  418. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/selection/active-line.js +0 -74
  419. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/selection/mark-selection.js +0 -118
  420. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/selection/selection-pointer.js +0 -98
  421. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/beautify-html.js +0 -952
  422. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/beautify.js +0 -2087
  423. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/codemirror.js +0 -9109
  424. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/bbcode/bbcode.js +0 -137
  425. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/bbcode/index.html +0 -73
  426. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/bbcodemixed/bbcodemixed.js +0 -161
  427. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/bbcodemixed/index.html +0 -128
  428. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/clike/clike.js +0 -785
  429. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/clike/index.html +0 -360
  430. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/clike/scala.html +0 -767
  431. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/clike/test.js +0 -55
  432. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/css/css.js +0 -825
  433. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/css/gss.html +0 -103
  434. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/css/gss_test.js +0 -17
  435. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/css/index.html +0 -75
  436. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/css/less.html +0 -152
  437. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/css/less_test.js +0 -54
  438. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/css/scss.html +0 -157
  439. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/css/scss_test.js +0 -110
  440. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/css/test.js +0 -200
  441. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/htmlembedded/htmlembedded.js +0 -28
  442. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/htmlembedded/index.html +0 -60
  443. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/htmlmixed/htmlmixed.js +0 -152
  444. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/htmlmixed/index.html +0 -89
  445. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/javascript/index.html +0 -114
  446. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/javascript/javascript.js +0 -784
  447. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/javascript/json-ld.html +0 -72
  448. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/javascript/test.js +0 -247
  449. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/javascript/typescript.html +0 -61
  450. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/php/index.html +0 -64
  451. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/php/php.js +0 -234
  452. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/php/test.js +0 -154
  453. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/xml/index.html +0 -61
  454. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/xml/test.js +0 -51
  455. data/vendor/assets/javascripts/ckeditor/plugins/codemirror/js/mode/xml/xml.js +0 -394
  456. data/vendor/assets/javascripts/ckeditor/plugins/youtube/LICENSE.md +0 -15
@@ -1,360 +0,0 @@
1
- <!doctype html>
2
-
3
- <title>CodeMirror: C-like mode</title>
4
- <meta charset="utf-8"/>
5
- <link rel=stylesheet href="../../doc/docs.css">
6
-
7
- <link rel="stylesheet" href="../../lib/codemirror.css">
8
- <script src="../../lib/codemirror.js"></script>
9
- <script src="../../addon/edit/matchbrackets.js"></script>
10
- <link rel="stylesheet" href="../../addon/hint/show-hint.css">
11
- <script src="../../addon/hint/show-hint.js"></script>
12
- <script src="clike.js"></script>
13
- <style>.CodeMirror {border: 2px inset #dee;}</style>
14
- <div id=nav>
15
- <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
16
-
17
- <ul>
18
- <li><a href="../../index.html">Home</a>
19
- <li><a href="../../doc/manual.html">Manual</a>
20
- <li><a href="https://github.com/codemirror/codemirror">Code</a>
21
- </ul>
22
- <ul>
23
- <li><a href="../index.html">Language modes</a>
24
- <li><a class=active href="#">C-like</a>
25
- </ul>
26
- </div>
27
-
28
- <article>
29
- <h2>C-like mode</h2>
30
-
31
- <div><textarea id="c-code">
32
- /* C demo code */
33
-
34
- #include <zmq.h>
35
- #include <pthread.h>
36
- #include <semaphore.h>
37
- #include <time.h>
38
- #include <stdio.h>
39
- #include <fcntl.h>
40
- #include <malloc.h>
41
-
42
- typedef struct {
43
- void* arg_socket;
44
- zmq_msg_t* arg_msg;
45
- char* arg_string;
46
- unsigned long arg_len;
47
- int arg_int, arg_command;
48
-
49
- int signal_fd;
50
- int pad;
51
- void* context;
52
- sem_t sem;
53
- } acl_zmq_context;
54
-
55
- #define p(X) (context->arg_##X)
56
-
57
- void* zmq_thread(void* context_pointer) {
58
- acl_zmq_context* context = (acl_zmq_context*)context_pointer;
59
- char ok = 'K', err = 'X';
60
- int res;
61
-
62
- while (1) {
63
- while ((res = sem_wait(&amp;context->sem)) == EINTR);
64
- if (res) {write(context->signal_fd, &amp;err, 1); goto cleanup;}
65
- switch(p(command)) {
66
- case 0: goto cleanup;
67
- case 1: p(socket) = zmq_socket(context->context, p(int)); break;
68
- case 2: p(int) = zmq_close(p(socket)); break;
69
- case 3: p(int) = zmq_bind(p(socket), p(string)); break;
70
- case 4: p(int) = zmq_connect(p(socket), p(string)); break;
71
- case 5: p(int) = zmq_getsockopt(p(socket), p(int), (void*)p(string), &amp;p(len)); break;
72
- case 6: p(int) = zmq_setsockopt(p(socket), p(int), (void*)p(string), p(len)); break;
73
- case 7: p(int) = zmq_send(p(socket), p(msg), p(int)); break;
74
- case 8: p(int) = zmq_recv(p(socket), p(msg), p(int)); break;
75
- case 9: p(int) = zmq_poll(p(socket), p(int), p(len)); break;
76
- }
77
- p(command) = errno;
78
- write(context->signal_fd, &amp;ok, 1);
79
- }
80
- cleanup:
81
- close(context->signal_fd);
82
- free(context_pointer);
83
- return 0;
84
- }
85
-
86
- void* zmq_thread_init(void* zmq_context, int signal_fd) {
87
- acl_zmq_context* context = malloc(sizeof(acl_zmq_context));
88
- pthread_t thread;
89
-
90
- context->context = zmq_context;
91
- context->signal_fd = signal_fd;
92
- sem_init(&amp;context->sem, 1, 0);
93
- pthread_create(&amp;thread, 0, &amp;zmq_thread, context);
94
- pthread_detach(thread);
95
- return context;
96
- }
97
- </textarea></div>
98
-
99
- <h2>C++ example</h2>
100
-
101
- <div><textarea id="cpp-code">
102
- #include <iostream>
103
- #include "mystuff/util.h"
104
-
105
- namespace {
106
- enum Enum {
107
- VAL1, VAL2, VAL3
108
- };
109
-
110
- char32_t unicode_string = U"\U0010FFFF";
111
- string raw_string = R"delim(anything
112
- you
113
- want)delim";
114
-
115
- int Helper(const MyType& param) {
116
- return 0;
117
- }
118
- } // namespace
119
-
120
- class ForwardDec;
121
-
122
- template <class T, class V>
123
- class Class : public BaseClass {
124
- const MyType<T, V> member_;
125
-
126
- public:
127
- const MyType<T, V>& Method() const {
128
- return member_;
129
- }
130
-
131
- void Method2(MyType<T, V>* value);
132
- }
133
-
134
- template <class T, class V>
135
- void Class::Method2(MyType<T, V>* value) {
136
- std::out << 1 >> method();
137
- value->Method3(member_);
138
- member_ = value;
139
- }
140
- </textarea></div>
141
-
142
- <h2>Objective-C example</h2>
143
-
144
- <div><textarea id="objectivec-code">
145
- /*
146
- This is a longer comment
147
- That spans two lines
148
- */
149
-
150
- #import <Test/Test.h>
151
- @implementation YourAppDelegate
152
-
153
- // This is a one-line comment
154
-
155
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
156
- char myString[] = "This is a C character array";
157
- int test = 5;
158
- return YES;
159
- }
160
- </textarea></div>
161
-
162
- <h2>Java example</h2>
163
-
164
- <div><textarea id="java-code">
165
- import com.demo.util.MyType;
166
- import com.demo.util.MyInterface;
167
-
168
- public enum Enum {
169
- VAL1, VAL2, VAL3
170
- }
171
-
172
- public class Class<T, V> implements MyInterface {
173
- public static final MyType<T, V> member;
174
-
175
- private class InnerClass {
176
- public int zero() {
177
- return 0;
178
- }
179
- }
180
-
181
- @Override
182
- public MyType method() {
183
- return member;
184
- }
185
-
186
- public void method2(MyType<T, V> value) {
187
- method();
188
- value.method3();
189
- member = value;
190
- }
191
- }
192
- </textarea></div>
193
-
194
- <h2>Scala example</h2>
195
-
196
- <div><textarea id="scala-code">
197
- object FilterTest extends App {
198
- def filter(xs: List[Int], threshold: Int) = {
199
- def process(ys: List[Int]): List[Int] =
200
- if (ys.isEmpty) ys
201
- else if (ys.head < threshold) ys.head :: process(ys.tail)
202
- else process(ys.tail)
203
- process(xs)
204
- }
205
- println(filter(List(1, 9, 2, 8, 3, 7, 4), 5))
206
- }
207
- </textarea></div>
208
-
209
- <h2>Kotlin mode</h2>
210
-
211
- <div><textarea id="kotlin-code">
212
- package org.wasabi.http
213
-
214
- import java.util.concurrent.Executors
215
- import java.net.InetSocketAddress
216
- import org.wasabi.app.AppConfiguration
217
- import io.netty.bootstrap.ServerBootstrap
218
- import io.netty.channel.nio.NioEventLoopGroup
219
- import io.netty.channel.socket.nio.NioServerSocketChannel
220
- import org.wasabi.app.AppServer
221
-
222
- public class HttpServer(private val appServer: AppServer) {
223
-
224
- val bootstrap: ServerBootstrap
225
- val primaryGroup: NioEventLoopGroup
226
- val workerGroup: NioEventLoopGroup
227
-
228
- init {
229
- // Define worker groups
230
- primaryGroup = NioEventLoopGroup()
231
- workerGroup = NioEventLoopGroup()
232
-
233
- // Initialize bootstrap of server
234
- bootstrap = ServerBootstrap()
235
-
236
- bootstrap.group(primaryGroup, workerGroup)
237
- bootstrap.channel(javaClass<NioServerSocketChannel>())
238
- bootstrap.childHandler(NettyPipelineInitializer(appServer))
239
- }
240
-
241
- public fun start(wait: Boolean = true) {
242
- val channel = bootstrap.bind(appServer.configuration.port)?.sync()?.channel()
243
-
244
- if (wait) {
245
- channel?.closeFuture()?.sync()
246
- }
247
- }
248
-
249
- public fun stop() {
250
- // Shutdown all event loops
251
- primaryGroup.shutdownGracefully()
252
- workerGroup.shutdownGracefully()
253
-
254
- // Wait till all threads are terminated
255
- primaryGroup.terminationFuture().sync()
256
- workerGroup.terminationFuture().sync()
257
- }
258
- }
259
- </textarea></div>
260
-
261
- <h2>Ceylon mode</h2>
262
-
263
- <div><textarea id="ceylon-code">
264
- "Produces the [[stream|Iterable]] that results from repeated
265
- application of the given [[function|next]] to the given
266
- [[first]] element of the stream, until the function first
267
- returns [[finished]]. If the given function never returns
268
- `finished`, the resulting stream is infinite.
269
-
270
- For example:
271
-
272
- loop(0)(2.plus).takeWhile(10.largerThan)
273
-
274
- produces the stream `{ 0, 2, 4, 6, 8 }`."
275
- tagged("Streams")
276
- shared {Element+} loop&lt;Element&gt;(
277
- "The first element of the resulting stream."
278
- Element first)(
279
- "The function that produces the next element of the
280
- stream, given the current element. The function may
281
- return [[finished]] to indicate the end of the
282
- stream."
283
- Element|Finished next(Element element))
284
- =&gt; let (start = first)
285
- object satisfies {Element+} {
286
- first =&gt; start;
287
- empty =&gt; false;
288
- function nextElement(Element element)
289
- =&gt; next(element);
290
- iterator()
291
- =&gt; object satisfies Iterator&lt;Element&gt; {
292
- variable Element|Finished current = start;
293
- shared actual Element|Finished next() {
294
- if (!is Finished result = current) {
295
- current = nextElement(result);
296
- return result;
297
- }
298
- else {
299
- return finished;
300
- }
301
- }
302
- };
303
- };
304
- </textarea></div>
305
-
306
- <script>
307
- var cEditor = CodeMirror.fromTextArea(document.getElementById("c-code"), {
308
- lineNumbers: true,
309
- matchBrackets: true,
310
- mode: "text/x-csrc"
311
- });
312
- var cppEditor = CodeMirror.fromTextArea(document.getElementById("cpp-code"), {
313
- lineNumbers: true,
314
- matchBrackets: true,
315
- mode: "text/x-c++src"
316
- });
317
- var javaEditor = CodeMirror.fromTextArea(document.getElementById("java-code"), {
318
- lineNumbers: true,
319
- matchBrackets: true,
320
- mode: "text/x-java"
321
- });
322
- var objectivecEditor = CodeMirror.fromTextArea(document.getElementById("objectivec-code"), {
323
- lineNumbers: true,
324
- matchBrackets: true,
325
- mode: "text/x-objectivec"
326
- });
327
- var scalaEditor = CodeMirror.fromTextArea(document.getElementById("scala-code"), {
328
- lineNumbers: true,
329
- matchBrackets: true,
330
- mode: "text/x-scala"
331
- });
332
- var kotlinEditor = CodeMirror.fromTextArea(document.getElementById("kotlin-code"), {
333
- lineNumbers: true,
334
- matchBrackets: true,
335
- mode: "text/x-kotlin"
336
- });
337
- var ceylonEditor = CodeMirror.fromTextArea(document.getElementById("ceylon-code"), {
338
- lineNumbers: true,
339
- matchBrackets: true,
340
- mode: "text/x-ceylon"
341
- });
342
- var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault;
343
- CodeMirror.keyMap.default[(mac ? "Cmd" : "Ctrl") + "-Space"] = "autocomplete";
344
- </script>
345
-
346
- <p>Simple mode that tries to handle C-like languages as well as it
347
- can. Takes two configuration parameters: <code>keywords</code>, an
348
- object whose property names are the keywords in the language,
349
- and <code>useCPP</code>, which determines whether C preprocessor
350
- directives are recognized.</p>
351
-
352
- <p><strong>MIME types defined:</strong> <code>text/x-csrc</code>
353
- (C), <code>text/x-c++src</code> (C++), <code>text/x-java</code>
354
- (Java), <code>text/x-csharp</code> (C#),
355
- <code>text/x-objectivec</code> (Objective-C),
356
- <code>text/x-scala</code> (Scala), <code>text/x-vertex</code>
357
- <code>x-shader/x-fragment</code> (shader programs),
358
- <code>text/x-squirrel</code> (Squirrel) and
359
- <code>text/x-ceylon</code> (Ceylon)</p>
360
- </article>
@@ -1,767 +0,0 @@
1
- <!doctype html>
2
-
3
- <title>CodeMirror: Scala mode</title>
4
- <meta charset="utf-8"/>
5
- <link rel=stylesheet href="../../doc/docs.css">
6
-
7
- <link rel="stylesheet" href="../../lib/codemirror.css">
8
- <link rel="stylesheet" href="../../theme/ambiance.css">
9
- <script src="../../lib/codemirror.js"></script>
10
- <script src="../../addon/edit/matchbrackets.js"></script>
11
- <script src="clike.js"></script>
12
- <div id=nav>
13
- <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
14
-
15
- <ul>
16
- <li><a href="../../index.html">Home</a>
17
- <li><a href="../../doc/manual.html">Manual</a>
18
- <li><a href="https://github.com/codemirror/codemirror">Code</a>
19
- </ul>
20
- <ul>
21
- <li><a href="../index.html">Language modes</a>
22
- <li><a class=active href="#">Scala</a>
23
- </ul>
24
- </div>
25
-
26
- <article>
27
- <h2>Scala mode</h2>
28
- <form>
29
- <textarea id="code" name="code">
30
-
31
- /* __ *\
32
- ** ________ ___ / / ___ Scala API **
33
- ** / __/ __// _ | / / / _ | (c) 2003-2011, LAMP/EPFL **
34
- ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
35
- ** /____/\___/_/ |_/____/_/ | | **
36
- ** |/ **
37
- \* */
38
-
39
- package scala.collection
40
-
41
- import generic._
42
- import mutable.{ Builder, ListBuffer }
43
- import annotation.{tailrec, migration, bridge}
44
- import annotation.unchecked.{ uncheckedVariance => uV }
45
- import parallel.ParIterable
46
-
47
- /** A template trait for traversable collections of type `Traversable[A]`.
48
- *
49
- * $traversableInfo
50
- * @define mutability
51
- * @define traversableInfo
52
- * This is a base trait of all kinds of $mutability Scala collections. It
53
- * implements the behavior common to all collections, in terms of a method
54
- * `foreach` with signature:
55
- * {{{
56
- * def foreach[U](f: Elem => U): Unit
57
- * }}}
58
- * Collection classes mixing in this trait provide a concrete
59
- * `foreach` method which traverses all the
60
- * elements contained in the collection, applying a given function to each.
61
- * They also need to provide a method `newBuilder`
62
- * which creates a builder for collections of the same kind.
63
- *
64
- * A traversable class might or might not have two properties: strictness
65
- * and orderedness. Neither is represented as a type.
66
- *
67
- * The instances of a strict collection class have all their elements
68
- * computed before they can be used as values. By contrast, instances of
69
- * a non-strict collection class may defer computation of some of their
70
- * elements until after the instance is available as a value.
71
- * A typical example of a non-strict collection class is a
72
- * <a href="../immutable/Stream.html" target="ContentFrame">
73
- * `scala.collection.immutable.Stream`</a>.
74
- * A more general class of examples are `TraversableViews`.
75
- *
76
- * If a collection is an instance of an ordered collection class, traversing
77
- * its elements with `foreach` will always visit elements in the
78
- * same order, even for different runs of the program. If the class is not
79
- * ordered, `foreach` can visit elements in different orders for
80
- * different runs (but it will keep the same order in the same run).'
81
- *
82
- * A typical example of a collection class which is not ordered is a
83
- * `HashMap` of objects. The traversal order for hash maps will
84
- * depend on the hash codes of its elements, and these hash codes might
85
- * differ from one run to the next. By contrast, a `LinkedHashMap`
86
- * is ordered because it's `foreach` method visits elements in the
87
- * order they were inserted into the `HashMap`.
88
- *
89
- * @author Martin Odersky
90
- * @version 2.8
91
- * @since 2.8
92
- * @tparam A the element type of the collection
93
- * @tparam Repr the type of the actual collection containing the elements.
94
- *
95
- * @define Coll Traversable
96
- * @define coll traversable collection
97
- */
98
- trait TraversableLike[+A, +Repr] extends HasNewBuilder[A, Repr]
99
- with FilterMonadic[A, Repr]
100
- with TraversableOnce[A]
101
- with GenTraversableLike[A, Repr]
102
- with Parallelizable[A, ParIterable[A]]
103
- {
104
- self =>
105
-
106
- import Traversable.breaks._
107
-
108
- /** The type implementing this traversable */
109
- protected type Self = Repr
110
-
111
- /** The collection of type $coll underlying this `TraversableLike` object.
112
- * By default this is implemented as the `TraversableLike` object itself,
113
- * but this can be overridden.
114
- */
115
- def repr: Repr = this.asInstanceOf[Repr]
116
-
117
- /** The underlying collection seen as an instance of `$Coll`.
118
- * By default this is implemented as the current collection object itself,
119
- * but this can be overridden.
120
- */
121
- protected[this] def thisCollection: Traversable[A] = this.asInstanceOf[Traversable[A]]
122
-
123
- /** A conversion from collections of type `Repr` to `$Coll` objects.
124
- * By default this is implemented as just a cast, but this can be overridden.
125
- */
126
- protected[this] def toCollection(repr: Repr): Traversable[A] = repr.asInstanceOf[Traversable[A]]
127
-
128
- /** Creates a new builder for this collection type.
129
- */
130
- protected[this] def newBuilder: Builder[A, Repr]
131
-
132
- protected[this] def parCombiner = ParIterable.newCombiner[A]
133
-
134
- /** Applies a function `f` to all elements of this $coll.
135
- *
136
- * Note: this method underlies the implementation of most other bulk operations.
137
- * It's important to implement this method in an efficient way.
138
- *
139
- *
140
- * @param f the function that is applied for its side-effect to every element.
141
- * The result of function `f` is discarded.
142
- *
143
- * @tparam U the type parameter describing the result of function `f`.
144
- * This result will always be ignored. Typically `U` is `Unit`,
145
- * but this is not necessary.
146
- *
147
- * @usecase def foreach(f: A => Unit): Unit
148
- */
149
- def foreach[U](f: A => U): Unit
150
-
151
- /** Tests whether this $coll is empty.
152
- *
153
- * @return `true` if the $coll contain no elements, `false` otherwise.
154
- */
155
- def isEmpty: Boolean = {
156
- var result = true
157
- breakable {
158
- for (x <- this) {
159
- result = false
160
- break
161
- }
162
- }
163
- result
164
- }
165
-
166
- /** Tests whether this $coll is known to have a finite size.
167
- * All strict collections are known to have finite size. For a non-strict collection
168
- * such as `Stream`, the predicate returns `true` if all elements have been computed.
169
- * It returns `false` if the stream is not yet evaluated to the end.
170
- *
171
- * Note: many collection methods will not work on collections of infinite sizes.
172
- *
173
- * @return `true` if this collection is known to have finite size, `false` otherwise.
174
- */
175
- def hasDefiniteSize = true
176
-
177
- def ++[B >: A, That](that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
178
- val b = bf(repr)
179
- if (that.isInstanceOf[IndexedSeqLike[_, _]]) b.sizeHint(this, that.seq.size)
180
- b ++= thisCollection
181
- b ++= that.seq
182
- b.result
183
- }
184
-
185
- @bridge
186
- def ++[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That =
187
- ++(that: GenTraversableOnce[B])(bf)
188
-
189
- /** Concatenates this $coll with the elements of a traversable collection.
190
- * It differs from ++ in that the right operand determines the type of the
191
- * resulting collection rather than the left one.
192
- *
193
- * @param that the traversable to append.
194
- * @tparam B the element type of the returned collection.
195
- * @tparam That $thatinfo
196
- * @param bf $bfinfo
197
- * @return a new collection of type `That` which contains all elements
198
- * of this $coll followed by all elements of `that`.
199
- *
200
- * @usecase def ++:[B](that: TraversableOnce[B]): $Coll[B]
201
- *
202
- * @return a new $coll which contains all elements of this $coll
203
- * followed by all elements of `that`.
204
- */
205
- def ++:[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
206
- val b = bf(repr)
207
- if (that.isInstanceOf[IndexedSeqLike[_, _]]) b.sizeHint(this, that.size)
208
- b ++= that
209
- b ++= thisCollection
210
- b.result
211
- }
212
-
213
- /** This overload exists because: for the implementation of ++: we should reuse
214
- * that of ++ because many collections override it with more efficient versions.
215
- * Since TraversableOnce has no '++' method, we have to implement that directly,
216
- * but Traversable and down can use the overload.
217
- */
218
- def ++:[B >: A, That](that: Traversable[B])(implicit bf: CanBuildFrom[Repr, B, That]): That =
219
- (that ++ seq)(breakOut)
220
-
221
- def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
222
- val b = bf(repr)
223
- b.sizeHint(this)
224
- for (x <- this) b += f(x)
225
- b.result
226
- }
227
-
228
- def flatMap[B, That](f: A => GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
229
- val b = bf(repr)
230
- for (x <- this) b ++= f(x).seq
231
- b.result
232
- }
233
-
234
- /** Selects all elements of this $coll which satisfy a predicate.
235
- *
236
- * @param p the predicate used to test elements.
237
- * @return a new $coll consisting of all elements of this $coll that satisfy the given
238
- * predicate `p`. The order of the elements is preserved.
239
- */
240
- def filter(p: A => Boolean): Repr = {
241
- val b = newBuilder
242
- for (x <- this)
243
- if (p(x)) b += x
244
- b.result
245
- }
246
-
247
- /** Selects all elements of this $coll which do not satisfy a predicate.
248
- *
249
- * @param p the predicate used to test elements.
250
- * @return a new $coll consisting of all elements of this $coll that do not satisfy the given
251
- * predicate `p`. The order of the elements is preserved.
252
- */
253
- def filterNot(p: A => Boolean): Repr = filter(!p(_))
254
-
255
- def collect[B, That](pf: PartialFunction[A, B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
256
- val b = bf(repr)
257
- for (x <- this) if (pf.isDefinedAt(x)) b += pf(x)
258
- b.result
259
- }
260
-
261
- /** Builds a new collection by applying an option-valued function to all
262
- * elements of this $coll on which the function is defined.
263
- *
264
- * @param f the option-valued function which filters and maps the $coll.
265
- * @tparam B the element type of the returned collection.
266
- * @tparam That $thatinfo
267
- * @param bf $bfinfo
268
- * @return a new collection of type `That` resulting from applying the option-valued function
269
- * `f` to each element and collecting all defined results.
270
- * The order of the elements is preserved.
271
- *
272
- * @usecase def filterMap[B](f: A => Option[B]): $Coll[B]
273
- *
274
- * @param pf the partial function which filters and maps the $coll.
275
- * @return a new $coll resulting from applying the given option-valued function
276
- * `f` to each element and collecting all defined results.
277
- * The order of the elements is preserved.
278
- def filterMap[B, That](f: A => Option[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
279
- val b = bf(repr)
280
- for (x <- this)
281
- f(x) match {
282
- case Some(y) => b += y
283
- case _ =>
284
- }
285
- b.result
286
- }
287
- */
288
-
289
- /** Partitions this $coll in two ${coll}s according to a predicate.
290
- *
291
- * @param p the predicate on which to partition.
292
- * @return a pair of ${coll}s: the first $coll consists of all elements that
293
- * satisfy the predicate `p` and the second $coll consists of all elements
294
- * that don't. The relative order of the elements in the resulting ${coll}s
295
- * is the same as in the original $coll.
296
- */
297
- def partition(p: A => Boolean): (Repr, Repr) = {
298
- val l, r = newBuilder
299
- for (x <- this) (if (p(x)) l else r) += x
300
- (l.result, r.result)
301
- }
302
-
303
- def groupBy[K](f: A => K): immutable.Map[K, Repr] = {
304
- val m = mutable.Map.empty[K, Builder[A, Repr]]
305
- for (elem <- this) {
306
- val key = f(elem)
307
- val bldr = m.getOrElseUpdate(key, newBuilder)
308
- bldr += elem
309
- }
310
- val b = immutable.Map.newBuilder[K, Repr]
311
- for ((k, v) <- m)
312
- b += ((k, v.result))
313
-
314
- b.result
315
- }
316
-
317
- /** Tests whether a predicate holds for all elements of this $coll.
318
- *
319
- * $mayNotTerminateInf
320
- *
321
- * @param p the predicate used to test elements.
322
- * @return `true` if the given predicate `p` holds for all elements
323
- * of this $coll, otherwise `false`.
324
- */
325
- def forall(p: A => Boolean): Boolean = {
326
- var result = true
327
- breakable {
328
- for (x <- this)
329
- if (!p(x)) { result = false; break }
330
- }
331
- result
332
- }
333
-
334
- /** Tests whether a predicate holds for some of the elements of this $coll.
335
- *
336
- * $mayNotTerminateInf
337
- *
338
- * @param p the predicate used to test elements.
339
- * @return `true` if the given predicate `p` holds for some of the
340
- * elements of this $coll, otherwise `false`.
341
- */
342
- def exists(p: A => Boolean): Boolean = {
343
- var result = false
344
- breakable {
345
- for (x <- this)
346
- if (p(x)) { result = true; break }
347
- }
348
- result
349
- }
350
-
351
- /** Finds the first element of the $coll satisfying a predicate, if any.
352
- *
353
- * $mayNotTerminateInf
354
- * $orderDependent
355
- *
356
- * @param p the predicate used to test elements.
357
- * @return an option value containing the first element in the $coll
358
- * that satisfies `p`, or `None` if none exists.
359
- */
360
- def find(p: A => Boolean): Option[A] = {
361
- var result: Option[A] = None
362
- breakable {
363
- for (x <- this)
364
- if (p(x)) { result = Some(x); break }
365
- }
366
- result
367
- }
368
-
369
- def scan[B >: A, That](z: B)(op: (B, B) => B)(implicit cbf: CanBuildFrom[Repr, B, That]): That = scanLeft(z)(op)
370
-
371
- def scanLeft[B, That](z: B)(op: (B, A) => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
372
- val b = bf(repr)
373
- b.sizeHint(this, 1)
374
- var acc = z
375
- b += acc
376
- for (x <- this) { acc = op(acc, x); b += acc }
377
- b.result
378
- }
379
-
380
- @migration(2, 9,
381
- "This scanRight definition has changed in 2.9.\n" +
382
- "The previous behavior can be reproduced with scanRight.reverse."
383
- )
384
- def scanRight[B, That](z: B)(op: (A, B) => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
385
- var scanned = List(z)
386
- var acc = z
387
- for (x <- reversed) {
388
- acc = op(x, acc)
389
- scanned ::= acc
390
- }
391
- val b = bf(repr)
392
- for (elem <- scanned) b += elem
393
- b.result
394
- }
395
-
396
- /** Selects the first element of this $coll.
397
- * $orderDependent
398
- * @return the first element of this $coll.
399
- * @throws `NoSuchElementException` if the $coll is empty.
400
- */
401
- def head: A = {
402
- var result: () => A = () => throw new NoSuchElementException
403
- breakable {
404
- for (x <- this) {
405
- result = () => x
406
- break
407
- }
408
- }
409
- result()
410
- }
411
-
412
- /** Optionally selects the first element.
413
- * $orderDependent
414
- * @return the first element of this $coll if it is nonempty, `None` if it is empty.
415
- */
416
- def headOption: Option[A] = if (isEmpty) None else Some(head)
417
-
418
- /** Selects all elements except the first.
419
- * $orderDependent
420
- * @return a $coll consisting of all elements of this $coll
421
- * except the first one.
422
- * @throws `UnsupportedOperationException` if the $coll is empty.
423
- */
424
- override def tail: Repr = {
425
- if (isEmpty) throw new UnsupportedOperationException("empty.tail")
426
- drop(1)
427
- }
428
-
429
- /** Selects the last element.
430
- * $orderDependent
431
- * @return The last element of this $coll.
432
- * @throws NoSuchElementException If the $coll is empty.
433
- */
434
- def last: A = {
435
- var lst = head
436
- for (x <- this)
437
- lst = x
438
- lst
439
- }
440
-
441
- /** Optionally selects the last element.
442
- * $orderDependent
443
- * @return the last element of this $coll$ if it is nonempty, `None` if it is empty.
444
- */
445
- def lastOption: Option[A] = if (isEmpty) None else Some(last)
446
-
447
- /** Selects all elements except the last.
448
- * $orderDependent
449
- * @return a $coll consisting of all elements of this $coll
450
- * except the last one.
451
- * @throws `UnsupportedOperationException` if the $coll is empty.
452
- */
453
- def init: Repr = {
454
- if (isEmpty) throw new UnsupportedOperationException("empty.init")
455
- var lst = head
456
- var follow = false
457
- val b = newBuilder
458
- b.sizeHint(this, -1)
459
- for (x <- this.seq) {
460
- if (follow) b += lst
461
- else follow = true
462
- lst = x
463
- }
464
- b.result
465
- }
466
-
467
- def take(n: Int): Repr = slice(0, n)
468
-
469
- def drop(n: Int): Repr =
470
- if (n <= 0) {
471
- val b = newBuilder
472
- b.sizeHint(this)
473
- b ++= thisCollection result
474
- }
475
- else sliceWithKnownDelta(n, Int.MaxValue, -n)
476
-
477
- def slice(from: Int, until: Int): Repr = sliceWithKnownBound(math.max(from, 0), until)
478
-
479
- // Precondition: from >= 0, until > 0, builder already configured for building.
480
- private[this] def sliceInternal(from: Int, until: Int, b: Builder[A, Repr]): Repr = {
481
- var i = 0
482
- breakable {
483
- for (x <- this.seq) {
484
- if (i >= from) b += x
485
- i += 1
486
- if (i >= until) break
487
- }
488
- }
489
- b.result
490
- }
491
- // Precondition: from >= 0
492
- private[scala] def sliceWithKnownDelta(from: Int, until: Int, delta: Int): Repr = {
493
- val b = newBuilder
494
- if (until <= from) b.result
495
- else {
496
- b.sizeHint(this, delta)
497
- sliceInternal(from, until, b)
498
- }
499
- }
500
- // Precondition: from >= 0
501
- private[scala] def sliceWithKnownBound(from: Int, until: Int): Repr = {
502
- val b = newBuilder
503
- if (until <= from) b.result
504
- else {
505
- b.sizeHintBounded(until - from, this)
506
- sliceInternal(from, until, b)
507
- }
508
- }
509
-
510
- def takeWhile(p: A => Boolean): Repr = {
511
- val b = newBuilder
512
- breakable {
513
- for (x <- this) {
514
- if (!p(x)) break
515
- b += x
516
- }
517
- }
518
- b.result
519
- }
520
-
521
- def dropWhile(p: A => Boolean): Repr = {
522
- val b = newBuilder
523
- var go = false
524
- for (x <- this) {
525
- if (!p(x)) go = true
526
- if (go) b += x
527
- }
528
- b.result
529
- }
530
-
531
- def span(p: A => Boolean): (Repr, Repr) = {
532
- val l, r = newBuilder
533
- var toLeft = true
534
- for (x <- this) {
535
- toLeft = toLeft && p(x)
536
- (if (toLeft) l else r) += x
537
- }
538
- (l.result, r.result)
539
- }
540
-
541
- def splitAt(n: Int): (Repr, Repr) = {
542
- val l, r = newBuilder
543
- l.sizeHintBounded(n, this)
544
- if (n >= 0) r.sizeHint(this, -n)
545
- var i = 0
546
- for (x <- this) {
547
- (if (i < n) l else r) += x
548
- i += 1
549
- }
550
- (l.result, r.result)
551
- }
552
-
553
- /** Iterates over the tails of this $coll. The first value will be this
554
- * $coll and the final one will be an empty $coll, with the intervening
555
- * values the results of successive applications of `tail`.
556
- *
557
- * @return an iterator over all the tails of this $coll
558
- * @example `List(1,2,3).tails = Iterator(List(1,2,3), List(2,3), List(3), Nil)`
559
- */
560
- def tails: Iterator[Repr] = iterateUntilEmpty(_.tail)
561
-
562
- /** Iterates over the inits of this $coll. The first value will be this
563
- * $coll and the final one will be an empty $coll, with the intervening
564
- * values the results of successive applications of `init`.
565
- *
566
- * @return an iterator over all the inits of this $coll
567
- * @example `List(1,2,3).inits = Iterator(List(1,2,3), List(1,2), List(1), Nil)`
568
- */
569
- def inits: Iterator[Repr] = iterateUntilEmpty(_.init)
570
-
571
- /** Copies elements of this $coll to an array.
572
- * Fills the given array `xs` with at most `len` elements of
573
- * this $coll, starting at position `start`.
574
- * Copying will stop once either the end of the current $coll is reached,
575
- * or the end of the array is reached, or `len` elements have been copied.
576
- *
577
- * $willNotTerminateInf
578
- *
579
- * @param xs the array to fill.
580
- * @param start the starting index.
581
- * @param len the maximal number of elements to copy.
582
- * @tparam B the type of the elements of the array.
583
- *
584
- *
585
- * @usecase def copyToArray(xs: Array[A], start: Int, len: Int): Unit
586
- */
587
- def copyToArray[B >: A](xs: Array[B], start: Int, len: Int) {
588
- var i = start
589
- val end = (start + len) min xs.length
590
- breakable {
591
- for (x <- this) {
592
- if (i >= end) break
593
- xs(i) = x
594
- i += 1
595
- }
596
- }
597
- }
598
-
599
- def toTraversable: Traversable[A] = thisCollection
600
- def toIterator: Iterator[A] = toStream.iterator
601
- def toStream: Stream[A] = toBuffer.toStream
602
-
603
- /** Converts this $coll to a string.
604
- *
605
- * @return a string representation of this collection. By default this
606
- * string consists of the `stringPrefix` of this $coll,
607
- * followed by all elements separated by commas and enclosed in parentheses.
608
- */
609
- override def toString = mkString(stringPrefix + "(", ", ", ")")
610
-
611
- /** Defines the prefix of this object's `toString` representation.
612
- *
613
- * @return a string representation which starts the result of `toString`
614
- * applied to this $coll. By default the string prefix is the
615
- * simple name of the collection class $coll.
616
- */
617
- def stringPrefix : String = {
618
- var string = repr.asInstanceOf[AnyRef].getClass.getName
619
- val idx1 = string.lastIndexOf('.' : Int)
620
- if (idx1 != -1) string = string.substring(idx1 + 1)
621
- val idx2 = string.indexOf('$')
622
- if (idx2 != -1) string = string.substring(0, idx2)
623
- string
624
- }
625
-
626
- /** Creates a non-strict view of this $coll.
627
- *
628
- * @return a non-strict view of this $coll.
629
- */
630
- def view = new TraversableView[A, Repr] {
631
- protected lazy val underlying = self.repr
632
- override def foreach[U](f: A => U) = self foreach f
633
- }
634
-
635
- /** Creates a non-strict view of a slice of this $coll.
636
- *
637
- * Note: the difference between `view` and `slice` is that `view` produces
638
- * a view of the current $coll, whereas `slice` produces a new $coll.
639
- *
640
- * Note: `view(from, to)` is equivalent to `view.slice(from, to)`
641
- * $orderDependent
642
- *
643
- * @param from the index of the first element of the view
644
- * @param until the index of the element following the view
645
- * @return a non-strict view of a slice of this $coll, starting at index `from`
646
- * and extending up to (but not including) index `until`.
647
- */
648
- def view(from: Int, until: Int): TraversableView[A, Repr] = view.slice(from, until)
649
-
650
- /** Creates a non-strict filter of this $coll.
651
- *
652
- * Note: the difference between `c filter p` and `c withFilter p` is that
653
- * the former creates a new collection, whereas the latter only
654
- * restricts the domain of subsequent `map`, `flatMap`, `foreach`,
655
- * and `withFilter` operations.
656
- * $orderDependent
657
- *
658
- * @param p the predicate used to test elements.
659
- * @return an object of class `WithFilter`, which supports
660
- * `map`, `flatMap`, `foreach`, and `withFilter` operations.
661
- * All these operations apply to those elements of this $coll which
662
- * satisfy the predicate `p`.
663
- */
664
- def withFilter(p: A => Boolean): FilterMonadic[A, Repr] = new WithFilter(p)
665
-
666
- /** A class supporting filtered operations. Instances of this class are
667
- * returned by method `withFilter`.
668
- */
669
- class WithFilter(p: A => Boolean) extends FilterMonadic[A, Repr] {
670
-
671
- /** Builds a new collection by applying a function to all elements of the
672
- * outer $coll containing this `WithFilter` instance that satisfy predicate `p`.
673
- *
674
- * @param f the function to apply to each element.
675
- * @tparam B the element type of the returned collection.
676
- * @tparam That $thatinfo
677
- * @param bf $bfinfo
678
- * @return a new collection of type `That` resulting from applying
679
- * the given function `f` to each element of the outer $coll
680
- * that satisfies predicate `p` and collecting the results.
681
- *
682
- * @usecase def map[B](f: A => B): $Coll[B]
683
- *
684
- * @return a new $coll resulting from applying the given function
685
- * `f` to each element of the outer $coll that satisfies
686
- * predicate `p` and collecting the results.
687
- */
688
- def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
689
- val b = bf(repr)
690
- for (x <- self)
691
- if (p(x)) b += f(x)
692
- b.result
693
- }
694
-
695
- /** Builds a new collection by applying a function to all elements of the
696
- * outer $coll containing this `WithFilter` instance that satisfy
697
- * predicate `p` and concatenating the results.
698
- *
699
- * @param f the function to apply to each element.
700
- * @tparam B the element type of the returned collection.
701
- * @tparam That $thatinfo
702
- * @param bf $bfinfo
703
- * @return a new collection of type `That` resulting from applying
704
- * the given collection-valued function `f` to each element
705
- * of the outer $coll that satisfies predicate `p` and
706
- * concatenating the results.
707
- *
708
- * @usecase def flatMap[B](f: A => TraversableOnce[B]): $Coll[B]
709
- *
710
- * @return a new $coll resulting from applying the given collection-valued function
711
- * `f` to each element of the outer $coll that satisfies predicate `p` and concatenating the results.
712
- */
713
- def flatMap[B, That](f: A => GenTraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That = {
714
- val b = bf(repr)
715
- for (x <- self)
716
- if (p(x)) b ++= f(x).seq
717
- b.result
718
- }
719
-
720
- /** Applies a function `f` to all elements of the outer $coll containing
721
- * this `WithFilter` instance that satisfy predicate `p`.
722
- *
723
- * @param f the function that is applied for its side-effect to every element.
724
- * The result of function `f` is discarded.
725
- *
726
- * @tparam U the type parameter describing the result of function `f`.
727
- * This result will always be ignored. Typically `U` is `Unit`,
728
- * but this is not necessary.
729
- *
730
- * @usecase def foreach(f: A => Unit): Unit
731
- */
732
- def foreach[U](f: A => U): Unit =
733
- for (x <- self)
734
- if (p(x)) f(x)
735
-
736
- /** Further refines the filter for this $coll.
737
- *
738
- * @param q the predicate used to test elements.
739
- * @return an object of class `WithFilter`, which supports
740
- * `map`, `flatMap`, `foreach`, and `withFilter` operations.
741
- * All these operations apply to those elements of this $coll which
742
- * satisfy the predicate `q` in addition to the predicate `p`.
743
- */
744
- def withFilter(q: A => Boolean): WithFilter =
745
- new WithFilter(x => p(x) && q(x))
746
- }
747
-
748
- // A helper for tails and inits.
749
- private def iterateUntilEmpty(f: Traversable[A @uV] => Traversable[A @uV]): Iterator[Repr] = {
750
- val it = Iterator.iterate(thisCollection)(f) takeWhile (x => !x.isEmpty)
751
- it ++ Iterator(Nil) map (newBuilder ++= _ result)
752
- }
753
- }
754
-
755
-
756
- </textarea>
757
- </form>
758
-
759
- <script>
760
- var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
761
- lineNumbers: true,
762
- matchBrackets: true,
763
- theme: "ambiance",
764
- mode: "text/x-scala"
765
- });
766
- </script>
767
- </article>