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,282 @@
1
+ var _ = require('../util')
2
+ var compiler = require('../compiler')
3
+ var Observer = require('../observer')
4
+ var Dep = require('../observer/dep')
5
+ var Watcher = require('../watcher')
6
+
7
+ /**
8
+ * Setup the scope of an instance, which contains:
9
+ * - observed data
10
+ * - computed properties
11
+ * - user methods
12
+ * - meta properties
13
+ */
14
+
15
+ exports._initScope = function () {
16
+ this._initProps()
17
+ this._initMeta()
18
+ this._initMethods()
19
+ this._initData()
20
+ this._initComputed()
21
+ }
22
+
23
+ /**
24
+ * Initialize props.
25
+ */
26
+
27
+ exports._initProps = function () {
28
+ var options = this.$options
29
+ var el = options.el
30
+ var props = options.props
31
+ if (props && !el) {
32
+ process.env.NODE_ENV !== 'production' && _.warn(
33
+ 'Props will not be compiled if no `el` option is ' +
34
+ 'provided at instantiation.'
35
+ )
36
+ }
37
+ // make sure to convert string selectors into element now
38
+ el = options.el = _.query(el)
39
+ this._propsUnlinkFn = el && props
40
+ ? compiler.compileAndLinkProps(
41
+ this, el, props
42
+ )
43
+ : null
44
+ }
45
+
46
+ /**
47
+ * Initialize the data.
48
+ */
49
+
50
+ exports._initData = function () {
51
+ var propsData = this._data
52
+ var optionsDataFn = this.$options.data
53
+ var optionsData = optionsDataFn && optionsDataFn()
54
+ if (optionsData) {
55
+ this._data = optionsData
56
+ for (var prop in propsData) {
57
+ if (
58
+ this._props[prop].raw !== null ||
59
+ !optionsData.hasOwnProperty(prop)
60
+ ) {
61
+ optionsData.$set(prop, propsData[prop])
62
+ }
63
+ }
64
+ }
65
+ var data = this._data
66
+ // proxy data on instance
67
+ var keys = Object.keys(data)
68
+ var i, key
69
+ i = keys.length
70
+ while (i--) {
71
+ key = keys[i]
72
+ if (!_.isReserved(key)) {
73
+ this._proxy(key)
74
+ }
75
+ }
76
+ // observe data
77
+ Observer.create(data, this)
78
+ }
79
+
80
+ /**
81
+ * Swap the isntance's $data. Called in $data's setter.
82
+ *
83
+ * @param {Object} newData
84
+ */
85
+
86
+ exports._setData = function (newData) {
87
+ newData = newData || {}
88
+ var oldData = this._data
89
+ this._data = newData
90
+ var keys, key, i
91
+ // copy props.
92
+ // this should only happen during a v-repeat of component
93
+ // that also happens to have compiled props.
94
+ var props = this.$options.props
95
+ if (props) {
96
+ i = props.length
97
+ while (i--) {
98
+ key = props[i].name
99
+ if (key !== '$data' && !newData.hasOwnProperty(key)) {
100
+ newData.$set(key, oldData[key])
101
+ }
102
+ }
103
+ }
104
+ // unproxy keys not present in new data
105
+ keys = Object.keys(oldData)
106
+ i = keys.length
107
+ while (i--) {
108
+ key = keys[i]
109
+ if (!_.isReserved(key) && !(key in newData)) {
110
+ this._unproxy(key)
111
+ }
112
+ }
113
+ // proxy keys not already proxied,
114
+ // and trigger change for changed values
115
+ keys = Object.keys(newData)
116
+ i = keys.length
117
+ while (i--) {
118
+ key = keys[i]
119
+ if (!this.hasOwnProperty(key) && !_.isReserved(key)) {
120
+ // new property
121
+ this._proxy(key)
122
+ }
123
+ }
124
+ oldData.__ob__.removeVm(this)
125
+ Observer.create(newData, this)
126
+ this._digest()
127
+ }
128
+
129
+ /**
130
+ * Proxy a property, so that
131
+ * vm.prop === vm._data.prop
132
+ *
133
+ * @param {String} key
134
+ */
135
+
136
+ exports._proxy = function (key) {
137
+ // need to store ref to self here
138
+ // because these getter/setters might
139
+ // be called by child instances!
140
+ var self = this
141
+ Object.defineProperty(self, key, {
142
+ configurable: true,
143
+ enumerable: true,
144
+ get: function proxyGetter () {
145
+ return self._data[key]
146
+ },
147
+ set: function proxySetter (val) {
148
+ self._data[key] = val
149
+ }
150
+ })
151
+ }
152
+
153
+ /**
154
+ * Unproxy a property.
155
+ *
156
+ * @param {String} key
157
+ */
158
+
159
+ exports._unproxy = function (key) {
160
+ delete this[key]
161
+ }
162
+
163
+ /**
164
+ * Force update on every watcher in scope.
165
+ */
166
+
167
+ exports._digest = function () {
168
+ var i = this._watchers.length
169
+ while (i--) {
170
+ this._watchers[i].update(true) // shallow updates
171
+ }
172
+ var children = this.$children
173
+ i = children.length
174
+ while (i--) {
175
+ var child = children[i]
176
+ if (child.$options.inherit) {
177
+ child._digest()
178
+ }
179
+ }
180
+ }
181
+
182
+ /**
183
+ * Setup computed properties. They are essentially
184
+ * special getter/setters
185
+ */
186
+
187
+ function noop () {}
188
+ exports._initComputed = function () {
189
+ var computed = this.$options.computed
190
+ if (computed) {
191
+ for (var key in computed) {
192
+ var userDef = computed[key]
193
+ var def = {
194
+ enumerable: true,
195
+ configurable: true
196
+ }
197
+ if (typeof userDef === 'function') {
198
+ def.get = makeComputedGetter(userDef, this)
199
+ def.set = noop
200
+ } else {
201
+ def.get = userDef.get
202
+ ? makeComputedGetter(userDef.get, this)
203
+ : noop
204
+ def.set = userDef.set
205
+ ? _.bind(userDef.set, this)
206
+ : noop
207
+ }
208
+ Object.defineProperty(this, key, def)
209
+ }
210
+ }
211
+ }
212
+
213
+ function makeComputedGetter (getter, owner) {
214
+ var watcher = new Watcher(owner, getter, null, {
215
+ lazy: true
216
+ })
217
+ return function computedGetter () {
218
+ if (watcher.dirty) {
219
+ watcher.evaluate()
220
+ }
221
+ if (Dep.target) {
222
+ watcher.depend()
223
+ }
224
+ return watcher.value
225
+ }
226
+ }
227
+
228
+ /**
229
+ * Setup instance methods. Methods must be bound to the
230
+ * instance since they might be called by children
231
+ * inheriting them.
232
+ */
233
+
234
+ exports._initMethods = function () {
235
+ var methods = this.$options.methods
236
+ if (methods) {
237
+ for (var key in methods) {
238
+ this[key] = _.bind(methods[key], this)
239
+ }
240
+ }
241
+ }
242
+
243
+ /**
244
+ * Initialize meta information like $index, $key & $value.
245
+ */
246
+
247
+ exports._initMeta = function () {
248
+ var metas = this.$options._meta
249
+ if (metas) {
250
+ for (var key in metas) {
251
+ this._defineMeta(key, metas[key])
252
+ }
253
+ }
254
+ }
255
+
256
+ /**
257
+ * Define a meta property, e.g $index, $key, $value
258
+ * which only exists on the vm instance but not in $data.
259
+ *
260
+ * @param {String} key
261
+ * @param {*} value
262
+ */
263
+
264
+ exports._defineMeta = function (key, value) {
265
+ var dep = new Dep()
266
+ Object.defineProperty(this, key, {
267
+ enumerable: true,
268
+ configurable: true,
269
+ get: function metaGetter () {
270
+ if (Dep.target) {
271
+ dep.depend()
272
+ }
273
+ return value
274
+ },
275
+ set: function metaSetter (val) {
276
+ if (val !== value) {
277
+ value = val
278
+ dep.notify()
279
+ }
280
+ }
281
+ })
282
+ }
@@ -0,0 +1,92 @@
1
+ var _ = require('../util')
2
+ var arrayProto = Array.prototype
3
+ var arrayMethods = Object.create(arrayProto)
4
+
5
+ /**
6
+ * Intercept mutating methods and emit events
7
+ */
8
+
9
+ ;[
10
+ 'push',
11
+ 'pop',
12
+ 'shift',
13
+ 'unshift',
14
+ 'splice',
15
+ 'sort',
16
+ 'reverse'
17
+ ]
18
+ .forEach(function (method) {
19
+ // cache original method
20
+ var original = arrayProto[method]
21
+ _.define(arrayMethods, method, function mutator () {
22
+ // avoid leaking arguments:
23
+ // http://jsperf.com/closure-with-arguments
24
+ var i = arguments.length
25
+ var args = new Array(i)
26
+ while (i--) {
27
+ args[i] = arguments[i]
28
+ }
29
+ var result = original.apply(this, args)
30
+ var ob = this.__ob__
31
+ var inserted
32
+ switch (method) {
33
+ case 'push':
34
+ inserted = args
35
+ break
36
+ case 'unshift':
37
+ inserted = args
38
+ break
39
+ case 'splice':
40
+ inserted = args.slice(2)
41
+ break
42
+ }
43
+ if (inserted) ob.observeArray(inserted)
44
+ // notify change
45
+ ob.dep.notify()
46
+ return result
47
+ })
48
+ })
49
+
50
+ /**
51
+ * Swap the element at the given index with a new value
52
+ * and emits corresponding event.
53
+ *
54
+ * @param {Number} index
55
+ * @param {*} val
56
+ * @return {*} - replaced element
57
+ */
58
+
59
+ _.define(
60
+ arrayProto,
61
+ '$set',
62
+ function $set (index, val) {
63
+ if (index >= this.length) {
64
+ this.length = index + 1
65
+ }
66
+ return this.splice(index, 1, val)[0]
67
+ }
68
+ )
69
+
70
+ /**
71
+ * Convenience method to remove the element at given index.
72
+ *
73
+ * @param {Number} index
74
+ * @param {*} val
75
+ */
76
+
77
+ _.define(
78
+ arrayProto,
79
+ '$remove',
80
+ function $remove (index) {
81
+ /* istanbul ignore if */
82
+ if (!this.length) return
83
+ if (typeof index !== 'number') {
84
+ index = _.indexOf(this, index)
85
+ }
86
+ if (index > -1) {
87
+ return this.splice(index, 1)
88
+ }
89
+ }
90
+ )
91
+
92
+ module.exports = arrayMethods
@@ -0,0 +1,61 @@
1
+ var _ = require('../util')
2
+
3
+ /**
4
+ * A dep is an observable that can have multiple
5
+ * directives subscribing to it.
6
+ *
7
+ * @constructor
8
+ */
9
+
10
+ function Dep () {
11
+ this.subs = []
12
+ }
13
+
14
+ // the current target watcher being evaluated.
15
+ // this is globally unique because there could be only one
16
+ // watcher being evaluated at any time.
17
+ Dep.target = null
18
+
19
+ var p = Dep.prototype
20
+
21
+ /**
22
+ * Add a directive subscriber.
23
+ *
24
+ * @param {Directive} sub
25
+ */
26
+
27
+ p.addSub = function (sub) {
28
+ this.subs.push(sub)
29
+ }
30
+
31
+ /**
32
+ * Remove a directive subscriber.
33
+ *
34
+ * @param {Directive} sub
35
+ */
36
+
37
+ p.removeSub = function (sub) {
38
+ this.subs.$remove(sub)
39
+ }
40
+
41
+ /**
42
+ * Add self as a dependency to the target watcher.
43
+ */
44
+
45
+ p.depend = function () {
46
+ Dep.target.addDep(this)
47
+ }
48
+
49
+ /**
50
+ * Notify all subscribers of a new value.
51
+ */
52
+
53
+ p.notify = function () {
54
+ // stablize the subscriber list first
55
+ var subs = _.toArray(this.subs)
56
+ for (var i = 0, l = subs.length; i < l; i++) {
57
+ subs[i].update()
58
+ }
59
+ }
60
+
61
+ module.exports = Dep
@@ -0,0 +1,212 @@
1
+ var _ = require('../util')
2
+ var config = require('../config')
3
+ var Dep = require('./dep')
4
+ var arrayMethods = require('./array')
5
+ var arrayKeys = Object.getOwnPropertyNames(arrayMethods)
6
+ require('./object')
7
+
8
+ /**
9
+ * Observer class that are attached to each observed
10
+ * object. Once attached, the observer converts target
11
+ * object's property keys into getter/setters that
12
+ * collect dependencies and dispatches updates.
13
+ *
14
+ * @param {Array|Object} value
15
+ * @constructor
16
+ */
17
+
18
+ function Observer (value) {
19
+ this.value = value
20
+ this.dep = new Dep()
21
+ _.define(value, '__ob__', this)
22
+ if (_.isArray(value)) {
23
+ var augment = config.proto && _.hasProto
24
+ ? protoAugment
25
+ : copyAugment
26
+ augment(value, arrayMethods, arrayKeys)
27
+ this.observeArray(value)
28
+ } else {
29
+ this.walk(value)
30
+ }
31
+ }
32
+
33
+ // Static methods
34
+
35
+ /**
36
+ * Attempt to create an observer instance for a value,
37
+ * returns the new observer if successfully observed,
38
+ * or the existing observer if the value already has one.
39
+ *
40
+ * @param {*} value
41
+ * @param {Vue} [vm]
42
+ * @return {Observer|undefined}
43
+ * @static
44
+ */
45
+
46
+ Observer.create = function (value, vm) {
47
+ var ob
48
+ if (
49
+ value &&
50
+ value.hasOwnProperty('__ob__') &&
51
+ value.__ob__ instanceof Observer
52
+ ) {
53
+ ob = value.__ob__
54
+ } else if (
55
+ _.isObject(value) &&
56
+ !Object.isFrozen(value) &&
57
+ !value._isVue
58
+ ) {
59
+ ob = new Observer(value)
60
+ }
61
+ if (ob && vm) {
62
+ ob.addVm(vm)
63
+ }
64
+ return ob
65
+ }
66
+
67
+ // Instance methods
68
+
69
+ var p = Observer.prototype
70
+
71
+ /**
72
+ * Walk through each property and convert them into
73
+ * getter/setters. This method should only be called when
74
+ * value type is Object. Properties prefixed with `$` or `_`
75
+ * and accessor properties are ignored.
76
+ *
77
+ * @param {Object} obj
78
+ */
79
+
80
+ p.walk = function (obj) {
81
+ var keys = Object.keys(obj)
82
+ var i = keys.length
83
+ var key, prefix
84
+ while (i--) {
85
+ key = keys[i]
86
+ prefix = key.charCodeAt(0)
87
+ if (prefix !== 0x24 && prefix !== 0x5F) { // skip $ or _
88
+ this.convert(key, obj[key])
89
+ }
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Try to carete an observer for a child value,
95
+ * and if value is array, link dep to the array.
96
+ *
97
+ * @param {*} val
98
+ * @return {Dep|undefined}
99
+ */
100
+
101
+ p.observe = function (val) {
102
+ return Observer.create(val)
103
+ }
104
+
105
+ /**
106
+ * Observe a list of Array items.
107
+ *
108
+ * @param {Array} items
109
+ */
110
+
111
+ p.observeArray = function (items) {
112
+ var i = items.length
113
+ while (i--) {
114
+ this.observe(items[i])
115
+ }
116
+ }
117
+
118
+ /**
119
+ * Convert a property into getter/setter so we can emit
120
+ * the events when the property is accessed/changed.
121
+ *
122
+ * @param {String} key
123
+ * @param {*} val
124
+ */
125
+
126
+ p.convert = function (key, val) {
127
+ var ob = this
128
+ var childOb = ob.observe(val)
129
+ var dep = new Dep()
130
+ Object.defineProperty(ob.value, key, {
131
+ enumerable: true,
132
+ configurable: true,
133
+ get: function () {
134
+ if (Dep.target) {
135
+ dep.depend()
136
+ if (childOb) {
137
+ childOb.dep.depend()
138
+ }
139
+ if (_.isArray(val)) {
140
+ for (var e, i = 0, l = val.length; i < l; i++) {
141
+ e = val[i]
142
+ e && e.__ob__ && e.__ob__.dep.depend()
143
+ }
144
+ }
145
+ }
146
+ return val
147
+ },
148
+ set: function (newVal) {
149
+ if (newVal === val) return
150
+ val = newVal
151
+ childOb = ob.observe(newVal)
152
+ dep.notify()
153
+ }
154
+ })
155
+ }
156
+
157
+ /**
158
+ * Add an owner vm, so that when $add/$delete mutations
159
+ * happen we can notify owner vms to proxy the keys and
160
+ * digest the watchers. This is only called when the object
161
+ * is observed as an instance's root $data.
162
+ *
163
+ * @param {Vue} vm
164
+ */
165
+
166
+ p.addVm = function (vm) {
167
+ (this.vms || (this.vms = [])).push(vm)
168
+ }
169
+
170
+ /**
171
+ * Remove an owner vm. This is called when the object is
172
+ * swapped out as an instance's $data object.
173
+ *
174
+ * @param {Vue} vm
175
+ */
176
+
177
+ p.removeVm = function (vm) {
178
+ this.vms.$remove(vm)
179
+ }
180
+
181
+ // helpers
182
+
183
+ /**
184
+ * Augment an target Object or Array by intercepting
185
+ * the prototype chain using __proto__
186
+ *
187
+ * @param {Object|Array} target
188
+ * @param {Object} proto
189
+ */
190
+
191
+ function protoAugment (target, src) {
192
+ target.__proto__ = src
193
+ }
194
+
195
+ /**
196
+ * Augment an target Object or Array by defining
197
+ * hidden properties.
198
+ *
199
+ * @param {Object|Array} target
200
+ * @param {Object} proto
201
+ */
202
+
203
+ function copyAugment (target, src, keys) {
204
+ var i = keys.length
205
+ var key
206
+ while (i--) {
207
+ key = keys[i]
208
+ _.define(target, key, src[key])
209
+ }
210
+ }
211
+
212
+ module.exports = Observer
@@ -0,0 +1,82 @@
1
+ var _ = require('../util')
2
+ var objProto = Object.prototype
3
+
4
+ /**
5
+ * Add a new property to an observed object
6
+ * and emits corresponding event
7
+ *
8
+ * @param {String} key
9
+ * @param {*} val
10
+ * @public
11
+ */
12
+
13
+ _.define(
14
+ objProto,
15
+ '$add',
16
+ function $add (key, val) {
17
+ if (this.hasOwnProperty(key)) return
18
+ var ob = this.__ob__
19
+ if (!ob || _.isReserved(key)) {
20
+ this[key] = val
21
+ return
22
+ }
23
+ ob.convert(key, val)
24
+ ob.dep.notify()
25
+ if (ob.vms) {
26
+ var i = ob.vms.length
27
+ while (i--) {
28
+ var vm = ob.vms[i]
29
+ vm._proxy(key)
30
+ vm._digest()
31
+ }
32
+ }
33
+ }
34
+ )
35
+
36
+ /**
37
+ * Set a property on an observed object, calling add to
38
+ * ensure the property is observed.
39
+ *
40
+ * @param {String} key
41
+ * @param {*} val
42
+ * @public
43
+ */
44
+
45
+ _.define(
46
+ objProto,
47
+ '$set',
48
+ function $set (key, val) {
49
+ this.$add(key, val)
50
+ this[key] = val
51
+ }
52
+ )
53
+
54
+ /**
55
+ * Deletes a property from an observed object
56
+ * and emits corresponding event
57
+ *
58
+ * @param {String} key
59
+ * @public
60
+ */
61
+
62
+ _.define(
63
+ objProto,
64
+ '$delete',
65
+ function $delete (key) {
66
+ if (!this.hasOwnProperty(key)) return
67
+ delete this[key]
68
+ var ob = this.__ob__
69
+ if (!ob || _.isReserved(key)) {
70
+ return
71
+ }
72
+ ob.dep.notify()
73
+ if (ob.vms) {
74
+ var i = ob.vms.length
75
+ while (i--) {
76
+ var vm = ob.vms[i]
77
+ vm._unproxy(key)
78
+ vm._digest()
79
+ }
80
+ }
81
+ }
82
+ )