plate-lang 0.1.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 (536) hide show
  1. checksums.yaml +7 -0
  2. data/.bowerrc +3 -0
  3. data/.codeclimate.yml +7 -0
  4. data/.gitignore +25 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +4 -0
  7. data/CODE_OF_CONDUCT.md +13 -0
  8. data/Gemfile +10 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +64 -0
  11. data/Rakefile +36 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +7 -0
  14. data/bower.json +10 -0
  15. data/circle.yml +4 -0
  16. data/exe/plate +6 -0
  17. data/lib/plate/cli.rb +97 -0
  18. data/lib/plate/compiler.rb +244 -0
  19. data/lib/plate/grammar.y +145 -0
  20. data/lib/plate/lexer.rb +138 -0
  21. data/lib/plate/nodes.rb +107 -0
  22. data/lib/plate/parser.rb +568 -0
  23. data/lib/plate/version.rb +3 -0
  24. data/lib/plate.rb +14 -0
  25. data/plate-lang.gemspec +30 -0
  26. data/skeleton/app/assets/css/app.css +21 -0
  27. data/skeleton/app/assets/js/app.js +15 -0
  28. data/skeleton/app/index.html +26 -0
  29. data/skeleton/app/vendor/.keep +0 -0
  30. data/skeleton/vendor/bootstrap/.bower.json +44 -0
  31. data/skeleton/vendor/bootstrap/Gruntfile.js +531 -0
  32. data/skeleton/vendor/bootstrap/LICENSE +21 -0
  33. data/skeleton/vendor/bootstrap/README.md +137 -0
  34. data/skeleton/vendor/bootstrap/bower.json +34 -0
  35. data/skeleton/vendor/bootstrap/dist/css/bootstrap-theme.css +587 -0
  36. data/skeleton/vendor/bootstrap/dist/css/bootstrap-theme.css.map +1 -0
  37. data/skeleton/vendor/bootstrap/dist/css/bootstrap-theme.min.css +5 -0
  38. data/skeleton/vendor/bootstrap/dist/css/bootstrap.css +6800 -0
  39. data/skeleton/vendor/bootstrap/dist/css/bootstrap.css.map +1 -0
  40. data/skeleton/vendor/bootstrap/dist/css/bootstrap.min.css +5 -0
  41. data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  42. data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +288 -0
  43. data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  44. data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  45. data/skeleton/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  46. data/skeleton/vendor/bootstrap/dist/js/bootstrap.js +2363 -0
  47. data/skeleton/vendor/bootstrap/dist/js/bootstrap.min.js +7 -0
  48. data/skeleton/vendor/bootstrap/dist/js/npm.js +13 -0
  49. data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  50. data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
  51. data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  52. data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  53. data/skeleton/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  54. data/skeleton/vendor/bootstrap/grunt/.jshintrc +7 -0
  55. data/skeleton/vendor/bootstrap/grunt/bs-commonjs-generator.js +30 -0
  56. data/skeleton/vendor/bootstrap/grunt/bs-glyphicons-data-generator.js +42 -0
  57. data/skeleton/vendor/bootstrap/grunt/bs-lessdoc-parser.js +237 -0
  58. data/skeleton/vendor/bootstrap/grunt/bs-raw-files-generator.js +44 -0
  59. data/skeleton/vendor/bootstrap/grunt/configBridge.json +46 -0
  60. data/skeleton/vendor/bootstrap/grunt/sauce_browsers.yml +82 -0
  61. data/skeleton/vendor/bootstrap/js/.jscsrc +42 -0
  62. data/skeleton/vendor/bootstrap/js/.jshintrc +15 -0
  63. data/skeleton/vendor/bootstrap/js/affix.js +162 -0
  64. data/skeleton/vendor/bootstrap/js/alert.js +94 -0
  65. data/skeleton/vendor/bootstrap/js/button.js +120 -0
  66. data/skeleton/vendor/bootstrap/js/carousel.js +237 -0
  67. data/skeleton/vendor/bootstrap/js/collapse.js +211 -0
  68. data/skeleton/vendor/bootstrap/js/dropdown.js +165 -0
  69. data/skeleton/vendor/bootstrap/js/modal.js +337 -0
  70. data/skeleton/vendor/bootstrap/js/popover.js +108 -0
  71. data/skeleton/vendor/bootstrap/js/scrollspy.js +172 -0
  72. data/skeleton/vendor/bootstrap/js/tab.js +155 -0
  73. data/skeleton/vendor/bootstrap/js/tooltip.js +514 -0
  74. data/skeleton/vendor/bootstrap/js/transition.js +59 -0
  75. data/skeleton/vendor/bootstrap/less/.csscomb.json +304 -0
  76. data/skeleton/vendor/bootstrap/less/.csslintrc +19 -0
  77. data/skeleton/vendor/bootstrap/less/alerts.less +73 -0
  78. data/skeleton/vendor/bootstrap/less/badges.less +66 -0
  79. data/skeleton/vendor/bootstrap/less/bootstrap.less +56 -0
  80. data/skeleton/vendor/bootstrap/less/breadcrumbs.less +26 -0
  81. data/skeleton/vendor/bootstrap/less/button-groups.less +244 -0
  82. data/skeleton/vendor/bootstrap/less/buttons.less +166 -0
  83. data/skeleton/vendor/bootstrap/less/carousel.less +269 -0
  84. data/skeleton/vendor/bootstrap/less/close.less +34 -0
  85. data/skeleton/vendor/bootstrap/less/code.less +69 -0
  86. data/skeleton/vendor/bootstrap/less/component-animations.less +33 -0
  87. data/skeleton/vendor/bootstrap/less/dropdowns.less +216 -0
  88. data/skeleton/vendor/bootstrap/less/forms.less +607 -0
  89. data/skeleton/vendor/bootstrap/less/glyphicons.less +305 -0
  90. data/skeleton/vendor/bootstrap/less/grid.less +84 -0
  91. data/skeleton/vendor/bootstrap/less/input-groups.less +167 -0
  92. data/skeleton/vendor/bootstrap/less/jumbotron.less +52 -0
  93. data/skeleton/vendor/bootstrap/less/labels.less +64 -0
  94. data/skeleton/vendor/bootstrap/less/list-group.less +130 -0
  95. data/skeleton/vendor/bootstrap/less/media.less +66 -0
  96. data/skeleton/vendor/bootstrap/less/mixins/alerts.less +14 -0
  97. data/skeleton/vendor/bootstrap/less/mixins/background-variant.less +9 -0
  98. data/skeleton/vendor/bootstrap/less/mixins/border-radius.less +18 -0
  99. data/skeleton/vendor/bootstrap/less/mixins/buttons.less +68 -0
  100. data/skeleton/vendor/bootstrap/less/mixins/center-block.less +7 -0
  101. data/skeleton/vendor/bootstrap/less/mixins/clearfix.less +22 -0
  102. data/skeleton/vendor/bootstrap/less/mixins/forms.less +85 -0
  103. data/skeleton/vendor/bootstrap/less/mixins/gradients.less +59 -0
  104. data/skeleton/vendor/bootstrap/less/mixins/grid-framework.less +91 -0
  105. data/skeleton/vendor/bootstrap/less/mixins/grid.less +122 -0
  106. data/skeleton/vendor/bootstrap/less/mixins/hide-text.less +21 -0
  107. data/skeleton/vendor/bootstrap/less/mixins/image.less +33 -0
  108. data/skeleton/vendor/bootstrap/less/mixins/labels.less +12 -0
  109. data/skeleton/vendor/bootstrap/less/mixins/list-group.less +30 -0
  110. data/skeleton/vendor/bootstrap/less/mixins/nav-divider.less +10 -0
  111. data/skeleton/vendor/bootstrap/less/mixins/nav-vertical-align.less +9 -0
  112. data/skeleton/vendor/bootstrap/less/mixins/opacity.less +8 -0
  113. data/skeleton/vendor/bootstrap/less/mixins/pagination.less +24 -0
  114. data/skeleton/vendor/bootstrap/less/mixins/panels.less +24 -0
  115. data/skeleton/vendor/bootstrap/less/mixins/progress-bar.less +10 -0
  116. data/skeleton/vendor/bootstrap/less/mixins/reset-filter.less +8 -0
  117. data/skeleton/vendor/bootstrap/less/mixins/reset-text.less +18 -0
  118. data/skeleton/vendor/bootstrap/less/mixins/resize.less +6 -0
  119. data/skeleton/vendor/bootstrap/less/mixins/responsive-visibility.less +15 -0
  120. data/skeleton/vendor/bootstrap/less/mixins/size.less +10 -0
  121. data/skeleton/vendor/bootstrap/less/mixins/tab-focus.less +9 -0
  122. data/skeleton/vendor/bootstrap/less/mixins/table-row.less +28 -0
  123. data/skeleton/vendor/bootstrap/less/mixins/text-emphasis.less +9 -0
  124. data/skeleton/vendor/bootstrap/less/mixins/text-overflow.less +8 -0
  125. data/skeleton/vendor/bootstrap/less/mixins/vendor-prefixes.less +227 -0
  126. data/skeleton/vendor/bootstrap/less/mixins.less +40 -0
  127. data/skeleton/vendor/bootstrap/less/modals.less +150 -0
  128. data/skeleton/vendor/bootstrap/less/navbar.less +660 -0
  129. data/skeleton/vendor/bootstrap/less/navs.less +242 -0
  130. data/skeleton/vendor/bootstrap/less/normalize.less +424 -0
  131. data/skeleton/vendor/bootstrap/less/pager.less +54 -0
  132. data/skeleton/vendor/bootstrap/less/pagination.less +89 -0
  133. data/skeleton/vendor/bootstrap/less/panels.less +271 -0
  134. data/skeleton/vendor/bootstrap/less/popovers.less +131 -0
  135. data/skeleton/vendor/bootstrap/less/print.less +101 -0
  136. data/skeleton/vendor/bootstrap/less/progress-bars.less +87 -0
  137. data/skeleton/vendor/bootstrap/less/responsive-embed.less +35 -0
  138. data/skeleton/vendor/bootstrap/less/responsive-utilities.less +194 -0
  139. data/skeleton/vendor/bootstrap/less/scaffolding.less +161 -0
  140. data/skeleton/vendor/bootstrap/less/tables.less +234 -0
  141. data/skeleton/vendor/bootstrap/less/theme.less +291 -0
  142. data/skeleton/vendor/bootstrap/less/thumbnails.less +36 -0
  143. data/skeleton/vendor/bootstrap/less/tooltip.less +101 -0
  144. data/skeleton/vendor/bootstrap/less/type.less +302 -0
  145. data/skeleton/vendor/bootstrap/less/utilities.less +55 -0
  146. data/skeleton/vendor/bootstrap/less/variables.less +867 -0
  147. data/skeleton/vendor/bootstrap/less/wells.less +29 -0
  148. data/skeleton/vendor/bootstrap/package.js +25 -0
  149. data/skeleton/vendor/bootstrap/package.json +87 -0
  150. data/skeleton/vendor/bootswatch/.bower.json +52 -0
  151. data/skeleton/vendor/bootswatch/.bowerrc +5 -0
  152. data/skeleton/vendor/bootswatch/LICENSE +21 -0
  153. data/skeleton/vendor/bootswatch/README.md +59 -0
  154. data/skeleton/vendor/bootswatch/bower.json +42 -0
  155. data/skeleton/vendor/bootswatch/cerulean/_bootswatch.scss +131 -0
  156. data/skeleton/vendor/bootswatch/cerulean/_variables.scss +868 -0
  157. data/skeleton/vendor/bootswatch/cerulean/bootstrap.css +6944 -0
  158. data/skeleton/vendor/bootswatch/cerulean/bootstrap.min.css +11 -0
  159. data/skeleton/vendor/bootswatch/cerulean/bootswatch.less +131 -0
  160. data/skeleton/vendor/bootswatch/cerulean/thumbnail.png +0 -0
  161. data/skeleton/vendor/bootswatch/cerulean/variables.less +867 -0
  162. data/skeleton/vendor/bootswatch/cosmo/_bootswatch.scss +261 -0
  163. data/skeleton/vendor/bootswatch/cosmo/_variables.scss +868 -0
  164. data/skeleton/vendor/bootswatch/cosmo/bootstrap.css +6979 -0
  165. data/skeleton/vendor/bootswatch/cosmo/bootstrap.min.css +11 -0
  166. data/skeleton/vendor/bootswatch/cosmo/bootswatch.less +261 -0
  167. data/skeleton/vendor/bootswatch/cosmo/thumbnail.png +0 -0
  168. data/skeleton/vendor/bootswatch/cosmo/variables.less +867 -0
  169. data/skeleton/vendor/bootswatch/cyborg/_bootswatch.scss +234 -0
  170. data/skeleton/vendor/bootswatch/cyborg/_variables.scss +868 -0
  171. data/skeleton/vendor/bootswatch/cyborg/bootstrap.css +6963 -0
  172. data/skeleton/vendor/bootswatch/cyborg/bootstrap.min.css +11 -0
  173. data/skeleton/vendor/bootswatch/cyborg/bootswatch.less +234 -0
  174. data/skeleton/vendor/bootswatch/cyborg/thumbnail.png +0 -0
  175. data/skeleton/vendor/bootswatch/cyborg/variables.less +867 -0
  176. data/skeleton/vendor/bootswatch/darkly/_bootswatch.scss +346 -0
  177. data/skeleton/vendor/bootswatch/darkly/_variables.scss +868 -0
  178. data/skeleton/vendor/bootswatch/darkly/bootstrap.css +7086 -0
  179. data/skeleton/vendor/bootswatch/darkly/bootstrap.min.css +11 -0
  180. data/skeleton/vendor/bootswatch/darkly/bootswatch.less +346 -0
  181. data/skeleton/vendor/bootswatch/darkly/thumbnail.png +0 -0
  182. data/skeleton/vendor/bootswatch/darkly/variables.less +867 -0
  183. data/skeleton/vendor/bootswatch/flatly/_bootswatch.scss +329 -0
  184. data/skeleton/vendor/bootswatch/flatly/_variables.scss +868 -0
  185. data/skeleton/vendor/bootswatch/flatly/bootstrap.css +7065 -0
  186. data/skeleton/vendor/bootswatch/flatly/bootstrap.min.css +11 -0
  187. data/skeleton/vendor/bootswatch/flatly/bootswatch.less +329 -0
  188. data/skeleton/vendor/bootswatch/flatly/thumbnail.png +0 -0
  189. data/skeleton/vendor/bootswatch/flatly/variables.less +867 -0
  190. data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.eot +0 -0
  191. data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.svg +288 -0
  192. data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.ttf +0 -0
  193. data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.woff +0 -0
  194. data/skeleton/vendor/bootswatch/fonts/glyphicons-halflings-regular.woff2 +0 -0
  195. data/skeleton/vendor/bootswatch/journal/_bootswatch.scss +144 -0
  196. data/skeleton/vendor/bootswatch/journal/_variables.scss +868 -0
  197. data/skeleton/vendor/bootswatch/journal/bootstrap.css +6891 -0
  198. data/skeleton/vendor/bootswatch/journal/bootstrap.min.css +11 -0
  199. data/skeleton/vendor/bootswatch/journal/bootswatch.less +144 -0
  200. data/skeleton/vendor/bootswatch/journal/thumbnail.png +0 -0
  201. data/skeleton/vendor/bootswatch/journal/variables.less +867 -0
  202. data/skeleton/vendor/bootswatch/lumen/_bootswatch.scss +520 -0
  203. data/skeleton/vendor/bootswatch/lumen/_variables.scss +868 -0
  204. data/skeleton/vendor/bootswatch/lumen/bootstrap.css +7216 -0
  205. data/skeleton/vendor/bootswatch/lumen/bootstrap.min.css +11 -0
  206. data/skeleton/vendor/bootswatch/lumen/bootswatch.less +520 -0
  207. data/skeleton/vendor/bootswatch/lumen/thumbnail.png +0 -0
  208. data/skeleton/vendor/bootswatch/lumen/variables.less +867 -0
  209. data/skeleton/vendor/bootswatch/paper/_bootswatch.scss +585 -0
  210. data/skeleton/vendor/bootswatch/paper/_variables.scss +868 -0
  211. data/skeleton/vendor/bootswatch/paper/bootstrap.css +7502 -0
  212. data/skeleton/vendor/bootswatch/paper/bootstrap.min.css +11 -0
  213. data/skeleton/vendor/bootswatch/paper/bootswatch.less +585 -0
  214. data/skeleton/vendor/bootswatch/paper/thumbnail.png +0 -0
  215. data/skeleton/vendor/bootswatch/paper/variables.less +867 -0
  216. data/skeleton/vendor/bootswatch/readable/_bootswatch.scss +182 -0
  217. data/skeleton/vendor/bootswatch/readable/_variables.scss +868 -0
  218. data/skeleton/vendor/bootswatch/readable/bootstrap.css +6915 -0
  219. data/skeleton/vendor/bootswatch/readable/bootstrap.min.css +11 -0
  220. data/skeleton/vendor/bootswatch/readable/bootswatch.less +182 -0
  221. data/skeleton/vendor/bootswatch/readable/thumbnail.png +0 -0
  222. data/skeleton/vendor/bootswatch/readable/variables.less +867 -0
  223. data/skeleton/vendor/bootswatch/sandstone/_bootswatch.scss +194 -0
  224. data/skeleton/vendor/bootswatch/sandstone/_variables.scss +868 -0
  225. data/skeleton/vendor/bootswatch/sandstone/bootstrap.css +6953 -0
  226. data/skeleton/vendor/bootswatch/sandstone/bootstrap.min.css +11 -0
  227. data/skeleton/vendor/bootswatch/sandstone/bootswatch.less +194 -0
  228. data/skeleton/vendor/bootswatch/sandstone/thumbnail.png +0 -0
  229. data/skeleton/vendor/bootswatch/sandstone/variables.less +867 -0
  230. data/skeleton/vendor/bootswatch/simplex/_bootswatch.scss +169 -0
  231. data/skeleton/vendor/bootswatch/simplex/_variables.scss +868 -0
  232. data/skeleton/vendor/bootswatch/simplex/bootstrap.css +6953 -0
  233. data/skeleton/vendor/bootswatch/simplex/bootstrap.min.css +11 -0
  234. data/skeleton/vendor/bootswatch/simplex/bootswatch.less +169 -0
  235. data/skeleton/vendor/bootswatch/simplex/thumbnail.png +0 -0
  236. data/skeleton/vendor/bootswatch/simplex/variables.less +867 -0
  237. data/skeleton/vendor/bootswatch/slate/_bootswatch.scss +441 -0
  238. data/skeleton/vendor/bootswatch/slate/_variables.scss +868 -0
  239. data/skeleton/vendor/bootswatch/slate/bootstrap.css +7301 -0
  240. data/skeleton/vendor/bootswatch/slate/bootstrap.min.css +11 -0
  241. data/skeleton/vendor/bootswatch/slate/bootswatch.less +441 -0
  242. data/skeleton/vendor/bootswatch/slate/thumbnail.png +0 -0
  243. data/skeleton/vendor/bootswatch/slate/variables.less +867 -0
  244. data/skeleton/vendor/bootswatch/spacelab/_bootswatch.scss +137 -0
  245. data/skeleton/vendor/bootswatch/spacelab/_variables.scss +868 -0
  246. data/skeleton/vendor/bootswatch/spacelab/bootstrap.css +6998 -0
  247. data/skeleton/vendor/bootswatch/spacelab/bootstrap.min.css +11 -0
  248. data/skeleton/vendor/bootswatch/spacelab/bootswatch.less +137 -0
  249. data/skeleton/vendor/bootswatch/spacelab/thumbnail.png +0 -0
  250. data/skeleton/vendor/bootswatch/spacelab/variables.less +867 -0
  251. data/skeleton/vendor/bootswatch/superhero/_bootswatch.scss +356 -0
  252. data/skeleton/vendor/bootswatch/superhero/_variables.scss +868 -0
  253. data/skeleton/vendor/bootswatch/superhero/bootstrap.css +7048 -0
  254. data/skeleton/vendor/bootswatch/superhero/bootstrap.min.css +11 -0
  255. data/skeleton/vendor/bootswatch/superhero/bootswatch.less +356 -0
  256. data/skeleton/vendor/bootswatch/superhero/thumbnail.png +0 -0
  257. data/skeleton/vendor/bootswatch/superhero/variables.less +867 -0
  258. data/skeleton/vendor/bootswatch/united/_bootswatch.scss +55 -0
  259. data/skeleton/vendor/bootswatch/united/_variables.scss +868 -0
  260. data/skeleton/vendor/bootswatch/united/bootstrap.css +6813 -0
  261. data/skeleton/vendor/bootswatch/united/bootstrap.min.css +11 -0
  262. data/skeleton/vendor/bootswatch/united/bootswatch.less +55 -0
  263. data/skeleton/vendor/bootswatch/united/thumbnail.png +0 -0
  264. data/skeleton/vendor/bootswatch/united/variables.less +867 -0
  265. data/skeleton/vendor/bootswatch/yeti/_bootswatch.scss +437 -0
  266. data/skeleton/vendor/bootswatch/yeti/_variables.scss +868 -0
  267. data/skeleton/vendor/bootswatch/yeti/bootstrap.css +7107 -0
  268. data/skeleton/vendor/bootswatch/yeti/bootstrap.min.css +11 -0
  269. data/skeleton/vendor/bootswatch/yeti/bootswatch.less +437 -0
  270. data/skeleton/vendor/bootswatch/yeti/thumbnail.png +0 -0
  271. data/skeleton/vendor/bootswatch/yeti/variables.less +867 -0
  272. data/skeleton/vendor/font-awesome/.bower.json +36 -0
  273. data/skeleton/vendor/font-awesome/.gitignore +33 -0
  274. data/skeleton/vendor/font-awesome/.npmignore +42 -0
  275. data/skeleton/vendor/font-awesome/HELP-US-OUT.txt +7 -0
  276. data/skeleton/vendor/font-awesome/bower.json +22 -0
  277. data/skeleton/vendor/font-awesome/css/font-awesome.css +2026 -0
  278. data/skeleton/vendor/font-awesome/css/font-awesome.css.map +7 -0
  279. data/skeleton/vendor/font-awesome/css/font-awesome.min.css +4 -0
  280. data/skeleton/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
  281. data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  282. data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.svg +640 -0
  283. data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  284. data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  285. data/skeleton/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  286. data/skeleton/vendor/font-awesome/less/animated.less +34 -0
  287. data/skeleton/vendor/font-awesome/less/bordered-pulled.less +25 -0
  288. data/skeleton/vendor/font-awesome/less/core.less +12 -0
  289. data/skeleton/vendor/font-awesome/less/fixed-width.less +6 -0
  290. data/skeleton/vendor/font-awesome/less/font-awesome.less +17 -0
  291. data/skeleton/vendor/font-awesome/less/icons.less +677 -0
  292. data/skeleton/vendor/font-awesome/less/larger.less +13 -0
  293. data/skeleton/vendor/font-awesome/less/list.less +19 -0
  294. data/skeleton/vendor/font-awesome/less/mixins.less +26 -0
  295. data/skeleton/vendor/font-awesome/less/path.less +15 -0
  296. data/skeleton/vendor/font-awesome/less/rotated-flipped.less +20 -0
  297. data/skeleton/vendor/font-awesome/less/stacked.less +20 -0
  298. data/skeleton/vendor/font-awesome/less/variables.less +688 -0
  299. data/skeleton/vendor/font-awesome/scss/_animated.scss +34 -0
  300. data/skeleton/vendor/font-awesome/scss/_bordered-pulled.scss +25 -0
  301. data/skeleton/vendor/font-awesome/scss/_core.scss +12 -0
  302. data/skeleton/vendor/font-awesome/scss/_fixed-width.scss +6 -0
  303. data/skeleton/vendor/font-awesome/scss/_icons.scss +677 -0
  304. data/skeleton/vendor/font-awesome/scss/_larger.scss +13 -0
  305. data/skeleton/vendor/font-awesome/scss/_list.scss +19 -0
  306. data/skeleton/vendor/font-awesome/scss/_mixins.scss +26 -0
  307. data/skeleton/vendor/font-awesome/scss/_path.scss +15 -0
  308. data/skeleton/vendor/font-awesome/scss/_rotated-flipped.scss +20 -0
  309. data/skeleton/vendor/font-awesome/scss/_stacked.scss +20 -0
  310. data/skeleton/vendor/font-awesome/scss/_variables.scss +688 -0
  311. data/skeleton/vendor/font-awesome/scss/font-awesome.scss +17 -0
  312. data/skeleton/vendor/google-code-prettify/.bower.json +26 -0
  313. data/skeleton/vendor/google-code-prettify/CHANGES.html +172 -0
  314. data/skeleton/vendor/google-code-prettify/COPYING +191 -0
  315. data/skeleton/vendor/google-code-prettify/README-zh-Hans.html +143 -0
  316. data/skeleton/vendor/google-code-prettify/README.html +233 -0
  317. data/skeleton/vendor/google-code-prettify/README.md +54 -0
  318. data/skeleton/vendor/google-code-prettify/bin/prettify.min.css +1 -0
  319. data/skeleton/vendor/google-code-prettify/bin/prettify.min.js +30 -0
  320. data/skeleton/vendor/google-code-prettify/bin/run_prettify.min.js +34 -0
  321. data/skeleton/vendor/google-code-prettify/bower.json +16 -0
  322. data/skeleton/vendor/google-code-prettify/examples/quine.html +55 -0
  323. data/skeleton/vendor/google-code-prettify/src/lang-apollo.js +51 -0
  324. data/skeleton/vendor/google-code-prettify/src/lang-basic.js +32 -0
  325. data/skeleton/vendor/google-code-prettify/src/lang-clj.js +64 -0
  326. data/skeleton/vendor/google-code-prettify/src/lang-css.js +159 -0
  327. data/skeleton/vendor/google-code-prettify/src/lang-dart.js +88 -0
  328. data/skeleton/vendor/google-code-prettify/src/lang-erlang.js +92 -0
  329. data/skeleton/vendor/google-code-prettify/src/lang-go.js +58 -0
  330. data/skeleton/vendor/google-code-prettify/src/lang-hs.js +101 -0
  331. data/skeleton/vendor/google-code-prettify/src/lang-lisp.js +94 -0
  332. data/skeleton/vendor/google-code-prettify/src/lang-llvm.js +61 -0
  333. data/skeleton/vendor/google-code-prettify/src/lang-lua.js +59 -0
  334. data/skeleton/vendor/google-code-prettify/src/lang-matlab.js +180 -0
  335. data/skeleton/vendor/google-code-prettify/src/lang-ml.js +56 -0
  336. data/skeleton/vendor/google-code-prettify/src/lang-mumps.js +139 -0
  337. data/skeleton/vendor/google-code-prettify/src/lang-n.js +65 -0
  338. data/skeleton/vendor/google-code-prettify/src/lang-pascal.js +32 -0
  339. data/skeleton/vendor/google-code-prettify/src/lang-proto.js +35 -0
  340. data/skeleton/vendor/google-code-prettify/src/lang-r.js +57 -0
  341. data/skeleton/vendor/google-code-prettify/src/lang-rd.js +47 -0
  342. data/skeleton/vendor/google-code-prettify/src/lang-scala.js +54 -0
  343. data/skeleton/vendor/google-code-prettify/src/lang-sql.js +58 -0
  344. data/skeleton/vendor/google-code-prettify/src/lang-tcl.js +62 -0
  345. data/skeleton/vendor/google-code-prettify/src/lang-tex.js +46 -0
  346. data/skeleton/vendor/google-code-prettify/src/lang-vb.js +66 -0
  347. data/skeleton/vendor/google-code-prettify/src/lang-vhdl.js +34 -0
  348. data/skeleton/vendor/google-code-prettify/src/lang-wiki.js +53 -0
  349. data/skeleton/vendor/google-code-prettify/src/lang-xq.js +67 -0
  350. data/skeleton/vendor/google-code-prettify/src/lang-yaml.js +27 -0
  351. data/skeleton/vendor/google-code-prettify/src/prettify.css +52 -0
  352. data/skeleton/vendor/google-code-prettify/src/prettify.js +1655 -0
  353. data/skeleton/vendor/google-code-prettify/src/run_prettify.js +1905 -0
  354. data/skeleton/vendor/google-code-prettify/styles/demo.html +61 -0
  355. data/skeleton/vendor/google-code-prettify/styles/desert.css +34 -0
  356. data/skeleton/vendor/google-code-prettify/styles/doxy.css +64 -0
  357. data/skeleton/vendor/google-code-prettify/styles/index.html +89 -0
  358. data/skeleton/vendor/google-code-prettify/styles/sons-of-obsidian.css +118 -0
  359. data/skeleton/vendor/google-code-prettify/styles/sunburst.css +51 -0
  360. data/skeleton/vendor/jquery/.bower.json +38 -0
  361. data/skeleton/vendor/jquery/MIT-LICENSE.txt +21 -0
  362. data/skeleton/vendor/jquery/bower.json +28 -0
  363. data/skeleton/vendor/jquery/dist/jquery.js +9210 -0
  364. data/skeleton/vendor/jquery/dist/jquery.min.js +5 -0
  365. data/skeleton/vendor/jquery/dist/jquery.min.map +1 -0
  366. data/skeleton/vendor/jquery/src/ajax/jsonp.js +89 -0
  367. data/skeleton/vendor/jquery/src/ajax/load.js +75 -0
  368. data/skeleton/vendor/jquery/src/ajax/parseJSON.js +13 -0
  369. data/skeleton/vendor/jquery/src/ajax/parseXML.js +28 -0
  370. data/skeleton/vendor/jquery/src/ajax/script.js +64 -0
  371. data/skeleton/vendor/jquery/src/ajax/var/nonce.js +5 -0
  372. data/skeleton/vendor/jquery/src/ajax/var/rquery.js +3 -0
  373. data/skeleton/vendor/jquery/src/ajax/xhr.js +136 -0
  374. data/skeleton/vendor/jquery/src/ajax.js +786 -0
  375. data/skeleton/vendor/jquery/src/attributes/attr.js +141 -0
  376. data/skeleton/vendor/jquery/src/attributes/classes.js +158 -0
  377. data/skeleton/vendor/jquery/src/attributes/prop.js +94 -0
  378. data/skeleton/vendor/jquery/src/attributes/support.js +35 -0
  379. data/skeleton/vendor/jquery/src/attributes/val.js +161 -0
  380. data/skeleton/vendor/jquery/src/attributes.js +11 -0
  381. data/skeleton/vendor/jquery/src/callbacks.js +205 -0
  382. data/skeleton/vendor/jquery/src/core/access.js +60 -0
  383. data/skeleton/vendor/jquery/src/core/init.js +123 -0
  384. data/skeleton/vendor/jquery/src/core/parseHTML.js +39 -0
  385. data/skeleton/vendor/jquery/src/core/ready.js +97 -0
  386. data/skeleton/vendor/jquery/src/core/var/rsingleTag.js +4 -0
  387. data/skeleton/vendor/jquery/src/core.js +502 -0
  388. data/skeleton/vendor/jquery/src/css/addGetHookIf.js +22 -0
  389. data/skeleton/vendor/jquery/src/css/curCSS.js +57 -0
  390. data/skeleton/vendor/jquery/src/css/defaultDisplay.js +70 -0
  391. data/skeleton/vendor/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  392. data/skeleton/vendor/jquery/src/css/support.js +96 -0
  393. data/skeleton/vendor/jquery/src/css/swap.js +28 -0
  394. data/skeleton/vendor/jquery/src/css/var/cssExpand.js +3 -0
  395. data/skeleton/vendor/jquery/src/css/var/getStyles.js +12 -0
  396. data/skeleton/vendor/jquery/src/css/var/isHidden.js +13 -0
  397. data/skeleton/vendor/jquery/src/css/var/rmargin.js +3 -0
  398. data/skeleton/vendor/jquery/src/css/var/rnumnonpx.js +5 -0
  399. data/skeleton/vendor/jquery/src/css.js +450 -0
  400. data/skeleton/vendor/jquery/src/data/Data.js +181 -0
  401. data/skeleton/vendor/jquery/src/data/accepts.js +20 -0
  402. data/skeleton/vendor/jquery/src/data/var/data_priv.js +5 -0
  403. data/skeleton/vendor/jquery/src/data/var/data_user.js +5 -0
  404. data/skeleton/vendor/jquery/src/data.js +178 -0
  405. data/skeleton/vendor/jquery/src/deferred.js +149 -0
  406. data/skeleton/vendor/jquery/src/deprecated.js +13 -0
  407. data/skeleton/vendor/jquery/src/dimensions.js +50 -0
  408. data/skeleton/vendor/jquery/src/effects/Tween.js +114 -0
  409. data/skeleton/vendor/jquery/src/effects/animatedSelector.js +13 -0
  410. data/skeleton/vendor/jquery/src/effects.js +648 -0
  411. data/skeleton/vendor/jquery/src/event/ajax.js +13 -0
  412. data/skeleton/vendor/jquery/src/event/alias.js +39 -0
  413. data/skeleton/vendor/jquery/src/event/support.js +9 -0
  414. data/skeleton/vendor/jquery/src/event.js +868 -0
  415. data/skeleton/vendor/jquery/src/exports/amd.js +24 -0
  416. data/skeleton/vendor/jquery/src/exports/global.js +32 -0
  417. data/skeleton/vendor/jquery/src/intro.js +44 -0
  418. data/skeleton/vendor/jquery/src/jquery.js +37 -0
  419. data/skeleton/vendor/jquery/src/manipulation/_evalUrl.js +18 -0
  420. data/skeleton/vendor/jquery/src/manipulation/support.js +32 -0
  421. data/skeleton/vendor/jquery/src/manipulation/var/rcheckableType.js +3 -0
  422. data/skeleton/vendor/jquery/src/manipulation.js +580 -0
  423. data/skeleton/vendor/jquery/src/offset.js +207 -0
  424. data/skeleton/vendor/jquery/src/outro.js +1 -0
  425. data/skeleton/vendor/jquery/src/queue/delay.js +22 -0
  426. data/skeleton/vendor/jquery/src/queue.js +142 -0
  427. data/skeleton/vendor/jquery/src/selector-native.js +172 -0
  428. data/skeleton/vendor/jquery/src/selector-sizzle.js +14 -0
  429. data/skeleton/vendor/jquery/src/selector.js +1 -0
  430. data/skeleton/vendor/jquery/src/serialize.js +111 -0
  431. data/skeleton/vendor/jquery/src/sizzle/dist/sizzle.js +2067 -0
  432. data/skeleton/vendor/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  433. data/skeleton/vendor/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  434. data/skeleton/vendor/jquery/src/traversing/findFilter.js +100 -0
  435. data/skeleton/vendor/jquery/src/traversing/var/rneedsContext.js +6 -0
  436. data/skeleton/vendor/jquery/src/traversing.js +199 -0
  437. data/skeleton/vendor/jquery/src/var/arr.js +3 -0
  438. data/skeleton/vendor/jquery/src/var/class2type.js +4 -0
  439. data/skeleton/vendor/jquery/src/var/concat.js +5 -0
  440. data/skeleton/vendor/jquery/src/var/hasOwn.js +5 -0
  441. data/skeleton/vendor/jquery/src/var/indexOf.js +5 -0
  442. data/skeleton/vendor/jquery/src/var/pnum.js +3 -0
  443. data/skeleton/vendor/jquery/src/var/push.js +5 -0
  444. data/skeleton/vendor/jquery/src/var/rnotwhite.js +3 -0
  445. data/skeleton/vendor/jquery/src/var/slice.js +5 -0
  446. data/skeleton/vendor/jquery/src/var/strundefined.js +3 -0
  447. data/skeleton/vendor/jquery/src/var/support.js +4 -0
  448. data/skeleton/vendor/jquery/src/var/toString.js +5 -0
  449. data/skeleton/vendor/jquery/src/wrap.js +79 -0
  450. data/skeleton/vendor/vue/.bower.json +29 -0
  451. data/skeleton/vendor/vue/LICENSE +21 -0
  452. data/skeleton/vendor/vue/bower.json +16 -0
  453. data/skeleton/vendor/vue/build/banner.js +8 -0
  454. data/skeleton/vendor/vue/build/grunt-tasks/build.js +50 -0
  455. data/skeleton/vendor/vue/build/grunt-tasks/casper.js +26 -0
  456. data/skeleton/vendor/vue/build/grunt-tasks/codecov.js +18 -0
  457. data/skeleton/vendor/vue/build/grunt-tasks/open.js +11 -0
  458. data/skeleton/vendor/vue/build/grunt-tasks/release.js +84 -0
  459. data/skeleton/vendor/vue/build/saucelabs.config.js +79 -0
  460. data/skeleton/vendor/vue/build/webpack.build.dev.config.js +20 -0
  461. data/skeleton/vendor/vue/build/webpack.build.prod.config.js +25 -0
  462. data/skeleton/vendor/vue/build/webpack.dev.config.js +10 -0
  463. data/skeleton/vendor/vue/build/webpack.test.config.js +13 -0
  464. data/skeleton/vendor/vue/circle.yml +4 -0
  465. data/skeleton/vendor/vue/dist/vue.js +9863 -0
  466. data/skeleton/vendor/vue/dist/vue.min.js +8 -0
  467. data/skeleton/vendor/vue/perf/bench.html +2 -0
  468. data/skeleton/vendor/vue/perf/bench.js +87 -0
  469. data/skeleton/vendor/vue/src/api/child.js +49 -0
  470. data/skeleton/vendor/vue/src/api/data.js +154 -0
  471. data/skeleton/vendor/vue/src/api/dom.js +226 -0
  472. data/skeleton/vendor/vue/src/api/events.js +174 -0
  473. data/skeleton/vendor/vue/src/api/global.js +119 -0
  474. data/skeleton/vendor/vue/src/api/lifecycle.js +68 -0
  475. data/skeleton/vendor/vue/src/batcher.js +98 -0
  476. data/skeleton/vendor/vue/src/cache.js +112 -0
  477. data/skeleton/vendor/vue/src/compiler/compile-props.js +183 -0
  478. data/skeleton/vendor/vue/src/compiler/compile.js +631 -0
  479. data/skeleton/vendor/vue/src/compiler/index.js +4 -0
  480. data/skeleton/vendor/vue/src/compiler/transclude.js +144 -0
  481. data/skeleton/vendor/vue/src/config.js +124 -0
  482. data/skeleton/vendor/vue/src/directive.js +224 -0
  483. data/skeleton/vendor/vue/src/directives/attr.js +51 -0
  484. data/skeleton/vendor/vue/src/directives/class.js +70 -0
  485. data/skeleton/vendor/vue/src/directives/cloak.js +10 -0
  486. data/skeleton/vendor/vue/src/directives/component.js +300 -0
  487. data/skeleton/vendor/vue/src/directives/el.js +12 -0
  488. data/skeleton/vendor/vue/src/directives/html.js +40 -0
  489. data/skeleton/vendor/vue/src/directives/if.js +126 -0
  490. data/skeleton/vendor/vue/src/directives/index.js +24 -0
  491. data/skeleton/vendor/vue/src/directives/model/checkbox.js +24 -0
  492. data/skeleton/vendor/vue/src/directives/model/index.js +76 -0
  493. data/skeleton/vendor/vue/src/directives/model/radio.js +26 -0
  494. data/skeleton/vendor/vue/src/directives/model/select.js +199 -0
  495. data/skeleton/vendor/vue/src/directives/model/text.js +159 -0
  496. data/skeleton/vendor/vue/src/directives/on.js +60 -0
  497. data/skeleton/vendor/vue/src/directives/prop.js +62 -0
  498. data/skeleton/vendor/vue/src/directives/ref.js +22 -0
  499. data/skeleton/vendor/vue/src/directives/repeat.js +754 -0
  500. data/skeleton/vendor/vue/src/directives/show.js +8 -0
  501. data/skeleton/vendor/vue/src/directives/style.js +110 -0
  502. data/skeleton/vendor/vue/src/directives/text.js +14 -0
  503. data/skeleton/vendor/vue/src/directives/transition.js +26 -0
  504. data/skeleton/vendor/vue/src/element-directives/content.js +111 -0
  505. data/skeleton/vendor/vue/src/element-directives/index.js +2 -0
  506. data/skeleton/vendor/vue/src/element-directives/partial.js +73 -0
  507. data/skeleton/vendor/vue/src/filters/array-filters.js +85 -0
  508. data/skeleton/vendor/vue/src/filters/index.js +137 -0
  509. data/skeleton/vendor/vue/src/instance/compile.js +196 -0
  510. data/skeleton/vendor/vue/src/instance/events.js +139 -0
  511. data/skeleton/vendor/vue/src/instance/init.js +89 -0
  512. data/skeleton/vendor/vue/src/instance/misc.js +93 -0
  513. data/skeleton/vendor/vue/src/instance/scope.js +282 -0
  514. data/skeleton/vendor/vue/src/observer/array.js +92 -0
  515. data/skeleton/vendor/vue/src/observer/dep.js +61 -0
  516. data/skeleton/vendor/vue/src/observer/index.js +212 -0
  517. data/skeleton/vendor/vue/src/observer/object.js +82 -0
  518. data/skeleton/vendor/vue/src/parsers/directive.js +179 -0
  519. data/skeleton/vendor/vue/src/parsers/expression.js +264 -0
  520. data/skeleton/vendor/vue/src/parsers/path.js +348 -0
  521. data/skeleton/vendor/vue/src/parsers/template.js +264 -0
  522. data/skeleton/vendor/vue/src/parsers/text.js +176 -0
  523. data/skeleton/vendor/vue/src/transition/index.js +128 -0
  524. data/skeleton/vendor/vue/src/transition/queue.js +35 -0
  525. data/skeleton/vendor/vue/src/transition/transition.js +308 -0
  526. data/skeleton/vendor/vue/src/util/component.js +124 -0
  527. data/skeleton/vendor/vue/src/util/debug.js +64 -0
  528. data/skeleton/vendor/vue/src/util/dom.js +262 -0
  529. data/skeleton/vendor/vue/src/util/env.js +85 -0
  530. data/skeleton/vendor/vue/src/util/index.js +9 -0
  531. data/skeleton/vendor/vue/src/util/lang.js +289 -0
  532. data/skeleton/vendor/vue/src/util/options.js +353 -0
  533. data/skeleton/vendor/vue/src/vue.js +89 -0
  534. data/skeleton/vendor/vue/src/watcher.js +292 -0
  535. data/tmp/.keep +0 -0
  536. metadata +677 -0
@@ -0,0 +1,754 @@
1
+ var _ = require('../util')
2
+ var config = require('../config')
3
+ var isObject = _.isObject
4
+ var isPlainObject = _.isPlainObject
5
+ var textParser = require('../parsers/text')
6
+ var expParser = require('../parsers/expression')
7
+ var templateParser = require('../parsers/template')
8
+ var compiler = require('../compiler')
9
+ var uid = 0
10
+
11
+ // async component resolution states
12
+ var UNRESOLVED = 0
13
+ var PENDING = 1
14
+ var RESOLVED = 2
15
+ var ABORTED = 3
16
+
17
+ module.exports = {
18
+
19
+ /**
20
+ * Setup.
21
+ */
22
+
23
+ bind: function () {
24
+ // support for item in array syntax
25
+ var inMatch = this.expression.match(/(.*) in (.*)/)
26
+ if (inMatch) {
27
+ this.arg = inMatch[1]
28
+ this._watcherExp = inMatch[2]
29
+ }
30
+ // uid as a cache identifier
31
+ this.id = '__v_repeat_' + (++uid)
32
+
33
+ // setup anchor nodes
34
+ this.start = _.createAnchor('v-repeat-start')
35
+ this.end = _.createAnchor('v-repeat-end')
36
+ _.replace(this.el, this.end)
37
+ _.before(this.start, this.end)
38
+
39
+ // check if this is a block repeat
40
+ this.template = _.isTemplate(this.el)
41
+ ? templateParser.parse(this.el, true)
42
+ : this.el
43
+
44
+ // check for trackby param
45
+ this.idKey = this._checkParam('track-by')
46
+ // check for transition stagger
47
+ var stagger = +this._checkParam('stagger')
48
+ this.enterStagger = +this._checkParam('enter-stagger') || stagger
49
+ this.leaveStagger = +this._checkParam('leave-stagger') || stagger
50
+
51
+ // check for v-ref/v-el
52
+ this.refID = this._checkParam(config.prefix + 'ref')
53
+ this.elID = this._checkParam(config.prefix + 'el')
54
+
55
+ // check other directives that need to be handled
56
+ // at v-repeat level
57
+ this.checkIf()
58
+ this.checkComponent()
59
+
60
+ // create cache object
61
+ this.cache = Object.create(null)
62
+
63
+ // some helpful tips...
64
+ /* istanbul ignore if */
65
+ if (
66
+ process.env.NODE_ENV !== 'production' &&
67
+ this.el.tagName === 'OPTION'
68
+ ) {
69
+ _.warn(
70
+ 'Don\'t use v-repeat for v-model options; ' +
71
+ 'use the `options` param instead: ' +
72
+ 'http://vuejs.org/guide/forms.html#Dynamic_Select_Options'
73
+ )
74
+ }
75
+ },
76
+
77
+ /**
78
+ * Warn against v-if usage.
79
+ */
80
+
81
+ checkIf: function () {
82
+ if (_.attr(this.el, 'if') !== null) {
83
+ process.env.NODE_ENV !== 'production' && _.warn(
84
+ 'Don\'t use v-if with v-repeat. ' +
85
+ 'Use v-show or the "filterBy" filter instead.'
86
+ )
87
+ }
88
+ },
89
+
90
+ /**
91
+ * Check the component constructor to use for repeated
92
+ * instances. If static we resolve it now, otherwise it
93
+ * needs to be resolved at build time with actual data.
94
+ */
95
+
96
+ checkComponent: function () {
97
+ this.componentState = UNRESOLVED
98
+ var options = this.vm.$options
99
+ var id = _.checkComponent(this.el, options)
100
+ if (!id) {
101
+ // default constructor
102
+ this.Component = _.Vue
103
+ // inline repeats should inherit
104
+ this.inline = true
105
+ // important: transclude with no options, just
106
+ // to ensure block start and block end
107
+ this.template = compiler.transclude(this.template)
108
+ var copy = _.extend({}, options)
109
+ copy._asComponent = false
110
+ this._linkFn = compiler.compile(this.template, copy)
111
+ } else {
112
+ this.Component = null
113
+ this.asComponent = true
114
+ // check inline-template
115
+ if (this._checkParam('inline-template') !== null) {
116
+ // extract inline template as a DocumentFragment
117
+ this.inlineTemplate = _.extractContent(this.el, true)
118
+ }
119
+ var tokens = textParser.parse(id)
120
+ if (tokens) {
121
+ // dynamic component to be resolved later
122
+ var componentExp = textParser.tokensToExp(tokens)
123
+ this.componentGetter = expParser.parse(componentExp).get
124
+ } else {
125
+ // static
126
+ this.componentId = id
127
+ this.pendingData = null
128
+ }
129
+ }
130
+ },
131
+
132
+ resolveComponent: function () {
133
+ this.componentState = PENDING
134
+ this.vm._resolveComponent(this.componentId, _.bind(function (Component) {
135
+ if (this.componentState === ABORTED) {
136
+ return
137
+ }
138
+ this.Component = Component
139
+ this.componentState = RESOLVED
140
+ this.realUpdate(this.pendingData)
141
+ this.pendingData = null
142
+ }, this))
143
+ },
144
+
145
+ /**
146
+ * Resolve a dynamic component to use for an instance.
147
+ * The tricky part here is that there could be dynamic
148
+ * components depending on instance data.
149
+ *
150
+ * @param {Object} data
151
+ * @param {Object} meta
152
+ * @return {Function}
153
+ */
154
+
155
+ resolveDynamicComponent: function (data, meta) {
156
+ // create a temporary context object and copy data
157
+ // and meta properties onto it.
158
+ // use _.define to avoid accidentally overwriting scope
159
+ // properties.
160
+ var context = Object.create(this.vm)
161
+ var key
162
+ for (key in data) {
163
+ _.define(context, key, data[key])
164
+ }
165
+ for (key in meta) {
166
+ _.define(context, key, meta[key])
167
+ }
168
+ var id = this.componentGetter.call(context, context)
169
+ var Component = _.resolveAsset(this.vm.$options, 'components', id)
170
+ if (process.env.NODE_ENV !== 'production') {
171
+ _.assertAsset(Component, 'component', id)
172
+ }
173
+ if (!Component.options) {
174
+ process.env.NODE_ENV !== 'production' && _.warn(
175
+ 'Async resolution is not supported for v-repeat ' +
176
+ '+ dynamic component. (component: ' + id + ')'
177
+ )
178
+ return _.Vue
179
+ }
180
+ return Component
181
+ },
182
+
183
+ /**
184
+ * Update.
185
+ * This is called whenever the Array mutates. If we have
186
+ * a component, we might need to wait for it to resolve
187
+ * asynchronously.
188
+ *
189
+ * @param {Array|Number|String} data
190
+ */
191
+
192
+ update: function (data) {
193
+ if (this.componentId) {
194
+ var state = this.componentState
195
+ if (state === UNRESOLVED) {
196
+ this.pendingData = data
197
+ // once resolved, it will call realUpdate
198
+ this.resolveComponent()
199
+ } else if (state === PENDING) {
200
+ this.pendingData = data
201
+ } else if (state === RESOLVED) {
202
+ this.realUpdate(data)
203
+ }
204
+ } else {
205
+ this.realUpdate(data)
206
+ }
207
+ },
208
+
209
+ /**
210
+ * The real update that actually modifies the DOM.
211
+ *
212
+ * @param {Array|Number|String} data
213
+ */
214
+
215
+ realUpdate: function (data) {
216
+ this.vms = this.diff(data, this.vms)
217
+ // update v-ref
218
+ if (this.refID) {
219
+ this.vm.$[this.refID] = this.converted
220
+ ? toRefObject(this.vms)
221
+ : this.vms
222
+ }
223
+ if (this.elID) {
224
+ this.vm.$$[this.elID] = this.vms.map(function (vm) {
225
+ return vm.$el
226
+ })
227
+ }
228
+ },
229
+
230
+ /**
231
+ * Diff, based on new data and old data, determine the
232
+ * minimum amount of DOM manipulations needed to make the
233
+ * DOM reflect the new data Array.
234
+ *
235
+ * The algorithm diffs the new data Array by storing a
236
+ * hidden reference to an owner vm instance on previously
237
+ * seen data. This allows us to achieve O(n) which is
238
+ * better than a levenshtein distance based algorithm,
239
+ * which is O(m * n).
240
+ *
241
+ * @param {Array} data
242
+ * @param {Array} oldVms
243
+ * @return {Array}
244
+ */
245
+
246
+ diff: function (data, oldVms) {
247
+ var idKey = this.idKey
248
+ var converted = this.converted
249
+ var start = this.start
250
+ var end = this.end
251
+ var inDoc = _.inDoc(start)
252
+ var alias = this.arg
253
+ var init = !oldVms
254
+ var vms = new Array(data.length)
255
+ var obj, raw, vm, i, l, primitive
256
+ // First pass, go through the new Array and fill up
257
+ // the new vms array. If a piece of data has a cached
258
+ // instance for it, we reuse it. Otherwise build a new
259
+ // instance.
260
+ for (i = 0, l = data.length; i < l; i++) {
261
+ obj = data[i]
262
+ raw = converted ? obj.$value : obj
263
+ primitive = !isObject(raw)
264
+ vm = !init && this.getVm(raw, i, converted ? obj.$key : null)
265
+ if (vm) { // reusable instance
266
+ vm._reused = true
267
+ vm.$index = i // update $index
268
+ // update data for track-by or object repeat,
269
+ // since in these two cases the data is replaced
270
+ // rather than mutated.
271
+ if (idKey || converted || primitive) {
272
+ if (alias) {
273
+ vm[alias] = raw
274
+ } else if (_.isPlainObject(raw)) {
275
+ vm.$data = raw
276
+ } else {
277
+ vm.$value = raw
278
+ }
279
+ }
280
+ } else { // new instance
281
+ vm = this.build(obj, i, true)
282
+ vm._reused = false
283
+ }
284
+ vms[i] = vm
285
+ // insert if this is first run
286
+ if (init) {
287
+ vm.$before(end)
288
+ }
289
+ }
290
+ // if this is the first run, we're done.
291
+ if (init) {
292
+ return vms
293
+ }
294
+ // Second pass, go through the old vm instances and
295
+ // destroy those who are not reused (and remove them
296
+ // from cache)
297
+ var removalIndex = 0
298
+ var totalRemoved = oldVms.length - vms.length
299
+ for (i = 0, l = oldVms.length; i < l; i++) {
300
+ vm = oldVms[i]
301
+ if (!vm._reused) {
302
+ this.uncacheVm(vm)
303
+ vm.$destroy(false, true) // defer cleanup until removal
304
+ this.remove(vm, removalIndex++, totalRemoved, inDoc)
305
+ }
306
+ }
307
+ // final pass, move/insert new instances into the
308
+ // right place.
309
+ var targetPrev, prevEl, currentPrev
310
+ var insertionIndex = 0
311
+ for (i = 0, l = vms.length; i < l; i++) {
312
+ vm = vms[i]
313
+ // this is the vm that we should be after
314
+ targetPrev = vms[i - 1]
315
+ prevEl = targetPrev
316
+ ? targetPrev._staggerCb
317
+ ? targetPrev._staggerAnchor
318
+ : targetPrev._fragmentEnd || targetPrev.$el
319
+ : start
320
+ if (vm._reused && !vm._staggerCb) {
321
+ currentPrev = findPrevVm(vm, start, this.id)
322
+ if (currentPrev !== targetPrev) {
323
+ this.move(vm, prevEl)
324
+ }
325
+ } else {
326
+ // new instance, or still in stagger.
327
+ // insert with updated stagger index.
328
+ this.insert(vm, insertionIndex++, prevEl, inDoc)
329
+ }
330
+ vm._reused = false
331
+ }
332
+ return vms
333
+ },
334
+
335
+ /**
336
+ * Build a new instance and cache it.
337
+ *
338
+ * @param {Object} data
339
+ * @param {Number} index
340
+ * @param {Boolean} needCache
341
+ */
342
+
343
+ build: function (data, index, needCache) {
344
+ var meta = { $index: index }
345
+ if (this.converted) {
346
+ meta.$key = data.$key
347
+ }
348
+ var raw = this.converted ? data.$value : data
349
+ var alias = this.arg
350
+ if (alias) {
351
+ data = {}
352
+ data[alias] = raw
353
+ } else if (!isPlainObject(raw)) {
354
+ // non-object values
355
+ data = {}
356
+ meta.$value = raw
357
+ } else {
358
+ // default
359
+ data = raw
360
+ }
361
+ // resolve constructor
362
+ var Component = this.Component || this.resolveDynamicComponent(data, meta)
363
+ var parent = this._host || this.vm
364
+ var vm = parent.$addChild({
365
+ el: templateParser.clone(this.template),
366
+ data: data,
367
+ inherit: this.inline,
368
+ template: this.inlineTemplate,
369
+ // repeater meta, e.g. $index, $key
370
+ _meta: meta,
371
+ // mark this as an inline-repeat instance
372
+ _repeat: this.inline,
373
+ // is this a component?
374
+ _asComponent: this.asComponent,
375
+ // linker cachable if no inline-template
376
+ _linkerCachable: !this.inlineTemplate && Component !== _.Vue,
377
+ // pre-compiled linker for simple repeats
378
+ _linkFn: this._linkFn,
379
+ // identifier, shows that this vm belongs to this collection
380
+ _repeatId: this.id,
381
+ // transclusion content owner
382
+ _context: this.vm
383
+ }, Component)
384
+ // cache instance
385
+ if (needCache) {
386
+ this.cacheVm(raw, vm, index, this.converted ? meta.$key : null)
387
+ }
388
+ // sync back changes for two-way bindings of primitive values
389
+ var dir = this
390
+ if (this.rawType === 'object' && isPrimitive(raw)) {
391
+ vm.$watch(alias || '$value', function (val) {
392
+ if (dir.filters) {
393
+ process.env.NODE_ENV !== 'production' && _.warn(
394
+ 'You seem to be mutating the $value reference of ' +
395
+ 'a v-repeat instance (likely through v-model) ' +
396
+ 'and filtering the v-repeat at the same time. ' +
397
+ 'This will not work properly with an Array of ' +
398
+ 'primitive values. Please use an Array of ' +
399
+ 'Objects instead.'
400
+ )
401
+ }
402
+ dir._withLock(function () {
403
+ if (dir.converted) {
404
+ dir.rawValue[vm.$key] = val
405
+ } else {
406
+ dir.rawValue.$set(vm.$index, val)
407
+ }
408
+ })
409
+ })
410
+ }
411
+ return vm
412
+ },
413
+
414
+ /**
415
+ * Unbind, teardown everything
416
+ */
417
+
418
+ unbind: function () {
419
+ this.componentState = ABORTED
420
+ if (this.refID) {
421
+ this.vm.$[this.refID] = null
422
+ }
423
+ if (this.vms) {
424
+ var i = this.vms.length
425
+ var vm
426
+ while (i--) {
427
+ vm = this.vms[i]
428
+ this.uncacheVm(vm)
429
+ vm.$destroy()
430
+ }
431
+ }
432
+ },
433
+
434
+ /**
435
+ * Cache a vm instance based on its data.
436
+ *
437
+ * If the data is an object, we save the vm's reference on
438
+ * the data object as a hidden property. Otherwise we
439
+ * cache them in an object and for each primitive value
440
+ * there is an array in case there are duplicates.
441
+ *
442
+ * @param {Object} data
443
+ * @param {Vue} vm
444
+ * @param {Number} index
445
+ * @param {String} [key]
446
+ */
447
+
448
+ cacheVm: function (data, vm, index, key) {
449
+ var idKey = this.idKey
450
+ var cache = this.cache
451
+ var primitive = !isObject(data)
452
+ var id
453
+ if (key || idKey || primitive) {
454
+ id = idKey
455
+ ? idKey === '$index'
456
+ ? index
457
+ : data[idKey]
458
+ : (key || index)
459
+ if (!cache[id]) {
460
+ cache[id] = vm
461
+ } else if (!primitive && idKey !== '$index') {
462
+ process.env.NODE_ENV !== 'production' && _.warn(
463
+ 'Duplicate track-by key in v-repeat: ' + id
464
+ )
465
+ }
466
+ } else {
467
+ id = this.id
468
+ if (data.hasOwnProperty(id)) {
469
+ if (data[id] === null) {
470
+ data[id] = vm
471
+ } else {
472
+ process.env.NODE_ENV !== 'production' && _.warn(
473
+ 'Duplicate objects are not supported in v-repeat ' +
474
+ 'when using components or transitions.'
475
+ )
476
+ }
477
+ } else {
478
+ _.define(data, id, vm)
479
+ }
480
+ }
481
+ vm._raw = data
482
+ },
483
+
484
+ /**
485
+ * Try to get a cached instance from a piece of data.
486
+ *
487
+ * @param {Object} data
488
+ * @param {Number} index
489
+ * @param {String} [key]
490
+ * @return {Vue|undefined}
491
+ */
492
+
493
+ getVm: function (data, index, key) {
494
+ var idKey = this.idKey
495
+ var primitive = !isObject(data)
496
+ if (key || idKey || primitive) {
497
+ var id = idKey
498
+ ? idKey === '$index'
499
+ ? index
500
+ : data[idKey]
501
+ : (key || index)
502
+ return this.cache[id]
503
+ } else {
504
+ return data[this.id]
505
+ }
506
+ },
507
+
508
+ /**
509
+ * Delete a cached vm instance.
510
+ *
511
+ * @param {Vue} vm
512
+ */
513
+
514
+ uncacheVm: function (vm) {
515
+ var data = vm._raw
516
+ var idKey = this.idKey
517
+ var index = vm.$index
518
+ // fix #948: avoid accidentally fall through to
519
+ // a parent repeater which happens to have $key.
520
+ var key = vm.hasOwnProperty('$key') && vm.$key
521
+ var primitive = !isObject(data)
522
+ if (idKey || key || primitive) {
523
+ var id = idKey
524
+ ? idKey === '$index'
525
+ ? index
526
+ : data[idKey]
527
+ : (key || index)
528
+ this.cache[id] = null
529
+ } else {
530
+ data[this.id] = null
531
+ vm._raw = null
532
+ }
533
+ },
534
+
535
+ /**
536
+ * Insert an instance.
537
+ *
538
+ * @param {Vue} vm
539
+ * @param {Number} index
540
+ * @param {Node} prevEl
541
+ * @param {Boolean} inDoc
542
+ */
543
+
544
+ insert: function (vm, index, prevEl, inDoc) {
545
+ if (vm._staggerCb) {
546
+ vm._staggerCb.cancel()
547
+ vm._staggerCb = null
548
+ }
549
+ var staggerAmount = this.getStagger(vm, index, null, 'enter')
550
+ if (inDoc && staggerAmount) {
551
+ // create an anchor and insert it synchronously,
552
+ // so that we can resolve the correct order without
553
+ // worrying about some elements not inserted yet
554
+ var anchor = vm._staggerAnchor
555
+ if (!anchor) {
556
+ anchor = vm._staggerAnchor = _.createAnchor('stagger-anchor')
557
+ anchor.__vue__ = vm
558
+ }
559
+ _.after(anchor, prevEl)
560
+ var op = vm._staggerCb = _.cancellable(function () {
561
+ vm._staggerCb = null
562
+ vm.$before(anchor)
563
+ _.remove(anchor)
564
+ })
565
+ setTimeout(op, staggerAmount)
566
+ } else {
567
+ vm.$after(prevEl)
568
+ }
569
+ },
570
+
571
+ /**
572
+ * Move an already inserted instance.
573
+ *
574
+ * @param {Vue} vm
575
+ * @param {Node} prevEl
576
+ */
577
+
578
+ move: function (vm, prevEl) {
579
+ vm.$after(prevEl, null, false)
580
+ },
581
+
582
+ /**
583
+ * Remove an instance.
584
+ *
585
+ * @param {Vue} vm
586
+ * @param {Number} index
587
+ * @param {Boolean} inDoc
588
+ */
589
+
590
+ remove: function (vm, index, total, inDoc) {
591
+ if (vm._staggerCb) {
592
+ vm._staggerCb.cancel()
593
+ vm._staggerCb = null
594
+ // it's not possible for the same vm to be removed
595
+ // twice, so if we have a pending stagger callback,
596
+ // it means this vm is queued for enter but removed
597
+ // before its transition started. Since it is already
598
+ // destroyed, we can just leave it in detached state.
599
+ return
600
+ }
601
+ var staggerAmount = this.getStagger(vm, index, total, 'leave')
602
+ if (inDoc && staggerAmount) {
603
+ var op = vm._staggerCb = _.cancellable(function () {
604
+ vm._staggerCb = null
605
+ remove()
606
+ })
607
+ setTimeout(op, staggerAmount)
608
+ } else {
609
+ remove()
610
+ }
611
+ function remove () {
612
+ vm.$remove(function () {
613
+ vm._cleanup()
614
+ })
615
+ }
616
+ },
617
+
618
+ /**
619
+ * Get the stagger amount for an insertion/removal.
620
+ *
621
+ * @param {Vue} vm
622
+ * @param {Number} index
623
+ * @param {String} type
624
+ * @param {Number} total
625
+ */
626
+
627
+ getStagger: function (vm, index, total, type) {
628
+ type = type + 'Stagger'
629
+ var transition = vm.$el.__v_trans
630
+ var hooks = transition && transition.hooks
631
+ var hook = hooks && (hooks[type] || hooks.stagger)
632
+ return hook
633
+ ? hook.call(vm, index, total)
634
+ : index * this[type]
635
+ },
636
+
637
+ /**
638
+ * Pre-process the value before piping it through the
639
+ * filters, and convert non-Array objects to arrays.
640
+ *
641
+ * This function will be bound to this directive instance
642
+ * and passed into the watcher.
643
+ *
644
+ * @param {*} value
645
+ * @return {Array}
646
+ * @private
647
+ */
648
+
649
+ _preProcess: function (value) {
650
+ // regardless of type, store the un-filtered raw value.
651
+ this.rawValue = value
652
+ var type = this.rawType = typeof value
653
+ if (!isPlainObject(value)) {
654
+ this.converted = false
655
+ if (type === 'number') {
656
+ value = range(value)
657
+ } else if (type === 'string') {
658
+ value = _.toArray(value)
659
+ }
660
+ return value || []
661
+ } else {
662
+ // convert plain object to array.
663
+ var keys = Object.keys(value)
664
+ var i = keys.length
665
+ var res = new Array(i)
666
+ var key
667
+ while (i--) {
668
+ key = keys[i]
669
+ res[i] = {
670
+ $key: key,
671
+ $value: value[key]
672
+ }
673
+ }
674
+ this.converted = true
675
+ return res
676
+ }
677
+ }
678
+ }
679
+
680
+ /**
681
+ * Helper to find the previous element that is an instance
682
+ * root node. This is necessary because a destroyed vm's
683
+ * element could still be lingering in the DOM before its
684
+ * leaving transition finishes, but its __vue__ reference
685
+ * should have been removed so we can skip them.
686
+ *
687
+ * If this is a block repeat, we want to make sure we only
688
+ * return vm that is bound to this v-repeat. (see #929)
689
+ *
690
+ * @param {Vue} vm
691
+ * @param {Comment|Text} anchor
692
+ * @return {Vue}
693
+ */
694
+
695
+ function findPrevVm (vm, anchor, id) {
696
+ var el = vm.$el.previousSibling
697
+ /* istanbul ignore if */
698
+ if (!el) return
699
+ while (
700
+ (!el.__vue__ || el.__vue__.$options._repeatId !== id) &&
701
+ el !== anchor
702
+ ) {
703
+ el = el.previousSibling
704
+ }
705
+ return el.__vue__
706
+ }
707
+
708
+ /**
709
+ * Create a range array from given number.
710
+ *
711
+ * @param {Number} n
712
+ * @return {Array}
713
+ */
714
+
715
+ function range (n) {
716
+ var i = -1
717
+ var ret = new Array(n)
718
+ while (++i < n) {
719
+ ret[i] = i
720
+ }
721
+ return ret
722
+ }
723
+
724
+ /**
725
+ * Convert a vms array to an object ref for v-ref on an
726
+ * Object value.
727
+ *
728
+ * @param {Array} vms
729
+ * @return {Object}
730
+ */
731
+
732
+ function toRefObject (vms) {
733
+ var ref = {}
734
+ for (var i = 0, l = vms.length; i < l; i++) {
735
+ ref[vms[i].$key] = vms[i]
736
+ }
737
+ return ref
738
+ }
739
+
740
+ /**
741
+ * Check if a value is a primitive one:
742
+ * String, Number, Boolean, null or undefined.
743
+ *
744
+ * @param {*} value
745
+ * @return {Boolean}
746
+ */
747
+
748
+ function isPrimitive (value) {
749
+ var type = typeof value
750
+ return value == null ||
751
+ type === 'string' ||
752
+ type === 'number' ||
753
+ type === 'boolean'
754
+ }