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,631 @@
1
+ var _ = require('../util')
2
+ var compileProps = require('./compile-props')
3
+ var config = require('../config')
4
+ var textParser = require('../parsers/text')
5
+ var dirParser = require('../parsers/directive')
6
+ var templateParser = require('../parsers/template')
7
+ var resolveAsset = _.resolveAsset
8
+ var componentDef = require('../directives/component')
9
+
10
+ // terminal directives
11
+ var terminalDirectives = [
12
+ 'repeat',
13
+ 'if'
14
+ ]
15
+
16
+ /**
17
+ * Compile a template and return a reusable composite link
18
+ * function, which recursively contains more link functions
19
+ * inside. This top level compile function would normally
20
+ * be called on instance root nodes, but can also be used
21
+ * for partial compilation if the partial argument is true.
22
+ *
23
+ * The returned composite link function, when called, will
24
+ * return an unlink function that tearsdown all directives
25
+ * created during the linking phase.
26
+ *
27
+ * @param {Element|DocumentFragment} el
28
+ * @param {Object} options
29
+ * @param {Boolean} partial
30
+ * @param {Vue} [host] - host vm of transcluded content
31
+ * @return {Function}
32
+ */
33
+
34
+ exports.compile = function (el, options, partial, host) {
35
+ // link function for the node itself.
36
+ var nodeLinkFn = partial || !options._asComponent
37
+ ? compileNode(el, options)
38
+ : null
39
+ // link function for the childNodes
40
+ var childLinkFn =
41
+ !(nodeLinkFn && nodeLinkFn.terminal) &&
42
+ el.tagName !== 'SCRIPT' &&
43
+ el.hasChildNodes()
44
+ ? compileNodeList(el.childNodes, options)
45
+ : null
46
+
47
+ /**
48
+ * A composite linker function to be called on a already
49
+ * compiled piece of DOM, which instantiates all directive
50
+ * instances.
51
+ *
52
+ * @param {Vue} vm
53
+ * @param {Element|DocumentFragment} el
54
+ * @return {Function|undefined}
55
+ */
56
+
57
+ return function compositeLinkFn (vm, el) {
58
+ // cache childNodes before linking parent, fix #657
59
+ var childNodes = _.toArray(el.childNodes)
60
+ // link
61
+ var dirs = linkAndCapture(function () {
62
+ if (nodeLinkFn) nodeLinkFn(vm, el, host)
63
+ if (childLinkFn) childLinkFn(vm, childNodes, host)
64
+ }, vm)
65
+ return makeUnlinkFn(vm, dirs)
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Apply a linker to a vm/element pair and capture the
71
+ * directives created during the process.
72
+ *
73
+ * @param {Function} linker
74
+ * @param {Vue} vm
75
+ */
76
+
77
+ function linkAndCapture (linker, vm) {
78
+ var originalDirCount = vm._directives.length
79
+ linker()
80
+ return vm._directives.slice(originalDirCount)
81
+ }
82
+
83
+ /**
84
+ * Linker functions return an unlink function that
85
+ * tearsdown all directives instances generated during
86
+ * the process.
87
+ *
88
+ * We create unlink functions with only the necessary
89
+ * information to avoid retaining additional closures.
90
+ *
91
+ * @param {Vue} vm
92
+ * @param {Array} dirs
93
+ * @param {Vue} [context]
94
+ * @param {Array} [contextDirs]
95
+ * @return {Function}
96
+ */
97
+
98
+ function makeUnlinkFn (vm, dirs, context, contextDirs) {
99
+ return function unlink (destroying) {
100
+ teardownDirs(vm, dirs, destroying)
101
+ if (context && contextDirs) {
102
+ teardownDirs(context, contextDirs)
103
+ }
104
+ }
105
+ }
106
+
107
+ /**
108
+ * Teardown partial linked directives.
109
+ *
110
+ * @param {Vue} vm
111
+ * @param {Array} dirs
112
+ * @param {Boolean} destroying
113
+ */
114
+
115
+ function teardownDirs (vm, dirs, destroying) {
116
+ var i = dirs.length
117
+ while (i--) {
118
+ dirs[i]._teardown()
119
+ if (!destroying) {
120
+ vm._directives.$remove(dirs[i])
121
+ }
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Compile link props on an instance.
127
+ *
128
+ * @param {Vue} vm
129
+ * @param {Element} el
130
+ * @param {Object} options
131
+ * @return {Function}
132
+ */
133
+
134
+ exports.compileAndLinkProps = function (vm, el, props) {
135
+ var propsLinkFn = compileProps(el, props)
136
+ var propDirs = linkAndCapture(function () {
137
+ propsLinkFn(vm, null)
138
+ }, vm)
139
+ return makeUnlinkFn(vm, propDirs)
140
+ }
141
+
142
+ /**
143
+ * Compile the root element of an instance.
144
+ *
145
+ * 1. attrs on context container (context scope)
146
+ * 2. attrs on the component template root node, if
147
+ * replace:true (child scope)
148
+ *
149
+ * If this is a fragment instance, we only need to compile 1.
150
+ *
151
+ * This function does compile and link at the same time,
152
+ * since root linkers can not be reused. It returns the
153
+ * unlink function for potential context directives on the
154
+ * container.
155
+ *
156
+ * @param {Vue} vm
157
+ * @param {Element} el
158
+ * @param {Object} options
159
+ * @return {Function}
160
+ */
161
+
162
+ exports.compileAndLinkRoot = function (vm, el, options) {
163
+ var containerAttrs = options._containerAttrs
164
+ var replacerAttrs = options._replacerAttrs
165
+ var contextLinkFn, replacerLinkFn
166
+
167
+ // only need to compile other attributes for
168
+ // non-fragment instances
169
+ if (el.nodeType !== 11) {
170
+ // for components, container and replacer need to be
171
+ // compiled separately and linked in different scopes.
172
+ if (options._asComponent) {
173
+ // 2. container attributes
174
+ if (containerAttrs) {
175
+ contextLinkFn = compileDirectives(containerAttrs, options)
176
+ }
177
+ if (replacerAttrs) {
178
+ // 3. replacer attributes
179
+ replacerLinkFn = compileDirectives(replacerAttrs, options)
180
+ }
181
+ } else {
182
+ // non-component, just compile as a normal element.
183
+ replacerLinkFn = compileDirectives(el.attributes, options)
184
+ }
185
+ }
186
+
187
+ // link context scope dirs
188
+ var context = vm._context
189
+ var contextDirs
190
+ if (context && contextLinkFn) {
191
+ contextDirs = linkAndCapture(function () {
192
+ contextLinkFn(context, el)
193
+ }, context)
194
+ }
195
+
196
+ // link self
197
+ var selfDirs = linkAndCapture(function () {
198
+ if (replacerLinkFn) replacerLinkFn(vm, el)
199
+ }, vm)
200
+
201
+ // return the unlink function that tearsdown context
202
+ // container directives.
203
+ return makeUnlinkFn(vm, selfDirs, context, contextDirs)
204
+ }
205
+
206
+ /**
207
+ * Compile a node and return a nodeLinkFn based on the
208
+ * node type.
209
+ *
210
+ * @param {Node} node
211
+ * @param {Object} options
212
+ * @return {Function|null}
213
+ */
214
+
215
+ function compileNode (node, options) {
216
+ var type = node.nodeType
217
+ if (type === 1 && node.tagName !== 'SCRIPT') {
218
+ return compileElement(node, options)
219
+ } else if (type === 3 && config.interpolate && node.data.trim()) {
220
+ return compileTextNode(node, options)
221
+ } else {
222
+ return null
223
+ }
224
+ }
225
+
226
+ /**
227
+ * Compile an element and return a nodeLinkFn.
228
+ *
229
+ * @param {Element} el
230
+ * @param {Object} options
231
+ * @return {Function|null}
232
+ */
233
+
234
+ function compileElement (el, options) {
235
+ var linkFn
236
+ var hasAttrs = el.hasAttributes()
237
+ // check terminal directives (repeat & if)
238
+ if (hasAttrs) {
239
+ linkFn = checkTerminalDirectives(el, options)
240
+ }
241
+ // check element directives
242
+ if (!linkFn) {
243
+ linkFn = checkElementDirectives(el, options)
244
+ }
245
+ // check component
246
+ if (!linkFn) {
247
+ linkFn = checkComponent(el, options)
248
+ }
249
+ // normal directives
250
+ if (!linkFn && hasAttrs) {
251
+ linkFn = compileDirectives(el.attributes, options)
252
+ }
253
+ // if the element is a textarea, we need to interpolate
254
+ // its content on initial render.
255
+ if (el.tagName === 'TEXTAREA') {
256
+ var realLinkFn = linkFn
257
+ linkFn = function (vm, el) {
258
+ el.value = vm.$interpolate(el.value)
259
+ if (realLinkFn) realLinkFn(vm, el)
260
+ }
261
+ linkFn.terminal = true
262
+ }
263
+ return linkFn
264
+ }
265
+
266
+ /**
267
+ * Compile a textNode and return a nodeLinkFn.
268
+ *
269
+ * @param {TextNode} node
270
+ * @param {Object} options
271
+ * @return {Function|null} textNodeLinkFn
272
+ */
273
+
274
+ function compileTextNode (node, options) {
275
+ var tokens = textParser.parse(node.data)
276
+ if (!tokens) {
277
+ return null
278
+ }
279
+ var frag = document.createDocumentFragment()
280
+ var el, token
281
+ for (var i = 0, l = tokens.length; i < l; i++) {
282
+ token = tokens[i]
283
+ el = token.tag
284
+ ? processTextToken(token, options)
285
+ : document.createTextNode(token.value)
286
+ frag.appendChild(el)
287
+ }
288
+ return makeTextNodeLinkFn(tokens, frag, options)
289
+ }
290
+
291
+ /**
292
+ * Process a single text token.
293
+ *
294
+ * @param {Object} token
295
+ * @param {Object} options
296
+ * @return {Node}
297
+ */
298
+
299
+ function processTextToken (token, options) {
300
+ var el
301
+ if (token.oneTime) {
302
+ el = document.createTextNode(token.value)
303
+ } else {
304
+ if (token.html) {
305
+ el = document.createComment('v-html')
306
+ setTokenType('html')
307
+ } else {
308
+ // IE will clean up empty textNodes during
309
+ // frag.cloneNode(true), so we have to give it
310
+ // something here...
311
+ el = document.createTextNode(' ')
312
+ setTokenType('text')
313
+ }
314
+ }
315
+ function setTokenType (type) {
316
+ token.type = type
317
+ token.def = resolveAsset(options, 'directives', type)
318
+ token.descriptor = dirParser.parse(token.value)[0]
319
+ }
320
+ return el
321
+ }
322
+
323
+ /**
324
+ * Build a function that processes a textNode.
325
+ *
326
+ * @param {Array<Object>} tokens
327
+ * @param {DocumentFragment} frag
328
+ */
329
+
330
+ function makeTextNodeLinkFn (tokens, frag) {
331
+ return function textNodeLinkFn (vm, el) {
332
+ var fragClone = frag.cloneNode(true)
333
+ var childNodes = _.toArray(fragClone.childNodes)
334
+ var token, value, node
335
+ for (var i = 0, l = tokens.length; i < l; i++) {
336
+ token = tokens[i]
337
+ value = token.value
338
+ if (token.tag) {
339
+ node = childNodes[i]
340
+ if (token.oneTime) {
341
+ value = vm.$eval(value)
342
+ if (token.html) {
343
+ _.replace(node, templateParser.parse(value, true))
344
+ } else {
345
+ node.data = value
346
+ }
347
+ } else {
348
+ vm._bindDir(token.type, node,
349
+ token.descriptor, token.def)
350
+ }
351
+ }
352
+ }
353
+ _.replace(el, fragClone)
354
+ }
355
+ }
356
+
357
+ /**
358
+ * Compile a node list and return a childLinkFn.
359
+ *
360
+ * @param {NodeList} nodeList
361
+ * @param {Object} options
362
+ * @return {Function|undefined}
363
+ */
364
+
365
+ function compileNodeList (nodeList, options) {
366
+ var linkFns = []
367
+ var nodeLinkFn, childLinkFn, node
368
+ for (var i = 0, l = nodeList.length; i < l; i++) {
369
+ node = nodeList[i]
370
+ nodeLinkFn = compileNode(node, options)
371
+ childLinkFn =
372
+ !(nodeLinkFn && nodeLinkFn.terminal) &&
373
+ node.tagName !== 'SCRIPT' &&
374
+ node.hasChildNodes()
375
+ ? compileNodeList(node.childNodes, options)
376
+ : null
377
+ linkFns.push(nodeLinkFn, childLinkFn)
378
+ }
379
+ return linkFns.length
380
+ ? makeChildLinkFn(linkFns)
381
+ : null
382
+ }
383
+
384
+ /**
385
+ * Make a child link function for a node's childNodes.
386
+ *
387
+ * @param {Array<Function>} linkFns
388
+ * @return {Function} childLinkFn
389
+ */
390
+
391
+ function makeChildLinkFn (linkFns) {
392
+ return function childLinkFn (vm, nodes, host) {
393
+ var node, nodeLinkFn, childrenLinkFn
394
+ for (var i = 0, n = 0, l = linkFns.length; i < l; n++) {
395
+ node = nodes[n]
396
+ nodeLinkFn = linkFns[i++]
397
+ childrenLinkFn = linkFns[i++]
398
+ // cache childNodes before linking parent, fix #657
399
+ var childNodes = _.toArray(node.childNodes)
400
+ if (nodeLinkFn) {
401
+ nodeLinkFn(vm, node, host)
402
+ }
403
+ if (childrenLinkFn) {
404
+ childrenLinkFn(vm, childNodes, host)
405
+ }
406
+ }
407
+ }
408
+ }
409
+
410
+ /**
411
+ * Check for element directives (custom elements that should
412
+ * be resovled as terminal directives).
413
+ *
414
+ * @param {Element} el
415
+ * @param {Object} options
416
+ */
417
+
418
+ function checkElementDirectives (el, options) {
419
+ var tag = el.tagName.toLowerCase()
420
+ if (_.commonTagRE.test(tag)) return
421
+ var def = resolveAsset(options, 'elementDirectives', tag)
422
+ if (def) {
423
+ return makeTerminalNodeLinkFn(el, tag, '', options, def)
424
+ }
425
+ }
426
+
427
+ /**
428
+ * Check if an element is a component. If yes, return
429
+ * a component link function.
430
+ *
431
+ * @param {Element} el
432
+ * @param {Object} options
433
+ * @param {Boolean} hasAttrs
434
+ * @return {Function|undefined}
435
+ */
436
+
437
+ function checkComponent (el, options, hasAttrs) {
438
+ var componentId = _.checkComponent(el, options, hasAttrs)
439
+ if (componentId) {
440
+ var componentLinkFn = function (vm, el, host) {
441
+ vm._bindDir('component', el, {
442
+ expression: componentId
443
+ }, componentDef, host)
444
+ }
445
+ componentLinkFn.terminal = true
446
+ return componentLinkFn
447
+ }
448
+ }
449
+
450
+ /**
451
+ * Check an element for terminal directives in fixed order.
452
+ * If it finds one, return a terminal link function.
453
+ *
454
+ * @param {Element} el
455
+ * @param {Object} options
456
+ * @return {Function} terminalLinkFn
457
+ */
458
+
459
+ function checkTerminalDirectives (el, options) {
460
+ if (_.attr(el, 'pre') !== null) {
461
+ return skip
462
+ }
463
+ var value, dirName
464
+ for (var i = 0, l = terminalDirectives.length; i < l; i++) {
465
+ dirName = terminalDirectives[i]
466
+ if ((value = _.attr(el, dirName)) !== null) {
467
+ return makeTerminalNodeLinkFn(el, dirName, value, options)
468
+ }
469
+ }
470
+ }
471
+
472
+ function skip () {}
473
+ skip.terminal = true
474
+
475
+ /**
476
+ * Build a node link function for a terminal directive.
477
+ * A terminal link function terminates the current
478
+ * compilation recursion and handles compilation of the
479
+ * subtree in the directive.
480
+ *
481
+ * @param {Element} el
482
+ * @param {String} dirName
483
+ * @param {String} value
484
+ * @param {Object} options
485
+ * @param {Object} [def]
486
+ * @return {Function} terminalLinkFn
487
+ */
488
+
489
+ function makeTerminalNodeLinkFn (el, dirName, value, options, def) {
490
+ var descriptor = dirParser.parse(value)[0]
491
+ // no need to call resolveAsset since terminal directives
492
+ // are always internal
493
+ def = def || options.directives[dirName]
494
+ var fn = function terminalNodeLinkFn (vm, el, host) {
495
+ vm._bindDir(dirName, el, descriptor, def, host)
496
+ }
497
+ fn.terminal = true
498
+ return fn
499
+ }
500
+
501
+ /**
502
+ * Compile the directives on an element and return a linker.
503
+ *
504
+ * @param {Array|NamedNodeMap} attrs
505
+ * @param {Object} options
506
+ * @return {Function}
507
+ */
508
+
509
+ function compileDirectives (attrs, options) {
510
+ var i = attrs.length
511
+ var dirs = []
512
+ var attr, name, value, dir, dirName, dirDef
513
+ while (i--) {
514
+ attr = attrs[i]
515
+ name = attr.name
516
+ value = attr.value
517
+ if (name.indexOf(config.prefix) === 0) {
518
+ dirName = name.slice(config.prefix.length)
519
+ dirDef = resolveAsset(options, 'directives', dirName)
520
+ if (process.env.NODE_ENV !== 'production') {
521
+ _.assertAsset(dirDef, 'directive', dirName)
522
+ }
523
+ if (dirDef) {
524
+ dirs.push({
525
+ name: dirName,
526
+ descriptors: dirParser.parse(value),
527
+ def: dirDef
528
+ })
529
+ }
530
+ } else if (config.interpolate) {
531
+ dir = collectAttrDirective(name, value, options)
532
+ if (dir) {
533
+ dirs.push(dir)
534
+ }
535
+ }
536
+ }
537
+ // sort by priority, LOW to HIGH
538
+ if (dirs.length) {
539
+ dirs.sort(directiveComparator)
540
+ return makeNodeLinkFn(dirs)
541
+ }
542
+ }
543
+
544
+ /**
545
+ * Build a link function for all directives on a single node.
546
+ *
547
+ * @param {Array} directives
548
+ * @return {Function} directivesLinkFn
549
+ */
550
+
551
+ function makeNodeLinkFn (directives) {
552
+ return function nodeLinkFn (vm, el, host) {
553
+ // reverse apply because it's sorted low to high
554
+ var i = directives.length
555
+ var dir, j, k
556
+ while (i--) {
557
+ dir = directives[i]
558
+ if (dir._link) {
559
+ // custom link fn
560
+ dir._link(vm, el)
561
+ } else {
562
+ k = dir.descriptors.length
563
+ for (j = 0; j < k; j++) {
564
+ vm._bindDir(dir.name, el,
565
+ dir.descriptors[j], dir.def, host)
566
+ }
567
+ }
568
+ }
569
+ }
570
+ }
571
+
572
+ /**
573
+ * Check an attribute for potential dynamic bindings,
574
+ * and return a directive object.
575
+ *
576
+ * Special case: class interpolations are translated into
577
+ * v-class instead v-attr, so that it can work with user
578
+ * provided v-class bindings.
579
+ *
580
+ * @param {String} name
581
+ * @param {String} value
582
+ * @param {Object} options
583
+ * @return {Object}
584
+ */
585
+
586
+ function collectAttrDirective (name, value, options) {
587
+ var tokens = textParser.parse(value)
588
+ var isClass = name === 'class'
589
+ if (tokens) {
590
+ var dirName = isClass ? 'class' : 'attr'
591
+ var def = options.directives[dirName]
592
+ var i = tokens.length
593
+ var allOneTime = true
594
+ while (i--) {
595
+ var token = tokens[i]
596
+ if (token.tag && !token.oneTime) {
597
+ allOneTime = false
598
+ }
599
+ }
600
+ return {
601
+ def: def,
602
+ _link: allOneTime
603
+ ? function (vm, el) {
604
+ el.setAttribute(name, vm.$interpolate(value))
605
+ }
606
+ : function (vm, el) {
607
+ var exp = textParser.tokensToExp(tokens, vm)
608
+ var desc = isClass
609
+ ? dirParser.parse(exp)[0]
610
+ : dirParser.parse(name + ':' + exp)[0]
611
+ if (isClass) {
612
+ desc._rawClass = value
613
+ }
614
+ vm._bindDir(dirName, el, desc, def)
615
+ }
616
+ }
617
+ }
618
+ }
619
+
620
+ /**
621
+ * Directive priority sort comparator
622
+ *
623
+ * @param {Object} a
624
+ * @param {Object} b
625
+ */
626
+
627
+ function directiveComparator (a, b) {
628
+ a = a.def.priority || 0
629
+ b = b.def.priority || 0
630
+ return a > b ? 1 : -1
631
+ }
@@ -0,0 +1,4 @@
1
+ var _ = require('../util')
2
+
3
+ _.extend(exports, require('./compile'))
4
+ _.extend(exports, require('./transclude'))