statixite 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +145 -0
  4. data/Rakefile +26 -0
  5. data/app/assets/images/statixite/STATIXITE-logo.png +0 -0
  6. data/app/assets/images/statixite/favicon.ico +0 -0
  7. data/app/assets/images/statixite/jekyll.png +0 -0
  8. data/app/assets/images/statixite/md-editor.png +0 -0
  9. data/app/assets/images/statixite/ring-alt.gif +0 -0
  10. data/app/assets/javascripts/controllers/statixite/deployments_create.js +13 -0
  11. data/app/assets/javascripts/controllers/statixite/deployments_index.js +13 -0
  12. data/app/assets/javascripts/controllers/statixite/sites_create.js +27 -0
  13. data/app/assets/javascripts/controllers/statixite/sites_new.js +27 -0
  14. data/app/assets/javascripts/controllers/statixite/templates_edit.js +208 -0
  15. data/app/assets/javascripts/statixite/application.js +8 -0
  16. data/app/assets/javascripts/statixite/array-helpers.js +13 -0
  17. data/app/assets/javascripts/statixite/editor.js +244 -0
  18. data/app/assets/javascripts/statixite/loader.js +14 -0
  19. data/app/assets/javascripts/statixite/notify-defaults.js +5 -0
  20. data/app/assets/stylesheets/statixite/application.less +271 -0
  21. data/app/assets/stylesheets/statixite/bootstrap-glyphicons.less +305 -0
  22. data/app/assets/stylesheets/statixite/bootstrap.less +58 -0
  23. data/app/assets/stylesheets/statixite/bootstrap_and_overrides.less +2 -0
  24. data/app/assets/stylesheets/statixite/landing-page.less +156 -0
  25. data/app/controllers/statixite/application_controller.rb +22 -0
  26. data/app/controllers/statixite/deployments_controller.rb +61 -0
  27. data/app/controllers/statixite/media_controller.rb +61 -0
  28. data/app/controllers/statixite/posts_controller.rb +68 -0
  29. data/app/controllers/statixite/sites_controller.rb +141 -0
  30. data/app/controllers/statixite/templates_controller.rb +233 -0
  31. data/app/helpers/statixite/application_helper.rb +63 -0
  32. data/app/models/statixite/deployment.rb +5 -0
  33. data/app/models/statixite/media.rb +7 -0
  34. data/app/models/statixite/post.rb +76 -0
  35. data/app/models/statixite/site.rb +76 -0
  36. data/app/services/statixite/deployment_service.rb +73 -0
  37. data/app/services/statixite/git_service.rb +102 -0
  38. data/app/services/statixite/site_deactivation_service.rb +52 -0
  39. data/app/services/statixite/site_operation_service.rb +251 -0
  40. data/app/uploaders/statixite/file_uploader.rb +14 -0
  41. data/app/validators/statixite/jekyll_template_validator.rb +16 -0
  42. data/app/validators/statixite/liquid_validator.rb +11 -0
  43. data/app/views/layouts/statixite/_dash_nav.html.haml +20 -0
  44. data/app/views/layouts/statixite/_flash.html.haml +13 -0
  45. data/app/views/layouts/statixite/_head.html.haml +12 -0
  46. data/app/views/layouts/statixite/_header.html.haml +30 -0
  47. data/app/views/layouts/statixite/_site_sub_items.html.haml +38 -0
  48. data/app/views/layouts/statixite/dashboard.html.haml +27 -0
  49. data/app/views/statixite/deployments/_modal.html.haml +18 -0
  50. data/app/views/statixite/deployments/index.html.haml +39 -0
  51. data/app/views/statixite/kaminari/_first_page.html.haml +2 -0
  52. data/app/views/statixite/kaminari/_gap.html.haml +2 -0
  53. data/app/views/statixite/kaminari/_last_page.html.haml +2 -0
  54. data/app/views/statixite/kaminari/_next_page.html.haml +2 -0
  55. data/app/views/statixite/kaminari/_page.html.haml +6 -0
  56. data/app/views/statixite/kaminari/_paginator.html.haml +11 -0
  57. data/app/views/statixite/kaminari/_prev_page.html.haml +2 -0
  58. data/app/views/statixite/media/_index.html.haml +13 -0
  59. data/app/views/statixite/media/_paginate.html.haml +1 -0
  60. data/app/views/statixite/media/index.html.haml +39 -0
  61. data/app/views/statixite/media/index.js.haml +2 -0
  62. data/app/views/statixite/posts/_form.html.haml +65 -0
  63. data/app/views/statixite/posts/_image_modal.html.haml +21 -0
  64. data/app/views/statixite/posts/_modals.html.haml +111 -0
  65. data/app/views/statixite/posts/_posts.html.haml +15 -0
  66. data/app/views/statixite/posts/edit.html.haml +6 -0
  67. data/app/views/statixite/posts/index.html.haml +4 -0
  68. data/app/views/statixite/posts/index.js.haml +1 -0
  69. data/app/views/statixite/posts/new.html.haml +5 -0
  70. data/app/views/statixite/sites/_sites.html.haml +27 -0
  71. data/app/views/statixite/sites/_templates.html.haml +26 -0
  72. data/app/views/statixite/sites/build_and_preview.html.haml +24 -0
  73. data/app/views/statixite/sites/index.html.haml +4 -0
  74. data/app/views/statixite/sites/index.js.haml +1 -0
  75. data/app/views/statixite/sites/new.html.haml +45 -0
  76. data/app/views/statixite/sites/settings.html.haml +77 -0
  77. data/app/views/statixite/templates/edit.html.haml +93 -0
  78. data/app/views/statixite/templates/upload_files.js.haml +2 -0
  79. data/config/routes.rb +24 -0
  80. data/db/migrate/20150525171543_create_statixite_sites.rb +15 -0
  81. data/db/migrate/20150530041055_create_statixite_posts.rb +14 -0
  82. data/db/migrate/20150610024047_create_statixite_deployments.rb +11 -0
  83. data/db/migrate/20151013131224_create_statixite_media.rb +10 -0
  84. data/lib/assets/templates.yaml +734 -0
  85. data/lib/generators/statixite/statixite_generator.rb +49 -0
  86. data/lib/statixite.rb +14 -0
  87. data/lib/statixite/cloud_sync.rb +104 -0
  88. data/lib/statixite/engine.rb +49 -0
  89. data/lib/statixite/version.rb +3 -0
  90. data/lib/tasks/statixite_tasks.rake +4 -0
  91. data/vendor/assets/bower_components/bootstrap/CHANGELOG.md +5 -0
  92. data/vendor/assets/bower_components/bootstrap/Gruntfile.js +533 -0
  93. data/vendor/assets/bower_components/bootstrap/LICENSE +21 -0
  94. data/vendor/assets/bower_components/bootstrap/README.md +139 -0
  95. data/vendor/assets/bower_components/bootstrap/bower.json +34 -0
  96. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +587 -0
  97. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -0
  98. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +6 -0
  99. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map +1 -0
  100. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css +6760 -0
  101. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -0
  102. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +6 -0
  103. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css.map +1 -0
  104. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  105. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +288 -0
  106. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  107. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  108. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  109. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +2363 -0
  110. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +7 -0
  111. data/vendor/assets/bower_components/bootstrap/dist/js/npm.js +13 -0
  112. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  113. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
  114. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  115. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  116. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  117. data/vendor/assets/bower_components/bootstrap/grunt/bs-commonjs-generator.js +30 -0
  118. data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +42 -0
  119. data/vendor/assets/bower_components/bootstrap/grunt/bs-lessdoc-parser.js +237 -0
  120. data/vendor/assets/bower_components/bootstrap/grunt/bs-raw-files-generator.js +44 -0
  121. data/vendor/assets/bower_components/bootstrap/grunt/configBridge.json +46 -0
  122. data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +82 -0
  123. data/vendor/assets/bower_components/bootstrap/js/affix.js +162 -0
  124. data/vendor/assets/bower_components/bootstrap/js/alert.js +94 -0
  125. data/vendor/assets/bower_components/bootstrap/js/button.js +120 -0
  126. data/vendor/assets/bower_components/bootstrap/js/carousel.js +237 -0
  127. data/vendor/assets/bower_components/bootstrap/js/collapse.js +211 -0
  128. data/vendor/assets/bower_components/bootstrap/js/dropdown.js +165 -0
  129. data/vendor/assets/bower_components/bootstrap/js/modal.js +337 -0
  130. data/vendor/assets/bower_components/bootstrap/js/popover.js +108 -0
  131. data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +172 -0
  132. data/vendor/assets/bower_components/bootstrap/js/tab.js +155 -0
  133. data/vendor/assets/bower_components/bootstrap/js/tooltip.js +514 -0
  134. data/vendor/assets/bower_components/bootstrap/js/transition.js +59 -0
  135. data/vendor/assets/bower_components/bootstrap/less/alerts.less +73 -0
  136. data/vendor/assets/bower_components/bootstrap/less/badges.less +66 -0
  137. data/vendor/assets/bower_components/bootstrap/less/bootstrap.less +56 -0
  138. data/vendor/assets/bower_components/bootstrap/less/breadcrumbs.less +26 -0
  139. data/vendor/assets/bower_components/bootstrap/less/button-groups.less +244 -0
  140. data/vendor/assets/bower_components/bootstrap/less/buttons.less +166 -0
  141. data/vendor/assets/bower_components/bootstrap/less/carousel.less +270 -0
  142. data/vendor/assets/bower_components/bootstrap/less/close.less +34 -0
  143. data/vendor/assets/bower_components/bootstrap/less/code.less +69 -0
  144. data/vendor/assets/bower_components/bootstrap/less/component-animations.less +33 -0
  145. data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +216 -0
  146. data/vendor/assets/bower_components/bootstrap/less/forms.less +613 -0
  147. data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +305 -0
  148. data/vendor/assets/bower_components/bootstrap/less/grid.less +84 -0
  149. data/vendor/assets/bower_components/bootstrap/less/input-groups.less +171 -0
  150. data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +54 -0
  151. data/vendor/assets/bower_components/bootstrap/less/labels.less +64 -0
  152. data/vendor/assets/bower_components/bootstrap/less/list-group.less +130 -0
  153. data/vendor/assets/bower_components/bootstrap/less/media.less +66 -0
  154. data/vendor/assets/bower_components/bootstrap/less/mixins.less +40 -0
  155. data/vendor/assets/bower_components/bootstrap/less/mixins/alerts.less +14 -0
  156. data/vendor/assets/bower_components/bootstrap/less/mixins/background-variant.less +9 -0
  157. data/vendor/assets/bower_components/bootstrap/less/mixins/border-radius.less +18 -0
  158. data/vendor/assets/bower_components/bootstrap/less/mixins/buttons.less +65 -0
  159. data/vendor/assets/bower_components/bootstrap/less/mixins/center-block.less +7 -0
  160. data/vendor/assets/bower_components/bootstrap/less/mixins/clearfix.less +22 -0
  161. data/vendor/assets/bower_components/bootstrap/less/mixins/forms.less +85 -0
  162. data/vendor/assets/bower_components/bootstrap/less/mixins/gradients.less +59 -0
  163. data/vendor/assets/bower_components/bootstrap/less/mixins/grid-framework.less +91 -0
  164. data/vendor/assets/bower_components/bootstrap/less/mixins/grid.less +122 -0
  165. data/vendor/assets/bower_components/bootstrap/less/mixins/hide-text.less +21 -0
  166. data/vendor/assets/bower_components/bootstrap/less/mixins/image.less +33 -0
  167. data/vendor/assets/bower_components/bootstrap/less/mixins/labels.less +12 -0
  168. data/vendor/assets/bower_components/bootstrap/less/mixins/list-group.less +30 -0
  169. data/vendor/assets/bower_components/bootstrap/less/mixins/nav-divider.less +10 -0
  170. data/vendor/assets/bower_components/bootstrap/less/mixins/nav-vertical-align.less +9 -0
  171. data/vendor/assets/bower_components/bootstrap/less/mixins/opacity.less +8 -0
  172. data/vendor/assets/bower_components/bootstrap/less/mixins/pagination.less +24 -0
  173. data/vendor/assets/bower_components/bootstrap/less/mixins/panels.less +24 -0
  174. data/vendor/assets/bower_components/bootstrap/less/mixins/progress-bar.less +10 -0
  175. data/vendor/assets/bower_components/bootstrap/less/mixins/reset-filter.less +8 -0
  176. data/vendor/assets/bower_components/bootstrap/less/mixins/reset-text.less +18 -0
  177. data/vendor/assets/bower_components/bootstrap/less/mixins/resize.less +6 -0
  178. data/vendor/assets/bower_components/bootstrap/less/mixins/responsive-visibility.less +15 -0
  179. data/vendor/assets/bower_components/bootstrap/less/mixins/size.less +10 -0
  180. data/vendor/assets/bower_components/bootstrap/less/mixins/tab-focus.less +9 -0
  181. data/vendor/assets/bower_components/bootstrap/less/mixins/table-row.less +28 -0
  182. data/vendor/assets/bower_components/bootstrap/less/mixins/text-emphasis.less +9 -0
  183. data/vendor/assets/bower_components/bootstrap/less/mixins/text-overflow.less +8 -0
  184. data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +227 -0
  185. data/vendor/assets/bower_components/bootstrap/less/modals.less +150 -0
  186. data/vendor/assets/bower_components/bootstrap/less/navbar.less +660 -0
  187. data/vendor/assets/bower_components/bootstrap/less/navs.less +242 -0
  188. data/vendor/assets/bower_components/bootstrap/less/normalize.less +424 -0
  189. data/vendor/assets/bower_components/bootstrap/less/pager.less +54 -0
  190. data/vendor/assets/bower_components/bootstrap/less/pagination.less +89 -0
  191. data/vendor/assets/bower_components/bootstrap/less/panels.less +271 -0
  192. data/vendor/assets/bower_components/bootstrap/less/popovers.less +131 -0
  193. data/vendor/assets/bower_components/bootstrap/less/print.less +101 -0
  194. data/vendor/assets/bower_components/bootstrap/less/progress-bars.less +87 -0
  195. data/vendor/assets/bower_components/bootstrap/less/responsive-embed.less +35 -0
  196. data/vendor/assets/bower_components/bootstrap/less/responsive-utilities.less +194 -0
  197. data/vendor/assets/bower_components/bootstrap/less/scaffolding.less +161 -0
  198. data/vendor/assets/bower_components/bootstrap/less/tables.less +234 -0
  199. data/vendor/assets/bower_components/bootstrap/less/theme.less +291 -0
  200. data/vendor/assets/bower_components/bootstrap/less/thumbnails.less +36 -0
  201. data/vendor/assets/bower_components/bootstrap/less/tooltip.less +101 -0
  202. data/vendor/assets/bower_components/bootstrap/less/type.less +302 -0
  203. data/vendor/assets/bower_components/bootstrap/less/utilities.less +55 -0
  204. data/vendor/assets/bower_components/bootstrap/less/variables.less +869 -0
  205. data/vendor/assets/bower_components/bootstrap/less/wells.less +29 -0
  206. data/vendor/assets/bower_components/bootstrap/nuget/MyGet.ps1 +8 -0
  207. data/vendor/assets/bower_components/bootstrap/nuget/bootstrap.less.nuspec +28 -0
  208. data/vendor/assets/bower_components/bootstrap/nuget/bootstrap.nuspec +28 -0
  209. data/vendor/assets/bower_components/bootstrap/package.js +32 -0
  210. data/vendor/assets/bower_components/bootstrap/package.json +87 -0
  211. data/vendor/assets/bower_components/jquery/AUTHORS.txt +275 -0
  212. data/vendor/assets/bower_components/jquery/LICENSE.txt +36 -0
  213. data/vendor/assets/bower_components/jquery/README.md +5 -0
  214. data/vendor/assets/bower_components/jquery/bower.json +14 -0
  215. data/vendor/assets/bower_components/jquery/dist/jquery.js +9831 -0
  216. data/vendor/assets/bower_components/jquery/dist/jquery.min.js +4 -0
  217. data/vendor/assets/bower_components/jquery/dist/jquery.min.map +1 -0
  218. data/vendor/assets/bower_components/jquery/src/ajax.js +845 -0
  219. data/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +100 -0
  220. data/vendor/assets/bower_components/jquery/src/ajax/load.js +83 -0
  221. data/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  222. data/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +27 -0
  223. data/vendor/assets/bower_components/jquery/src/ajax/script.js +68 -0
  224. data/vendor/assets/bower_components/jquery/src/ajax/var/location.js +3 -0
  225. data/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  226. data/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  227. data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +167 -0
  228. data/vendor/assets/bower_components/jquery/src/attributes.js +11 -0
  229. data/vendor/assets/bower_components/jquery/src/attributes/attr.js +142 -0
  230. data/vendor/assets/bower_components/jquery/src/attributes/classes.js +177 -0
  231. data/vendor/assets/bower_components/jquery/src/attributes/prop.js +109 -0
  232. data/vendor/assets/bower_components/jquery/src/attributes/support.js +36 -0
  233. data/vendor/assets/bower_components/jquery/src/attributes/val.js +170 -0
  234. data/vendor/assets/bower_components/jquery/src/callbacks.js +232 -0
  235. data/vendor/assets/bower_components/jquery/src/core.js +489 -0
  236. data/vendor/assets/bower_components/jquery/src/core/access.js +65 -0
  237. data/vendor/assets/bower_components/jquery/src/core/init.js +134 -0
  238. data/vendor/assets/bower_components/jquery/src/core/parseHTML.js +49 -0
  239. data/vendor/assets/bower_components/jquery/src/core/ready.js +103 -0
  240. data/vendor/assets/bower_components/jquery/src/core/support.js +18 -0
  241. data/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +5 -0
  242. data/vendor/assets/bower_components/jquery/src/css.js +515 -0
  243. data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +24 -0
  244. data/vendor/assets/bower_components/jquery/src/css/adjustCSS.js +65 -0
  245. data/vendor/assets/bower_components/jquery/src/css/curCSS.js +57 -0
  246. data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +72 -0
  247. data/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +18 -0
  248. data/vendor/assets/bower_components/jquery/src/css/showHide.js +48 -0
  249. data/vendor/assets/bower_components/jquery/src/css/support.js +121 -0
  250. data/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  251. data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +15 -0
  252. data/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +16 -0
  253. data/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +3 -0
  254. data/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  255. data/vendor/assets/bower_components/jquery/src/css/var/swap.js +24 -0
  256. data/vendor/assets/bower_components/jquery/src/data.js +187 -0
  257. data/vendor/assets/bower_components/jquery/src/data/Data.js +200 -0
  258. data/vendor/assets/bower_components/jquery/src/data/accepts.js +20 -0
  259. data/vendor/assets/bower_components/jquery/src/data/support.js +23 -0
  260. data/vendor/assets/bower_components/jquery/src/data/var/acceptData.js +18 -0
  261. data/vendor/assets/bower_components/jquery/src/data/var/dataPriv.js +5 -0
  262. data/vendor/assets/bower_components/jquery/src/data/var/dataUser.js +5 -0
  263. data/vendor/assets/bower_components/jquery/src/deferred.js +158 -0
  264. data/vendor/assets/bower_components/jquery/src/deprecated.js +32 -0
  265. data/vendor/assets/bower_components/jquery/src/dimensions.js +54 -0
  266. data/vendor/assets/bower_components/jquery/src/effects.js +629 -0
  267. data/vendor/assets/bower_components/jquery/src/effects/Tween.js +121 -0
  268. data/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  269. data/vendor/assets/bower_components/jquery/src/effects/support.js +58 -0
  270. data/vendor/assets/bower_components/jquery/src/event.js +710 -0
  271. data/vendor/assets/bower_components/jquery/src/event/ajax.js +20 -0
  272. data/vendor/assets/bower_components/jquery/src/event/alias.js +27 -0
  273. data/vendor/assets/bower_components/jquery/src/event/focusin.js +53 -0
  274. data/vendor/assets/bower_components/jquery/src/event/support.js +9 -0
  275. data/vendor/assets/bower_components/jquery/src/event/trigger.js +199 -0
  276. data/vendor/assets/bower_components/jquery/src/exports/amd.js +24 -0
  277. data/vendor/assets/bower_components/jquery/src/exports/global.js +26 -0
  278. data/vendor/assets/bower_components/jquery/src/intro.js +44 -0
  279. data/vendor/assets/bower_components/jquery/src/jquery.js +37 -0
  280. data/vendor/assets/bower_components/jquery/src/manipulation.js +481 -0
  281. data/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +20 -0
  282. data/vendor/assets/bower_components/jquery/src/manipulation/buildFragment.js +102 -0
  283. data/vendor/assets/bower_components/jquery/src/manipulation/createSafeFragment.js +20 -0
  284. data/vendor/assets/bower_components/jquery/src/manipulation/getAll.js +21 -0
  285. data/vendor/assets/bower_components/jquery/src/manipulation/setGlobalEval.js +20 -0
  286. data/vendor/assets/bower_components/jquery/src/manipulation/support.js +33 -0
  287. data/vendor/assets/bower_components/jquery/src/manipulation/var/nodeNames.js +5 -0
  288. data/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  289. data/vendor/assets/bower_components/jquery/src/manipulation/var/rleadingWhitespace.js +3 -0
  290. data/vendor/assets/bower_components/jquery/src/manipulation/var/rscriptType.js +3 -0
  291. data/vendor/assets/bower_components/jquery/src/manipulation/var/rtagName.js +3 -0
  292. data/vendor/assets/bower_components/jquery/src/manipulation/wrapMap.js +27 -0
  293. data/vendor/assets/bower_components/jquery/src/offset.js +221 -0
  294. data/vendor/assets/bower_components/jquery/src/outro.js +2 -0
  295. data/vendor/assets/bower_components/jquery/src/queue.js +143 -0
  296. data/vendor/assets/bower_components/jquery/src/queue/delay.js +22 -0
  297. data/vendor/assets/bower_components/jquery/src/selector-native.js +211 -0
  298. data/vendor/assets/bower_components/jquery/src/selector-sizzle.js +14 -0
  299. data/vendor/assets/bower_components/jquery/src/selector.js +1 -0
  300. data/vendor/assets/bower_components/jquery/src/serialize.js +125 -0
  301. data/vendor/assets/bower_components/jquery/src/support.js +63 -0
  302. data/vendor/assets/bower_components/jquery/src/traversing.js +175 -0
  303. data/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +100 -0
  304. data/vendor/assets/bower_components/jquery/src/traversing/var/dir.js +20 -0
  305. data/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  306. data/vendor/assets/bower_components/jquery/src/traversing/var/siblings.js +15 -0
  307. data/vendor/assets/bower_components/jquery/src/var/arr.js +3 -0
  308. data/vendor/assets/bower_components/jquery/src/var/class2type.js +5 -0
  309. data/vendor/assets/bower_components/jquery/src/var/concat.js +5 -0
  310. data/vendor/assets/bower_components/jquery/src/var/deletedIds.js +3 -0
  311. data/vendor/assets/bower_components/jquery/src/var/document.js +3 -0
  312. data/vendor/assets/bower_components/jquery/src/var/documentElement.js +5 -0
  313. data/vendor/assets/bower_components/jquery/src/var/hasOwn.js +5 -0
  314. data/vendor/assets/bower_components/jquery/src/var/indexOf.js +5 -0
  315. data/vendor/assets/bower_components/jquery/src/var/pnum.js +3 -0
  316. data/vendor/assets/bower_components/jquery/src/var/push.js +5 -0
  317. data/vendor/assets/bower_components/jquery/src/var/rcssNum.js +7 -0
  318. data/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +3 -0
  319. data/vendor/assets/bower_components/jquery/src/var/slice.js +5 -0
  320. data/vendor/assets/bower_components/jquery/src/var/support.js +5 -0
  321. data/vendor/assets/bower_components/jquery/src/var/toString.js +5 -0
  322. data/vendor/assets/bower_components/jquery/src/wrap.js +79 -0
  323. data/vendor/assets/bower_components/jsoneditor/CONTRIBUTING.md +15 -0
  324. data/vendor/assets/bower_components/jsoneditor/HISTORY.md +457 -0
  325. data/vendor/assets/bower_components/jsoneditor/LICENSE +176 -0
  326. data/vendor/assets/bower_components/jsoneditor/NOTICE +17 -0
  327. data/vendor/assets/bower_components/jsoneditor/README.md +155 -0
  328. data/vendor/assets/bower_components/jsoneditor/bower.json +32 -0
  329. data/vendor/assets/bower_components/jsoneditor/dist/img/jsoneditor-icons.svg +893 -0
  330. data/vendor/assets/bower_components/jsoneditor/dist/jsoneditor-minimalist.js +9418 -0
  331. data/vendor/assets/bower_components/jsoneditor/dist/jsoneditor-minimalist.map +1 -0
  332. data/vendor/assets/bower_components/jsoneditor/dist/jsoneditor-minimalist.min.js +35 -0
  333. data/vendor/assets/bower_components/jsoneditor/dist/jsoneditor.css.less +879 -0
  334. data/vendor/assets/bower_components/jsoneditor/dist/jsoneditor.js +35095 -0
  335. data/vendor/assets/bower_components/jsoneditor/dist/jsoneditor.map +1 -0
  336. data/vendor/assets/bower_components/jsoneditor/dist/jsoneditor.min.css +1 -0
  337. data/vendor/assets/bower_components/jsoneditor/dist/jsoneditor.min.js +48 -0
  338. data/vendor/assets/bower_components/jsoneditor/dist/which files do I need.md +41 -0
  339. data/vendor/assets/bower_components/jsoneditor/docs/api.md +286 -0
  340. data/vendor/assets/bower_components/jsoneditor/docs/shortcut_keys.md +38 -0
  341. data/vendor/assets/bower_components/jsoneditor/docs/usage.md +117 -0
  342. data/vendor/assets/bower_components/jsoneditor/examples/01_basic_usage.html +49 -0
  343. data/vendor/assets/bower_components/jsoneditor/examples/02_viewer.html +44 -0
  344. data/vendor/assets/bower_components/jsoneditor/examples/03_switch_mode.html +66 -0
  345. data/vendor/assets/bower_components/jsoneditor/examples/04_load_and_save.html +62 -0
  346. data/vendor/assets/bower_components/jsoneditor/examples/05_custom_fields_editable.html +63 -0
  347. data/vendor/assets/bower_components/jsoneditor/examples/06_custom_styling.html +51 -0
  348. data/vendor/assets/bower_components/jsoneditor/examples/07_json_schema_validation.html +71 -0
  349. data/vendor/assets/bower_components/jsoneditor/examples/css/darktheme.css +76 -0
  350. data/vendor/assets/bower_components/jsoneditor/examples/requirejs_demo/requirejs_demo.html +21 -0
  351. data/vendor/assets/bower_components/jsoneditor/examples/requirejs_demo/scripts/main.js +25 -0
  352. data/vendor/assets/bower_components/jsoneditor/examples/requirejs_demo/scripts/require.js +36 -0
  353. data/vendor/assets/bower_components/jsoneditor/index.js +1 -0
  354. data/vendor/assets/bower_components/jsoneditor/package.json +41 -0
  355. data/vendor/assets/bower_components/jsoneditor/src/css/contextmenu.css +233 -0
  356. data/vendor/assets/bower_components/jsoneditor/src/css/img/description.txt +14 -0
  357. data/vendor/assets/bower_components/jsoneditor/src/css/img/jsoneditor-icons.svg +893 -0
  358. data/vendor/assets/bower_components/jsoneditor/src/css/jsoneditor.css +433 -0
  359. data/vendor/assets/bower_components/jsoneditor/src/css/menu.css +110 -0
  360. data/vendor/assets/bower_components/jsoneditor/src/css/searchbox.css +75 -0
  361. data/vendor/assets/bower_components/jsoneditor/src/docs/which files do I need.md +41 -0
  362. data/vendor/assets/bower_components/jsoneditor/src/js/ContextMenu.js +455 -0
  363. data/vendor/assets/bower_components/jsoneditor/src/js/Highlighter.js +84 -0
  364. data/vendor/assets/bower_components/jsoneditor/src/js/History.js +252 -0
  365. data/vendor/assets/bower_components/jsoneditor/src/js/JSONEditor.js +371 -0
  366. data/vendor/assets/bower_components/jsoneditor/src/js/Node.js +3400 -0
  367. data/vendor/assets/bower_components/jsoneditor/src/js/SearchBox.js +295 -0
  368. data/vendor/assets/bower_components/jsoneditor/src/js/ace/index.js +9 -0
  369. data/vendor/assets/bower_components/jsoneditor/src/js/ace/theme-jsoneditor.js +144 -0
  370. data/vendor/assets/bower_components/jsoneditor/src/js/appendNodeFactory.js +226 -0
  371. data/vendor/assets/bower_components/jsoneditor/src/js/assets/jsonlint/README.md +15 -0
  372. data/vendor/assets/bower_components/jsoneditor/src/js/assets/jsonlint/jsonlint.js +418 -0
  373. data/vendor/assets/bower_components/jsoneditor/src/js/header.js +29 -0
  374. data/vendor/assets/bower_components/jsoneditor/src/js/modeswitcher.js +105 -0
  375. data/vendor/assets/bower_components/jsoneditor/src/js/textmode.js +474 -0
  376. data/vendor/assets/bower_components/jsoneditor/src/js/treemode.js +1150 -0
  377. data/vendor/assets/bower_components/jsoneditor/src/js/util.js +765 -0
  378. data/vendor/assets/bower_components/notifyjs/CHANGES.md +7 -0
  379. data/vendor/assets/bower_components/notifyjs/README.md +31 -0
  380. data/vendor/assets/bower_components/notifyjs/bower.json +14 -0
  381. data/vendor/assets/bower_components/notifyjs/dist/notify.js +586 -0
  382. data/vendor/assets/bower_components/notifyjs/dist/styles/metro/notify-metro.css +40 -0
  383. data/vendor/assets/bower_components/notifyjs/dist/styles/metro/notify-metro.js +39 -0
  384. data/vendor/assets/bower_components/notifyjs/examples/classes.html +49 -0
  385. data/vendor/assets/bower_components/notifyjs/examples/images/Mail.png +0 -0
  386. data/vendor/assets/bower_components/notifyjs/examples/inlines.html +111 -0
  387. data/vendor/assets/bower_components/notifyjs/examples/metro.html +37 -0
  388. data/vendor/assets/bower_components/notifyjs/examples/multi-text.html +55 -0
  389. data/vendor/assets/bower_components/notifyjs/examples/position.html +42 -0
  390. data/vendor/assets/bower_components/notifyjs/notify.jquery.json +28 -0
  391. data/vendor/assets/bower_components/notifyjs/package.json +18 -0
  392. data/vendor/assets/bower_components/vue/LICENSE +21 -0
  393. data/vendor/assets/bower_components/vue/bower.json +19 -0
  394. data/vendor/assets/bower_components/vue/dist/vue.js +10198 -0
  395. data/vendor/assets/bower_components/vue/dist/vue.min.js +8 -0
  396. data/vendor/assets/bower_components/vue/src/api/child.js +49 -0
  397. data/vendor/assets/bower_components/vue/src/api/data.js +159 -0
  398. data/vendor/assets/bower_components/vue/src/api/dom.js +226 -0
  399. data/vendor/assets/bower_components/vue/src/api/events.js +174 -0
  400. data/vendor/assets/bower_components/vue/src/api/global.js +129 -0
  401. data/vendor/assets/bower_components/vue/src/api/lifecycle.js +68 -0
  402. data/vendor/assets/bower_components/vue/src/batcher.js +98 -0
  403. data/vendor/assets/bower_components/vue/src/cache.js +112 -0
  404. data/vendor/assets/bower_components/vue/src/compiler/compile-props.js +183 -0
  405. data/vendor/assets/bower_components/vue/src/compiler/compile.js +630 -0
  406. data/vendor/assets/bower_components/vue/src/compiler/index.js +4 -0
  407. data/vendor/assets/bower_components/vue/src/compiler/transclude.js +144 -0
  408. data/vendor/assets/bower_components/vue/src/config.js +124 -0
  409. data/vendor/assets/bower_components/vue/src/directive.js +254 -0
  410. data/vendor/assets/bower_components/vue/src/directives/attr.js +59 -0
  411. data/vendor/assets/bower_components/vue/src/directives/class.js +70 -0
  412. data/vendor/assets/bower_components/vue/src/directives/cloak.js +10 -0
  413. data/vendor/assets/bower_components/vue/src/directives/component.js +344 -0
  414. data/vendor/assets/bower_components/vue/src/directives/el.js +12 -0
  415. data/vendor/assets/bower_components/vue/src/directives/html.js +40 -0
  416. data/vendor/assets/bower_components/vue/src/directives/if.js +125 -0
  417. data/vendor/assets/bower_components/vue/src/directives/index.js +24 -0
  418. data/vendor/assets/bower_components/vue/src/directives/model/checkbox.js +42 -0
  419. data/vendor/assets/bower_components/vue/src/directives/model/index.js +82 -0
  420. data/vendor/assets/bower_components/vue/src/directives/model/radio.js +33 -0
  421. data/vendor/assets/bower_components/vue/src/directives/model/select.js +236 -0
  422. data/vendor/assets/bower_components/vue/src/directives/model/text.js +132 -0
  423. data/vendor/assets/bower_components/vue/src/directives/on.js +59 -0
  424. data/vendor/assets/bower_components/vue/src/directives/prop.js +62 -0
  425. data/vendor/assets/bower_components/vue/src/directives/ref.js +22 -0
  426. data/vendor/assets/bower_components/vue/src/directives/repeat.js +770 -0
  427. data/vendor/assets/bower_components/vue/src/directives/show.js +8 -0
  428. data/vendor/assets/bower_components/vue/src/directives/style.js +110 -0
  429. data/vendor/assets/bower_components/vue/src/directives/text.js +14 -0
  430. data/vendor/assets/bower_components/vue/src/directives/transition.js +26 -0
  431. data/vendor/assets/bower_components/vue/src/element-directives/content.js +111 -0
  432. data/vendor/assets/bower_components/vue/src/element-directives/index.js +2 -0
  433. data/vendor/assets/bower_components/vue/src/element-directives/partial.js +73 -0
  434. data/vendor/assets/bower_components/vue/src/filters/array-filters.js +97 -0
  435. data/vendor/assets/bower_components/vue/src/filters/index.js +146 -0
  436. data/vendor/assets/bower_components/vue/src/instance/compile.js +200 -0
  437. data/vendor/assets/bower_components/vue/src/instance/events.js +139 -0
  438. data/vendor/assets/bower_components/vue/src/instance/init.js +89 -0
  439. data/vendor/assets/bower_components/vue/src/instance/misc.js +93 -0
  440. data/vendor/assets/bower_components/vue/src/instance/scope.js +282 -0
  441. data/vendor/assets/bower_components/vue/src/observer/array.js +98 -0
  442. data/vendor/assets/bower_components/vue/src/observer/dep.js +61 -0
  443. data/vendor/assets/bower_components/vue/src/observer/index.js +234 -0
  444. data/vendor/assets/bower_components/vue/src/observer/object.js +82 -0
  445. data/vendor/assets/bower_components/vue/src/parsers/directive.js +180 -0
  446. data/vendor/assets/bower_components/vue/src/parsers/expression.js +264 -0
  447. data/vendor/assets/bower_components/vue/src/parsers/path.js +348 -0
  448. data/vendor/assets/bower_components/vue/src/parsers/template.js +288 -0
  449. data/vendor/assets/bower_components/vue/src/parsers/text.js +178 -0
  450. data/vendor/assets/bower_components/vue/src/transition/index.js +128 -0
  451. data/vendor/assets/bower_components/vue/src/transition/queue.js +35 -0
  452. data/vendor/assets/bower_components/vue/src/transition/transition.js +357 -0
  453. data/vendor/assets/bower_components/vue/src/util/component.js +124 -0
  454. data/vendor/assets/bower_components/vue/src/util/debug.js +64 -0
  455. data/vendor/assets/bower_components/vue/src/util/dom.js +272 -0
  456. data/vendor/assets/bower_components/vue/src/util/env.js +85 -0
  457. data/vendor/assets/bower_components/vue/src/util/index.js +9 -0
  458. data/vendor/assets/bower_components/vue/src/util/lang.js +310 -0
  459. data/vendor/assets/bower_components/vue/src/util/options.js +357 -0
  460. data/vendor/assets/bower_components/vue/src/vue.js +89 -0
  461. data/vendor/assets/bower_components/vue/src/watcher.js +312 -0
  462. metadata +870 -0
@@ -0,0 +1,630 @@
1
+ var _ = require('../util')
2
+ var compileProps = require('./compile-props')
3
+ var config = require('../config')
4
+ var textParser = require('../parsers/text')
5
+ var dirParser = require('../parsers/directive')
6
+ var templateParser = require('../parsers/template')
7
+ var resolveAsset = _.resolveAsset
8
+ var componentDef = require('../directives/component')
9
+
10
+ // terminal directives
11
+ var terminalDirectives = [
12
+ 'repeat',
13
+ 'if'
14
+ ]
15
+
16
+ /**
17
+ * Compile a template and return a reusable composite link
18
+ * function, which recursively contains more link functions
19
+ * inside. This top level compile function would normally
20
+ * be called on instance root nodes, but can also be used
21
+ * for partial compilation if the partial argument is true.
22
+ *
23
+ * The returned composite link function, when called, will
24
+ * return an unlink function that tearsdown all directives
25
+ * created during the linking phase.
26
+ *
27
+ * @param {Element|DocumentFragment} el
28
+ * @param {Object} options
29
+ * @param {Boolean} partial
30
+ * @return {Function}
31
+ */
32
+
33
+ exports.compile = function (el, options, partial) {
34
+ // link function for the node itself.
35
+ var nodeLinkFn = partial || !options._asComponent
36
+ ? compileNode(el, options)
37
+ : null
38
+ // link function for the childNodes
39
+ var childLinkFn =
40
+ !(nodeLinkFn && nodeLinkFn.terminal) &&
41
+ el.tagName !== 'SCRIPT' &&
42
+ el.hasChildNodes()
43
+ ? compileNodeList(el.childNodes, options)
44
+ : null
45
+
46
+ /**
47
+ * A composite linker function to be called on a already
48
+ * compiled piece of DOM, which instantiates all directive
49
+ * instances.
50
+ *
51
+ * @param {Vue} vm
52
+ * @param {Element|DocumentFragment} el
53
+ * @param {Vue} [host] - host vm of transcluded content
54
+ * @return {Function|undefined}
55
+ */
56
+
57
+ return function compositeLinkFn (vm, el, host) {
58
+ // cache childNodes before linking parent, fix #657
59
+ var childNodes = _.toArray(el.childNodes)
60
+ // link
61
+ var dirs = linkAndCapture(function () {
62
+ if (nodeLinkFn) nodeLinkFn(vm, el, host)
63
+ if (childLinkFn) childLinkFn(vm, childNodes, host)
64
+ }, vm)
65
+ return makeUnlinkFn(vm, dirs)
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Apply a linker to a vm/element pair and capture the
71
+ * directives created during the process.
72
+ *
73
+ * @param {Function} linker
74
+ * @param {Vue} vm
75
+ */
76
+
77
+ function linkAndCapture (linker, vm) {
78
+ var originalDirCount = vm._directives.length
79
+ linker()
80
+ return vm._directives.slice(originalDirCount)
81
+ }
82
+
83
+ /**
84
+ * Linker functions return an unlink function that
85
+ * tearsdown all directives instances generated during
86
+ * the process.
87
+ *
88
+ * We create unlink functions with only the necessary
89
+ * information to avoid retaining additional closures.
90
+ *
91
+ * @param {Vue} vm
92
+ * @param {Array} dirs
93
+ * @param {Vue} [context]
94
+ * @param {Array} [contextDirs]
95
+ * @return {Function}
96
+ */
97
+
98
+ function makeUnlinkFn (vm, dirs, context, contextDirs) {
99
+ return function unlink (destroying) {
100
+ teardownDirs(vm, dirs, destroying)
101
+ if (context && contextDirs) {
102
+ teardownDirs(context, contextDirs)
103
+ }
104
+ }
105
+ }
106
+
107
+ /**
108
+ * Teardown partial linked directives.
109
+ *
110
+ * @param {Vue} vm
111
+ * @param {Array} dirs
112
+ * @param {Boolean} destroying
113
+ */
114
+
115
+ function teardownDirs (vm, dirs, destroying) {
116
+ var i = dirs.length
117
+ while (i--) {
118
+ dirs[i]._teardown()
119
+ if (!destroying) {
120
+ vm._directives.$remove(dirs[i])
121
+ }
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Compile link props on an instance.
127
+ *
128
+ * @param {Vue} vm
129
+ * @param {Element} el
130
+ * @param {Object} options
131
+ * @return {Function}
132
+ */
133
+
134
+ exports.compileAndLinkProps = function (vm, el, props) {
135
+ var propsLinkFn = compileProps(el, props)
136
+ var propDirs = linkAndCapture(function () {
137
+ propsLinkFn(vm, null)
138
+ }, vm)
139
+ return makeUnlinkFn(vm, propDirs)
140
+ }
141
+
142
+ /**
143
+ * Compile the root element of an instance.
144
+ *
145
+ * 1. attrs on context container (context scope)
146
+ * 2. attrs on the component template root node, if
147
+ * replace:true (child scope)
148
+ *
149
+ * If this is a fragment instance, we only need to compile 1.
150
+ *
151
+ * @param {Vue} vm
152
+ * @param {Element} el
153
+ * @param {Object} options
154
+ * @return {Function}
155
+ */
156
+
157
+ exports.compileRoot = function (el, options) {
158
+ var containerAttrs = options._containerAttrs
159
+ var replacerAttrs = options._replacerAttrs
160
+ var contextLinkFn, replacerLinkFn
161
+
162
+ // only need to compile other attributes for
163
+ // non-fragment instances
164
+ if (el.nodeType !== 11) {
165
+ // for components, container and replacer need to be
166
+ // compiled separately and linked in different scopes.
167
+ if (options._asComponent) {
168
+ // 2. container attributes
169
+ if (containerAttrs) {
170
+ contextLinkFn = compileDirectives(containerAttrs, options)
171
+ }
172
+ if (replacerAttrs) {
173
+ // 3. replacer attributes
174
+ replacerLinkFn = compileDirectives(replacerAttrs, options)
175
+ }
176
+ } else {
177
+ // non-component, just compile as a normal element.
178
+ replacerLinkFn = compileDirectives(el.attributes, options)
179
+ }
180
+ }
181
+
182
+ return function rootLinkFn (vm, el) {
183
+ // link context scope dirs
184
+ var context = vm._context
185
+ var contextDirs
186
+ if (context && contextLinkFn) {
187
+ contextDirs = linkAndCapture(function () {
188
+ contextLinkFn(context, el)
189
+ }, context)
190
+ }
191
+
192
+ // link self
193
+ var selfDirs = linkAndCapture(function () {
194
+ if (replacerLinkFn) replacerLinkFn(vm, el)
195
+ }, vm)
196
+
197
+ // return the unlink function that tearsdown context
198
+ // container directives.
199
+ return makeUnlinkFn(vm, selfDirs, context, contextDirs)
200
+ }
201
+ }
202
+
203
+ /**
204
+ * Compile a node and return a nodeLinkFn based on the
205
+ * node type.
206
+ *
207
+ * @param {Node} node
208
+ * @param {Object} options
209
+ * @return {Function|null}
210
+ */
211
+
212
+ function compileNode (node, options) {
213
+ var type = node.nodeType
214
+ if (type === 1 && node.tagName !== 'SCRIPT') {
215
+ return compileElement(node, options)
216
+ } else if (type === 3 && config.interpolate && node.data.trim()) {
217
+ return compileTextNode(node, options)
218
+ } else {
219
+ return null
220
+ }
221
+ }
222
+
223
+ /**
224
+ * Compile an element and return a nodeLinkFn.
225
+ *
226
+ * @param {Element} el
227
+ * @param {Object} options
228
+ * @return {Function|null}
229
+ */
230
+
231
+ function compileElement (el, options) {
232
+ // preprocess textareas.
233
+ // textarea treats its text content as the initial value.
234
+ // just bind it as a v-attr directive for value.
235
+ if (el.tagName === 'TEXTAREA') {
236
+ if (textParser.parse(el.value)) {
237
+ el.setAttribute('value', el.value)
238
+ }
239
+ }
240
+ var linkFn
241
+ var hasAttrs = el.hasAttributes()
242
+ // check terminal directives (repeat & if)
243
+ if (hasAttrs) {
244
+ linkFn = checkTerminalDirectives(el, options)
245
+ }
246
+ // check element directives
247
+ if (!linkFn) {
248
+ linkFn = checkElementDirectives(el, options)
249
+ }
250
+ // check component
251
+ if (!linkFn) {
252
+ linkFn = checkComponent(el, options)
253
+ }
254
+ // normal directives
255
+ if (!linkFn && hasAttrs) {
256
+ linkFn = compileDirectives(el.attributes, options)
257
+ }
258
+ return linkFn
259
+ }
260
+
261
+ /**
262
+ * Compile a textNode and return a nodeLinkFn.
263
+ *
264
+ * @param {TextNode} node
265
+ * @param {Object} options
266
+ * @return {Function|null} textNodeLinkFn
267
+ */
268
+
269
+ function compileTextNode (node, options) {
270
+ var tokens = textParser.parse(node.data)
271
+ if (!tokens) {
272
+ return null
273
+ }
274
+ var frag = document.createDocumentFragment()
275
+ var el, token
276
+ for (var i = 0, l = tokens.length; i < l; i++) {
277
+ token = tokens[i]
278
+ el = token.tag
279
+ ? processTextToken(token, options)
280
+ : document.createTextNode(token.value)
281
+ frag.appendChild(el)
282
+ }
283
+ return makeTextNodeLinkFn(tokens, frag, options)
284
+ }
285
+
286
+ /**
287
+ * Process a single text token.
288
+ *
289
+ * @param {Object} token
290
+ * @param {Object} options
291
+ * @return {Node}
292
+ */
293
+
294
+ function processTextToken (token, options) {
295
+ var el
296
+ if (token.oneTime) {
297
+ el = document.createTextNode(token.value)
298
+ } else {
299
+ if (token.html) {
300
+ el = document.createComment('v-html')
301
+ setTokenType('html')
302
+ } else {
303
+ // IE will clean up empty textNodes during
304
+ // frag.cloneNode(true), so we have to give it
305
+ // something here...
306
+ el = document.createTextNode(' ')
307
+ setTokenType('text')
308
+ }
309
+ }
310
+ function setTokenType (type) {
311
+ token.type = type
312
+ token.def = resolveAsset(options, 'directives', type)
313
+ token.descriptor = dirParser.parse(token.value)[0]
314
+ }
315
+ return el
316
+ }
317
+
318
+ /**
319
+ * Build a function that processes a textNode.
320
+ *
321
+ * @param {Array<Object>} tokens
322
+ * @param {DocumentFragment} frag
323
+ */
324
+
325
+ function makeTextNodeLinkFn (tokens, frag) {
326
+ return function textNodeLinkFn (vm, el) {
327
+ var fragClone = frag.cloneNode(true)
328
+ var childNodes = _.toArray(fragClone.childNodes)
329
+ var token, value, node
330
+ for (var i = 0, l = tokens.length; i < l; i++) {
331
+ token = tokens[i]
332
+ value = token.value
333
+ if (token.tag) {
334
+ node = childNodes[i]
335
+ if (token.oneTime) {
336
+ value = vm.$eval(value)
337
+ if (token.html) {
338
+ _.replace(node, templateParser.parse(value, true))
339
+ } else {
340
+ node.data = value
341
+ }
342
+ } else {
343
+ vm._bindDir(token.type, node,
344
+ token.descriptor, token.def)
345
+ }
346
+ }
347
+ }
348
+ _.replace(el, fragClone)
349
+ }
350
+ }
351
+
352
+ /**
353
+ * Compile a node list and return a childLinkFn.
354
+ *
355
+ * @param {NodeList} nodeList
356
+ * @param {Object} options
357
+ * @return {Function|undefined}
358
+ */
359
+
360
+ function compileNodeList (nodeList, options) {
361
+ var linkFns = []
362
+ var nodeLinkFn, childLinkFn, node
363
+ for (var i = 0, l = nodeList.length; i < l; i++) {
364
+ node = nodeList[i]
365
+ nodeLinkFn = compileNode(node, options)
366
+ childLinkFn =
367
+ !(nodeLinkFn && nodeLinkFn.terminal) &&
368
+ node.tagName !== 'SCRIPT' &&
369
+ node.hasChildNodes()
370
+ ? compileNodeList(node.childNodes, options)
371
+ : null
372
+ linkFns.push(nodeLinkFn, childLinkFn)
373
+ }
374
+ return linkFns.length
375
+ ? makeChildLinkFn(linkFns)
376
+ : null
377
+ }
378
+
379
+ /**
380
+ * Make a child link function for a node's childNodes.
381
+ *
382
+ * @param {Array<Function>} linkFns
383
+ * @return {Function} childLinkFn
384
+ */
385
+
386
+ function makeChildLinkFn (linkFns) {
387
+ return function childLinkFn (vm, nodes, host) {
388
+ var node, nodeLinkFn, childrenLinkFn
389
+ for (var i = 0, n = 0, l = linkFns.length; i < l; n++) {
390
+ node = nodes[n]
391
+ nodeLinkFn = linkFns[i++]
392
+ childrenLinkFn = linkFns[i++]
393
+ // cache childNodes before linking parent, fix #657
394
+ var childNodes = _.toArray(node.childNodes)
395
+ if (nodeLinkFn) {
396
+ nodeLinkFn(vm, node, host)
397
+ }
398
+ if (childrenLinkFn) {
399
+ childrenLinkFn(vm, childNodes, host)
400
+ }
401
+ }
402
+ }
403
+ }
404
+
405
+ /**
406
+ * Check for element directives (custom elements that should
407
+ * be resovled as terminal directives).
408
+ *
409
+ * @param {Element} el
410
+ * @param {Object} options
411
+ */
412
+
413
+ function checkElementDirectives (el, options) {
414
+ var tag = el.tagName.toLowerCase()
415
+ if (_.commonTagRE.test(tag)) return
416
+ var def = resolveAsset(options, 'elementDirectives', tag)
417
+ if (def) {
418
+ return makeTerminalNodeLinkFn(el, tag, '', options, def)
419
+ }
420
+ }
421
+
422
+ /**
423
+ * Check if an element is a component. If yes, return
424
+ * a component link function.
425
+ *
426
+ * @param {Element} el
427
+ * @param {Object} options
428
+ * @param {Boolean} hasAttrs
429
+ * @return {Function|undefined}
430
+ */
431
+
432
+ function checkComponent (el, options, hasAttrs) {
433
+ var componentId = _.checkComponent(el, options, hasAttrs)
434
+ if (componentId) {
435
+ var componentLinkFn = function (vm, el, host) {
436
+ vm._bindDir('component', el, {
437
+ expression: componentId
438
+ }, componentDef, host)
439
+ }
440
+ componentLinkFn.terminal = true
441
+ return componentLinkFn
442
+ }
443
+ }
444
+
445
+ /**
446
+ * Check an element for terminal directives in fixed order.
447
+ * If it finds one, return a terminal link function.
448
+ *
449
+ * @param {Element} el
450
+ * @param {Object} options
451
+ * @return {Function} terminalLinkFn
452
+ */
453
+
454
+ function checkTerminalDirectives (el, options) {
455
+ if (_.attr(el, 'pre') !== null) {
456
+ return skip
457
+ }
458
+ var value, dirName
459
+ for (var i = 0, l = terminalDirectives.length; i < l; i++) {
460
+ dirName = terminalDirectives[i]
461
+ if ((value = _.attr(el, dirName)) !== null) {
462
+ return makeTerminalNodeLinkFn(el, dirName, value, options)
463
+ }
464
+ }
465
+ }
466
+
467
+ function skip () {}
468
+ skip.terminal = true
469
+
470
+ /**
471
+ * Build a node link function for a terminal directive.
472
+ * A terminal link function terminates the current
473
+ * compilation recursion and handles compilation of the
474
+ * subtree in the directive.
475
+ *
476
+ * @param {Element} el
477
+ * @param {String} dirName
478
+ * @param {String} value
479
+ * @param {Object} options
480
+ * @param {Object} [def]
481
+ * @return {Function} terminalLinkFn
482
+ */
483
+
484
+ function makeTerminalNodeLinkFn (el, dirName, value, options, def) {
485
+ var descriptor = dirParser.parse(value)[0]
486
+ // no need to call resolveAsset since terminal directives
487
+ // are always internal
488
+ def = def || options.directives[dirName]
489
+ var fn = function terminalNodeLinkFn (vm, el, host) {
490
+ vm._bindDir(dirName, el, descriptor, def, host)
491
+ }
492
+ fn.terminal = true
493
+ return fn
494
+ }
495
+
496
+ /**
497
+ * Compile the directives on an element and return a linker.
498
+ *
499
+ * @param {Array|NamedNodeMap} attrs
500
+ * @param {Object} options
501
+ * @return {Function}
502
+ */
503
+
504
+ function compileDirectives (attrs, options) {
505
+ var i = attrs.length
506
+ var dirs = []
507
+ var attr, name, value, dir, dirName, dirDef
508
+ while (i--) {
509
+ attr = attrs[i]
510
+ name = attr.name
511
+ value = attr.value
512
+ if (name.indexOf(config.prefix) === 0) {
513
+ dirName = name.slice(config.prefix.length)
514
+ dirDef = resolveAsset(options, 'directives', dirName)
515
+ if (process.env.NODE_ENV !== 'production') {
516
+ _.assertAsset(dirDef, 'directive', dirName)
517
+ }
518
+ if (dirDef) {
519
+ dirs.push({
520
+ name: dirName,
521
+ descriptors: dirParser.parse(value),
522
+ def: dirDef
523
+ })
524
+ }
525
+ } else if (config.interpolate) {
526
+ dir = collectAttrDirective(name, value, options)
527
+ if (dir) {
528
+ dirs.push(dir)
529
+ }
530
+ }
531
+ }
532
+ // sort by priority, LOW to HIGH
533
+ if (dirs.length) {
534
+ dirs.sort(directiveComparator)
535
+ return makeNodeLinkFn(dirs)
536
+ }
537
+ }
538
+
539
+ /**
540
+ * Build a link function for all directives on a single node.
541
+ *
542
+ * @param {Array} directives
543
+ * @return {Function} directivesLinkFn
544
+ */
545
+
546
+ function makeNodeLinkFn (directives) {
547
+ return function nodeLinkFn (vm, el, host) {
548
+ // reverse apply because it's sorted low to high
549
+ var i = directives.length
550
+ var dir, j, k
551
+ while (i--) {
552
+ dir = directives[i]
553
+ if (dir._link) {
554
+ // custom link fn
555
+ dir._link(vm, el)
556
+ } else {
557
+ k = dir.descriptors.length
558
+ for (j = 0; j < k; j++) {
559
+ vm._bindDir(dir.name, el,
560
+ dir.descriptors[j], dir.def, host)
561
+ }
562
+ }
563
+ }
564
+ }
565
+ }
566
+
567
+ /**
568
+ * Check an attribute for potential dynamic bindings,
569
+ * and return a directive object.
570
+ *
571
+ * Special case: class interpolations are translated into
572
+ * v-class instead v-attr, so that it can work with user
573
+ * provided v-class bindings.
574
+ *
575
+ * @param {String} name
576
+ * @param {String} value
577
+ * @param {Object} options
578
+ * @return {Object}
579
+ */
580
+
581
+ function collectAttrDirective (name, value, options) {
582
+ var tokens = textParser.parse(value)
583
+ var isClass = name === 'class'
584
+ if (tokens) {
585
+ var dirName = isClass ? 'class' : 'attr'
586
+ var def = options.directives[dirName]
587
+ var i = tokens.length
588
+ var allOneTime = true
589
+ while (i--) {
590
+ var token = tokens[i]
591
+ if (token.tag && !token.oneTime) {
592
+ allOneTime = false
593
+ }
594
+ }
595
+ var linker
596
+ if (allOneTime) {
597
+ linker = function (vm, el) {
598
+ el.setAttribute(name, vm.$interpolate(value))
599
+ }
600
+ } else {
601
+ linker = function (vm, el) {
602
+ var exp = textParser.tokensToExp(tokens, vm)
603
+ var desc = isClass
604
+ ? dirParser.parse(exp)[0]
605
+ : dirParser.parse(name + ':' + exp)[0]
606
+ if (isClass) {
607
+ desc._rawClass = value
608
+ }
609
+ vm._bindDir(dirName, el, desc, def)
610
+ }
611
+ }
612
+ return {
613
+ def: def,
614
+ _link: linker
615
+ }
616
+ }
617
+ }
618
+
619
+ /**
620
+ * Directive priority sort comparator
621
+ *
622
+ * @param {Object} a
623
+ * @param {Object} b
624
+ */
625
+
626
+ function directiveComparator (a, b) {
627
+ a = a.def.priority || 0
628
+ b = b.def.priority || 0
629
+ return a > b ? 1 : -1
630
+ }