express_admin 1.1.0 → 1.2.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.
- checksums.yaml +4 -4
- data/Rakefile +3 -1
- data/app/assets/images/express_admin/appexpress_logo_dark.png +0 -0
- data/app/assets/javascripts/express_admin.js +1 -4
- data/app/assets/javascripts/express_admin/admin.js +0 -2
- data/app/assets/javascripts/express_admin/scrollTableBody.js +127 -0
- data/app/assets/stylesheets/express_admin.css +1 -1
- data/app/assets/stylesheets/express_admin/components/_main_menu.sass +5 -0
- data/app/assets/stylesheets/express_admin/components/_megadropdown.sass +0 -5
- data/app/assets/stylesheets/express_admin/components/_module_sidebar.sass +9 -0
- data/app/assets/stylesheets/express_admin/components/_pane.sass +9 -0
- data/app/assets/stylesheets/express_admin/components/_widget_box.sass +10 -0
- data/app/assets/stylesheets/express_admin/globals/_foundation_overrides.sass +612 -0
- data/app/assets/stylesheets/express_admin/globals/_mixins.sass +9 -0
- data/app/assets/stylesheets/express_admin/globals/_typography.sass +8 -16
- data/app/assets/stylesheets/express_admin/globals/_variables.sass +18 -12
- data/app/assets/stylesheets/express_admin/screen.sass +16 -9
- data/app/assets/stylesheets/express_admin/sections/_header.sass +8 -94
- data/app/assets/stylesheets/express_admin/sections/_main_content.sass +3 -61
- data/app/assets/stylesheets/express_admin/sections/_main_region.sass +9 -0
- data/app/assets/stylesheets/express_admin/sections/_page_body.sass +6 -0
- data/app/assets/stylesheets/express_admin/sections/_page_sidebar.sass +5 -0
- data/app/assets/stylesheets/express_admin/sections/_sidebar_region.sass +7 -0
- data/app/assets/stylesheets/express_admin/shared/_buttons.sass +2 -31
- data/app/assets/stylesheets/express_admin/shared/_forms.sass +3 -97
- data/app/assets/stylesheets/express_admin/shared/_layout_components.sass +60 -0
- data/app/assets/stylesheets/express_admin/shared/_messages.sass +1 -1
- data/app/assets/stylesheets/express_admin/shared/_tables.sass +12 -67
- data/app/assets/stylesheets/express_admin/shared/_trees.sass +27 -0
- data/app/components/express_admin/addon_sidebar_component.rb +5 -9
- data/app/components/express_admin/h_box.rb +16 -0
- data/app/components/express_admin/layout_component.rb +14 -0
- data/app/components/express_admin/main_region.rb +1 -1
- data/app/components/express_admin/pane.rb +37 -0
- data/app/components/express_admin/sidebar_region.rb +2 -4
- data/app/components/express_admin/smart_form.rb +63 -27
- data/app/components/express_admin/smart_table.rb +131 -41
- data/app/components/express_admin/v_box.rb +16 -0
- data/app/components/express_admin/widget_box.rb +2 -2
- data/app/helpers/express_admin/admin_helper.rb +14 -9
- data/app/views/layouts/express_admin/admin.html.et +7 -11
- data/app/views/shared/express_admin/_navigation_bar.html.et +17 -13
- data/app/views/shared/express_admin/_navigation_bar_profile.html.et +0 -2
- data/app/views/shared/express_admin/_title.html.et +6 -8
- data/lib/express_admin/engine.rb +1 -1
- data/lib/express_admin/menu.rb +7 -2
- data/lib/express_admin/version.rb +1 -1
- data/lib/generators/express_admin/install/install_generator.rb +4 -4
- data/lib/generators/express_admin/install/templates/controllers/admin_controller.rb.erb +1 -1
- data/lib/generators/express_admin/scaffold/scaffold_generator.rb +10 -2
- data/lib/generators/express_admin/scaffold/templates/index.html.et.erb +1 -1
- data/test/dummy/app/controllers/admin/categories_controller.rb +12 -0
- data/test/dummy/app/controllers/admin/widgets_controller.rb +12 -0
- data/test/dummy/app/models/category.rb +3 -0
- data/test/dummy/app/models/tag.rb +4 -0
- data/test/dummy/app/models/widget.rb +7 -0
- data/test/dummy/app/models/widget_tag.rb +4 -0
- data/test/dummy/app/views/admin/categories/index.html.et +10 -0
- data/test/dummy/app/views/admin/widgets/index.html.et +10 -0
- data/test/dummy/config/routes.rb +5 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20150525221206_create_widgets.rb +15 -0
- data/test/dummy/db/migrate/20150525221228_create_categories.rb +9 -0
- data/test/dummy/db/migrate/20150610081108_create_tags.rb +7 -0
- data/test/dummy/db/migrate/20150610081204_create_widget_tags.rb +8 -0
- data/test/dummy/db/schema.rb +26 -5
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +35 -0
- data/test/dummy/log/test.log +33428 -0
- data/test/dummy/test/components/smart_form_test.rb +93 -0
- data/test/dummy/test/components/smart_table_test.rb +137 -0
- data/test/dummy/test/fixtures/categories.yml +8 -0
- data/test/dummy/test/fixtures/tags.yml +14 -0
- data/test/dummy/test/fixtures/widget_tags.yml +10 -0
- data/test/dummy/test/fixtures/widgets.yml +20 -0
- data/test/dummy/test/models/category_test.rb +13 -0
- data/test/dummy/test/models/tag_test.rb +13 -0
- data/test/dummy/test/models/widget_tag_test.rb +13 -0
- data/test/dummy/test/models/widget_test.rb +13 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0fNukwCUjSC_GRsVIMtSMVdZkd5bq5eShMcGCrCVolc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1c4REJHKdQH9bwZhZ7Ixshmy_1jAzXc3-9OiDCDyRlk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1rKHSaJsgLcnfIJRWYdYy7IimMCKcdI-I_ABekUargk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2kMk5s4FKAOWE1z_MvFIKHmdvNDzyoknoi39xL7KwJw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2oGeKB_QtwWpX3sJNHocsJiBZT60x_cwV_nSGh_HS-A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2rQDWRzFxOlBnczJ1BLfE2yCPVvrhgLGfAI7VSM54wk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3S9nnUmEIG4-hDY6cVc82GFUUWicNxtpFfWwJAmJSkI.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4WErFdugnc8uWYwUE9vVfw4xxCgknECdpWhn8teZbLk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4a7epNa5R1jeKCtFsJKTdVqMEQm5p0clABRPIiKegMo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/57pjjkzReNE1L9yodewGebfd0AwnfQb33rtJjSTNpLc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/7vpDV8GyXVfyuFIkRrrkOwUXyIaCmf22tBPDpvhCUUc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Cpj6WyqdggDUkeQl_Ut3P9sUtPHPXXwkmZ92TfIJGJ8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DwepgSdLiEklsJWIJItEY_ZW-nOjjeHqcdQwBtu0mus.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FOJpwMQCx9V9wfhJQKFa2f7BjfP7vyS7M3o6VX0nAI0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GStmpiXE4g01i-UTlSKq8B9yS69WpAp0YH7vWyESBwI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/H53ZZ50FwJjYUOMH60F7cpINgkh9tOF4R3L6ANoH6tU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HY86Fwn8VPlIysY56uV-wu90bISxrXeiCtwDXg94Glg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IcNDN_pmsAcLAMv6CST75OwOucmYm3q2099jn4tB0H8.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JpdfSFVzivQn6TFSivlys3nV3VzD8cT0ET8uqbptxV4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KYe0_GIi-cNX0eRteBB0aixVATrVRo7Z3BaWFCgc7yg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LsiO4sLQfM0GvyEYhaC2E54rCurTkewg7YJX-sWBctI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NDViKg4-yspkY1tX9IQWnh1-LkiKqIohBqtRlYZZQcs.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OXsmreTQ3MNzGsrV1eEoW72VZQ52hQ0HiuTr0ImnqHA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PuMvTyv89E8wfRqbWNMhTH3PAE61uCCHgpEsgdOzMXQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Pvp8CVIKYjspNrgzEvgleujifrrdfATzWbwALDzQNE4.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PzcOUndLc-O-VBR2SDM2rFkiqh-iqknTEgEAXDLKfdc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QbX1HRM7KX85_PeVHcd6VJM6sqzUCWXEEYZX7CAG0eA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UDHqQKrYSSvXfCbiJjXzmJh2Q6T5hLO80aaPvs9n-74.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UFtISk01WwcjjWcPLyjeHX3bgBqZHGQcb0Z4KFNmduA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UWvG-0WgVYHVxrtLU32uumROQuSjJv_M_svW1B8YxhY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UruI7_ZpuzDnmNir9hzUa_r8oiuuIfVTco19ACdxwRw.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VQ2-2HlkGd1XVIHlwRGcgDsjto3oE-50-4E3HGdt8uU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VezioHwyk87G6TWkkYX88tBHC6QToVGOU5geZ54Ts5A.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WfQ-xKbnwqaKy-UQa8spczc9qocIL_jZE4cyRZftjfA.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XPpCqlT8yHTnQNHKRxjnilUBvAs6klpgWXneFU15U78.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XXTM8o6vkSxhxxm8P_orbeCZvxb8nMk7cjdwvUNL1io.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XyRQXY_oj8GLw9z8lj2dknGu45jbX5lK8ko7TePosPE.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YDMOayx363vI7odbkHMVI-_RxkOoVP2Hb7FX0mFVFE0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Z88gJS67lNABJgUB18JzXrnGkVbYfXQvjqm7mSJIv3o.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_k4X14Cc-2Y4gc47s7PaWtAaG_zcq1ICJInTYNp6bI4.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_kr_dP4VVnM8s8ZMdiNBSpuPqkQVx46FUdCTDH4XR70.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_y-BPEZTh3iXcaPJkcP9-krjw-V8LMhop4VGxUEUDsY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/afi__XQzjsqMT3svcCGlVD_YrHEWQZAEbJt4CgYaCkw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bdqS7lHa0nBN-mqdSomfMK-S6ct2TAn0z9kVzFBwQPM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/csH89NDps1_QU4E0p0HHZti2XLd_etKYDqM9cPsNpps.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ePtEu-AuU0iZ2J02ZafF9yOJVd8VVdV2KSheiJYlXzA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eTRff0YXBw-Tx9VEMxb-Es8NwqjHCXiaosBLxijl3I8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fRkrxaDYzRDIvxEUGZBFbW5ocAlmDQNg8_LRcOJJOzI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/goVFgqSk0CBOXpbwLNd-enc31BvXm1S8cMSJ3zbxRYI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hPH6lLkPX0EzSG_eBprMMUnmFs9y89AOarfyhGoAFGc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hgfrt0FmGrYD5SJVJhlsUPtL9usJvw3vZrW4dqQq16Y.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hiZg7FLw7SFa7S-BQ8CKWdAqFVUZy2HVb2chmQijM-g.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iKb8yzw0EdFpNkayUbc16U7olK7iwE2xIs_6b_xIEtI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iY03Ztj2YhBWadK8LHOKR3Hj1W7PLss0v85Q6Nj7E3Q.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ipLhCJrCCVwH7l_p1quUi2xS6POFlVHfZCqIymk8CoI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ipTot5AshDPhFtCBNfXROxutQlCrYkvsXsy3fcVT0Nw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/j5CxYBAeuD-bGDZUBh-pA0mEPCSVFDZsJm3x7QED4g0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jr4uhEONyFYm0QhfEOMqv05S-BeUP7gw1gQl3GIFyAI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kGO7_IQtBwpe93nSTKj6cCWGm0fZ_NoXltdw8E_74CQ.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/le9WohG3eSGbBMySdKkdvkHXW8yipO8w4iQZCCCQb3M.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mtmR_XlvnlYbOPmP1EkOj96q2Z5OQNv4HkeFj9DwEXQ.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nU1obIDVHUhN-3yRA6B9U5aO8wsd6zh1tyVtSROJewk.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oZ6SMNNft5SCbvNtWXkGQwKQPVwXoJRMV7VUJfWHc2k.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oygs10cGTBBo7Mj97CjFRTrSrFR7Qi3MnHNR_WQvIps.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p0Gnpai0VYzEsAXH_5t9huZ3dO0v6JKRH0PIH--q-XA.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pu9xM8T2O07hU3PafxbOLjg2vJxbbHE3qnIK9JHqVhA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qEHftZrJ-Da_nsvX4UOaALyIt0mwnOuE2TdtBPGAWEw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rtdpq5fxIYMKM43QyOIluEECg2NP5OA-7Zi8yuowZSI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ujFa5Hu76zd1O6nO2G7WcgnOWZyTOMKLajazyMXAL_I.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uovLHiJZBoVnD7CXYj2WZYmAbBcqGLQOzu4Voz5Fx8c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uyHm0KHsHpJhn-wv69exuuyU4kyJtW3DDQLP7tCD7e4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/v50nc5cuqpLxjepk7XsBmomcmFARYlHQRtq8yOv8AY0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vAh5eTPxI929yxRCyXgbKTWat5cZiVSOyX0UeTveXGE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vKiuNu1fQitE151bh0Tr2Ufkc80jWzchPjxaHkpjQL8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x-3lyh5i4qS-Q9E3X2uj2LthTOxsndFTrFXBsPPo6hI.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x3xQgAyjbrGTXy2FX2UzGG77agJgt_xsyNBuofrvY_E.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xQqBwKYWFPxZm5tidxsRKk23Z3q-OLRmKQUlMjRev_c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yZNo-6dzWGUNCJDnmqm7X5YB5FOxjYp_l8aKS6KaZOg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zV58Nou0R2EJG875wLND6wF9ES4diVi1fP7B_B6eCzw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zxPFYKpkfNJtui1ekitdNMaGAo39fefm-oJCnILEEQ8.cache +1 -0
- data/test/fixtures/widgets.yml +20 -0
- data/test/lib/express_admin/menu_test.rb +1 -1
- data/test/{fixtures/express_admin → support}/test_menu.yml +0 -0
- data/test/test_helper.rb +25 -5
- data/vendor/gems/express_templates/Gemfile +16 -0
- data/vendor/gems/express_templates/Gemfile.lock +153 -0
- data/vendor/gems/express_templates/LICENSE +21 -0
- data/vendor/gems/express_templates/README.md +152 -0
- data/vendor/gems/express_templates/Rakefile +32 -0
- data/vendor/gems/express_templates/diagrams/diagram.graffle +2404 -0
- data/vendor/gems/express_templates/diagrams/diagram_express_templates.png +0 -0
- data/vendor/gems/express_templates/diagrams/diagram_haml_erb.png +0 -0
- data/vendor/gems/express_templates/express_templates-0.5.0.gem +0 -0
- data/vendor/gems/express_templates/express_templates.gemspec +29 -0
- data/vendor/gems/express_templates/lib/core_extensions/proc.rb +90 -0
- data/vendor/gems/express_templates/lib/core_extensions/string.rb +25 -0
- data/vendor/gems/express_templates/lib/express_templates.rb +19 -0
- data/vendor/gems/express_templates/lib/express_templates/compiler.rb +36 -0
- data/vendor/gems/express_templates/lib/express_templates/components.rb +18 -0
- data/vendor/gems/express_templates/lib/express_templates/components/base.rb +54 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/adoptable.rb +20 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/building.rb +14 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/conditionality.rb +54 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/configurable.rb +90 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/iterating.rb +75 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/parenting.rb +72 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/rendering.rb +30 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/resourceful.rb +135 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/templating.rb +198 -0
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/wrapping.rb +84 -0
- data/vendor/gems/express_templates/lib/express_templates/components/column.rb +13 -0
- data/vendor/gems/express_templates/lib/express_templates/components/container.rb +7 -0
- data/vendor/gems/express_templates/lib/express_templates/components/content_for.rb +42 -0
- data/vendor/gems/express_templates/lib/express_templates/components/for_each.rb +30 -0
- data/vendor/gems/express_templates/lib/express_templates/components/form_rails_support.rb +22 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms.rb +17 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/basic_fields.rb +53 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/checkbox.rb +37 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb +57 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/form_component.rb +64 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/form_support.rb +13 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/option_support.rb +65 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/radio.rb +84 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/select.rb +105 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/select_collection.rb +57 -0
- data/vendor/gems/express_templates/lib/express_templates/components/forms/submit.rb +26 -0
- data/vendor/gems/express_templates/lib/express_templates/components/null_wrap.rb +41 -0
- data/vendor/gems/express_templates/lib/express_templates/components/row.rb +28 -0
- data/vendor/gems/express_templates/lib/express_templates/components/table_for.rb +163 -0
- data/vendor/gems/express_templates/lib/express_templates/components/tree_for.rb +86 -0
- data/vendor/gems/express_templates/lib/express_templates/components/unless_block.rb +40 -0
- data/vendor/gems/express_templates/lib/express_templates/expander.rb +140 -0
- data/vendor/gems/express_templates/lib/express_templates/indenter.rb +47 -0
- data/vendor/gems/express_templates/lib/express_templates/interpolator.rb +36 -0
- data/vendor/gems/express_templates/lib/express_templates/macro.rb +45 -0
- data/vendor/gems/express_templates/lib/express_templates/markup.rb +9 -0
- data/vendor/gems/express_templates/lib/express_templates/markup/html_tag.rb +62 -0
- data/vendor/gems/express_templates/lib/express_templates/markup/tag.rb +150 -0
- data/vendor/gems/express_templates/lib/express_templates/markup/wrapper.rb +94 -0
- data/vendor/gems/express_templates/lib/express_templates/markup/yielder.rb +21 -0
- data/vendor/gems/express_templates/lib/express_templates/renderer.rb +11 -0
- data/vendor/gems/express_templates/lib/express_templates/template/handler.rb +15 -0
- data/vendor/gems/express_templates/lib/express_templates/version.rb +3 -0
- data/vendor/gems/express_templates/lib/tasks/express_templates.rake +4 -0
- data/vendor/gems/express_templates/test/compiler_test.rb +9 -0
- data/vendor/gems/express_templates/test/components/base_test.rb +44 -0
- data/vendor/gems/express_templates/test/components/capabilities/resourceful_test.rb +63 -0
- data/vendor/gems/express_templates/test/components/column_test.rb +11 -0
- data/vendor/gems/express_templates/test/components/conditionality_test.rb +37 -0
- data/vendor/gems/express_templates/test/components/configurable_test.rb +43 -0
- data/vendor/gems/express_templates/test/components/container_test.rb +66 -0
- data/vendor/gems/express_templates/test/components/content_for_test.rb +60 -0
- data/vendor/gems/express_templates/test/components/forms/basic_fields_test.rb +52 -0
- data/vendor/gems/express_templates/test/components/forms/checkbox_test.rb +44 -0
- data/vendor/gems/express_templates/test/components/forms/express_form_test.rb +108 -0
- data/vendor/gems/express_templates/test/components/forms/radio_test.rb +96 -0
- data/vendor/gems/express_templates/test/components/forms/select_test.rb +146 -0
- data/vendor/gems/express_templates/test/components/forms/submit_test.rb +12 -0
- data/vendor/gems/express_templates/test/components/iterating_test.rb +127 -0
- data/vendor/gems/express_templates/test/components/null_wrap_test.rb +28 -0
- data/vendor/gems/express_templates/test/components/row_test.rb +16 -0
- data/vendor/gems/express_templates/test/components/table_for_test.rb +211 -0
- data/vendor/gems/express_templates/test/components/tree_for_test.rb +103 -0
- data/vendor/gems/express_templates/test/core_extensions/proc_test.rb +71 -0
- data/vendor/gems/express_templates/test/core_extensions/string_test.rb +20 -0
- data/vendor/gems/express_templates/test/dummy/Rakefile +6 -0
- data/vendor/gems/express_templates/test/dummy/app/assets/javascripts/application.js +13 -0
- data/vendor/gems/express_templates/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/vendor/gems/express_templates/test/dummy/app/controllers/application_controller.rb +5 -0
- data/vendor/gems/express_templates/test/dummy/app/controllers/hello_controller.rb +5 -0
- data/vendor/gems/express_templates/test/dummy/app/helpers/application_helper.rb +2 -0
- data/vendor/gems/express_templates/test/dummy/app/views/hello/show.html.et +5 -0
- data/vendor/gems/express_templates/test/dummy/app/views/layouts/application.html.et +15 -0
- data/vendor/gems/express_templates/test/dummy/bin/bundle +3 -0
- data/vendor/gems/express_templates/test/dummy/bin/rails +4 -0
- data/vendor/gems/express_templates/test/dummy/bin/rake +4 -0
- data/vendor/gems/express_templates/test/dummy/config.ru +4 -0
- data/vendor/gems/express_templates/test/dummy/config/application.rb +26 -0
- data/vendor/gems/express_templates/test/dummy/config/boot.rb +5 -0
- data/vendor/gems/express_templates/test/dummy/config/environment.rb +5 -0
- data/vendor/gems/express_templates/test/dummy/config/environments/development.rb +37 -0
- data/vendor/gems/express_templates/test/dummy/config/environments/production.rb +82 -0
- data/vendor/gems/express_templates/test/dummy/config/environments/test.rb +40 -0
- data/vendor/gems/express_templates/test/dummy/config/initializers/assets.rb +8 -0
- data/vendor/gems/express_templates/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/vendor/gems/express_templates/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/vendor/gems/express_templates/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/vendor/gems/express_templates/test/dummy/config/initializers/inflections.rb +16 -0
- data/vendor/gems/express_templates/test/dummy/config/initializers/mime_types.rb +4 -0
- data/vendor/gems/express_templates/test/dummy/config/initializers/session_store.rb +3 -0
- data/vendor/gems/express_templates/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/vendor/gems/express_templates/test/dummy/config/locales/en.yml +23 -0
- data/vendor/gems/express_templates/test/dummy/config/routes.rb +4 -0
- data/vendor/gems/express_templates/test/dummy/config/secrets.yml +22 -0
- data/vendor/gems/express_templates/test/dummy/log/test.log +15987 -0
- data/vendor/gems/express_templates/test/dummy/public/404.html +67 -0
- data/vendor/gems/express_templates/test/dummy/public/422.html +67 -0
- data/vendor/gems/express_templates/test/dummy/public/500.html +66 -0
- data/vendor/gems/express_templates/test/dummy/public/favicon.ico +0 -0
- data/vendor/gems/express_templates/test/dummy/test/controllers/hello_controller_test.rb +14 -0
- data/vendor/gems/express_templates/test/dummy/test/helpers/hello_helper_test.rb +4 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-1ax0k6FO5drSUN6jbogg4G0JliUHLffvQUvzSePKxA.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-cDLO4NJHMndDHchOLz8KLD7QBc68WtaAbYxK2r6GsU.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0t68EIwZ96sAqQSxFka9MQyIk4viw8ZIoREMCGiJRx0.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/28LzLLDYjhr3jmu0GxjZ-ms5Bol6JilDRXpg8Zgbjqs.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2zt1IbQCnmzGyeZS_I4sYQzrgneSCKIJBRxcffVHlWY.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5AeGDyXQbv_BTj3PD4MJpNnGVwUxLsA8H1VcwB69_wE.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/B0RgtiEmqwrCQuw4AnDa3fdENtJeBtO_TqtGJuWOeNs.cache +3 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/D-tMNp19G2zWOPPhnQRUm4K8DPa8SpKPfGALkkofTeE.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EDVlXrcn_wEfaZ5nc_4QJBT7lPiIBcX96jBo7PBz-vc.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Eso3tkb79hXQ1XdQgjbV03KyQwSeZFAHxVHImsjQ-HQ.cache +2 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/I8LhheC1OlOyvp_qY8kWpqKcZFiqv_BO-l5bExvDEi0.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Kf4VrP5sW-qzziYSN-m7p4nETjLiEwwwRfwUOm7rOr0.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Pd5YOD1DAL7QtTnwETZYBCabg5DkCFgbjt4iuBOcSoY.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QJ0Z8hROMfWpY6f5Chb7GSuDHE4gpabKVQTr9BCZe9s.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/T1pSAx767vY7X1UDN0vdF7YGEkI5wMSVUKopsdvp7kI.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VlSPFPDK05c7ImadRiRVKzsaa6e15RwX77QR3NYabME.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Y7_BbgB9jgJIWYjDCsASySd26DTfPADAu_3DDnLlFog.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bSfZQxeyghTF4WIVnzGavxlg9afmSNuqcW6bA1Bm1OA.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fvD_ZNFRzd8Sc4PoTjyHPnkg4f7WMietFunnKqNjlvc.cache +2 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/g2xQygPqA5kMmp5L3wVGWaUIhdVsxFmOel9FF6M0Fuw.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hKbgrf5CbMO8pe9fCHc-rI5mp1ejAhivBfvfDxBNhQA.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kaif59owjUr3HBharCH5GUxU6KoW_zXD9a9JiTjIYPY.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kpvKX5UlhhoLJv-faeq7Ibv2KQh4ROjTiarh13gHuWI.cache +2 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lfyrNtbNtwuTXAWlmPCKTS-D3FHoPTY6h53wnUN36-A.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lyDRhWNhfDw_YCCSbxQw_iOIV3eTfeAoX6mTREuVZSA.cache +3 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p17lC0HAHCtk1ds_NHl9xhEyMtRjfQInw1c6fmFWguc.cache +0 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p1cwnBd8RQBm9x5HzDmiiU7RhvnxhPX8VTfi0tTElJY.cache +3 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qT6_0ti_v6fAjS3wETXqvTkr6W0LP4PB942uLYQzWK8.cache +3 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qzU7DVwQZ7z6i6pYUpssYsAj0y33GN83B4O1bLvkW_4.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/r56eI1z7iFKeySym_9zw5hVOPjb0d6IQPn5pAYTKk04.cache +2 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rGWvoeLyiyqb813IXgfDpDxks23JQoLLZOa69bzKPE8.cache +1 -0
- data/vendor/gems/express_templates/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y8T65xpx0s3RgT_YiqWEEXIaBsgK4woCNSuZ1zjQZBk.cache +2 -0
- data/vendor/gems/express_templates/test/expander_stack_test.rb +41 -0
- data/vendor/gems/express_templates/test/expander_test.rb +99 -0
- data/vendor/gems/express_templates/test/express_templates_test.rb +19 -0
- data/vendor/gems/express_templates/test/handler_test.rb +122 -0
- data/vendor/gems/express_templates/test/indenter_test.rb +27 -0
- data/vendor/gems/express_templates/test/interpolator_test.rb +80 -0
- data/vendor/gems/express_templates/test/markup/tag_test.rb +149 -0
- data/vendor/gems/express_templates/test/markup/wrapper_test.rb +42 -0
- data/vendor/gems/express_templates/test/markup/yielder_test.rb +9 -0
- data/vendor/gems/express_templates/test/performance_test.rb +93 -0
- data/vendor/gems/express_templates/test/test_helper.rb +28 -0
- data/vendor/gems/foundation_apps_styles/Gemfile +4 -0
- data/vendor/gems/foundation_apps_styles/LICENSE.txt +21 -0
- data/vendor/gems/foundation_apps_styles/README.md +41 -0
- data/vendor/gems/foundation_apps_styles/Rakefile +13 -0
- data/vendor/gems/foundation_apps_styles/bin/console +14 -0
- data/vendor/gems/foundation_apps_styles/bin/setup +7 -0
- data/vendor/gems/foundation_apps_styles/foundation_apps_styles.gemspec +24 -0
- data/vendor/gems/foundation_apps_styles/lib/foundation_apps_styles.rb +6 -0
- data/vendor/gems/foundation_apps_styles/lib/foundation_apps_styles/version.rb +3 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/account.svg +44 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/action.svg +38 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/ban.svg +17 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/bell.svg +22 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/bookmark.svg +14 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/cart.svg +35 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/chevron.svg +28 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/circle-check.svg +25 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/circle-x.svg +25 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/cog.svg +17 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/comment-square.svg +14 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/dashboard.svg +38 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/document.svg +28 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/envelope.svg +44 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/flag.svg +24 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/home.svg +28 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/lock.svg +55 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/magnifying-glass.svg +26 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/person.svg +62 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/reload.svg +19 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/share-boxed.svg +17 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/star.svg +14 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/thumb.svg +38 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/iconic/zoom.svg +56 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/_global.scss +131 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/_includes.scss +33 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/_settings.scss +614 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_accordion.scss +72 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_action-sheet.scss +265 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_block-list.scss +360 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_button-group.scss +197 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_button.scss +205 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_card.scss +93 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_extras.scss +54 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_forms.scss +460 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_grid.scss +422 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_iconic.scss +95 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_label.scss +134 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_list.scss +19 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_menu-bar.scss +382 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_modal.scss +129 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_motion.scss +525 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_notification.scss +207 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_off-canvas.scss +169 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_panel.scss +134 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_popup.scss +68 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_switch.scss +134 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_tabs.scss +100 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_title-bar.scss +135 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_typography.scss +345 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/components/_utilities.scss +160 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/foundation-apps.css +6146 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/foundation.scss +50 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/helpers/_breakpoints.scss +154 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/helpers/_functions.scss +343 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/helpers/_images.scss +19 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/helpers/_mixins.scss +123 -0
- data/vendor/gems/foundation_apps_styles/vendor/assets/stylesheets/vendor/_normalize.scss +424 -0
- metadata +512 -36
- data/app/assets/stylesheets/express_admin/foundation_and_overrides.scss +0 -1443
- data/app/assets/stylesheets/express_admin/sections/_devise.sass +0 -42
- data/app/assets/stylesheets/express_admin/sections/_sidebar.sass +0 -42
- data/app/assets/stylesheets/express_admin/shared/_labels.sass +0 -16
- data/app/assets/stylesheets/express_admin/shared/_navigation.sass +0 -20
- data/lib/generators/express_admin/scaffold/templates/show.html.et.erb +0 -10
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
2
|
+
|
|
3
|
+
# Maintain your gem's version:
|
|
4
|
+
require "express_templates/version"
|
|
5
|
+
|
|
6
|
+
# Describe your gem and declare its dependencies:
|
|
7
|
+
Gem::Specification.new do |s|
|
|
8
|
+
s.name = "express_templates"
|
|
9
|
+
s.version = ExpressTemplates::VERSION
|
|
10
|
+
s.authors = ["Steven Talcott Smith", "Eumir Gaspar"]
|
|
11
|
+
s.email = ["steve@aelogica.com", "eumir@aelogica.com"]
|
|
12
|
+
s.homepage = "https://github.com/aelogica/express_templates"
|
|
13
|
+
s.summary = "Write HTML templates in declarative Ruby. Create reusable view components."
|
|
14
|
+
s.description = "Replace Erb/HAML/Slim with ExpressTemplates and write templates in a declartive style of Ruby. With ExpressTemplates you may easily create a library of components for use across projects."
|
|
15
|
+
s.license = "MIT"
|
|
16
|
+
|
|
17
|
+
s.files = Dir["{app,config,db,lib}/**/*", "LICENSE", "Rakefile", "README.md"]
|
|
18
|
+
s.test_files = Dir["test/**/*"]
|
|
19
|
+
|
|
20
|
+
s.add_dependency "activesupport", "~> 4.2" # strictly speaking we only depend on active support
|
|
21
|
+
s.add_dependency "parslet", "~> 1.6"
|
|
22
|
+
s.add_development_dependency "rails", "~> 4.2"
|
|
23
|
+
s.add_development_dependency "pry", "~> 0"
|
|
24
|
+
s.add_development_dependency "erubis", "~> 2.7"
|
|
25
|
+
s.add_development_dependency "haml", "~> 4.0"
|
|
26
|
+
s.add_development_dependency "better_errors", "~> 2.0"
|
|
27
|
+
s.add_development_dependency "binding_of_caller", "~> 0.7"
|
|
28
|
+
s.add_development_dependency "pry-stack_explorer", "~> 0.4"
|
|
29
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
require 'ripper'
|
|
2
|
+
require 'pp'
|
|
3
|
+
class Proc
|
|
4
|
+
|
|
5
|
+
TLAMBEG = [:on_tlambeg, "{"]
|
|
6
|
+
TLAMBDA = [:on_tlambda, "->"]
|
|
7
|
+
LBRACE = [:on_lbrace, '{']
|
|
8
|
+
|
|
9
|
+
TOKEN_PAIRS = {LBRACE => [:on_rbrace, '}'],
|
|
10
|
+
[:on_kw, 'do'] => [:on_kw, 'end'],
|
|
11
|
+
TLAMBDA => [:on_rbrace, '}']}
|
|
12
|
+
|
|
13
|
+
# Make a best effort to provide the original source for a block
|
|
14
|
+
# based on extracting a string from the file identified in
|
|
15
|
+
# Proc#source_location using Ruby's tokenizer.
|
|
16
|
+
#
|
|
17
|
+
# This works for first block declared on a line in a source
|
|
18
|
+
# file. If additional blocks are specified inside the first block
|
|
19
|
+
# on the same line as the start of the block, only the outer-most
|
|
20
|
+
# block declaration will be identified as a the block we want.
|
|
21
|
+
#
|
|
22
|
+
# If you require only the source of blocks-within-other-blocks, start them
|
|
23
|
+
# on a new line as would be best practice for clarity and readability.
|
|
24
|
+
def source
|
|
25
|
+
@source ||= begin
|
|
26
|
+
file, line_no = source_location
|
|
27
|
+
raise "no line number provided for source_location: #{self}" if line_no.nil?
|
|
28
|
+
tokens = Ripper.lex File.read(file)
|
|
29
|
+
tokens_on_line = tokens.select {|pos, lbl, str| pos[0].eql?(line_no) }
|
|
30
|
+
starting_token = tokens_on_line.detect do |pos, lbl, str|
|
|
31
|
+
TOKEN_PAIRS.keys.include? [lbl, str]
|
|
32
|
+
end
|
|
33
|
+
starting_token_type = [starting_token[1], starting_token[2]]
|
|
34
|
+
ending_token_type = TOKEN_PAIRS[starting_token_type]
|
|
35
|
+
source_str = ""
|
|
36
|
+
remaining_tokens = tokens[tokens.index(starting_token)..-1]
|
|
37
|
+
nesting = -1
|
|
38
|
+
starting_nesting_token_types = if [TLAMBDA, LBRACE].include?(starting_token_type)
|
|
39
|
+
[TLAMBDA, LBRACE]
|
|
40
|
+
else
|
|
41
|
+
[starting_token_type]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
while token = remaining_tokens.shift
|
|
45
|
+
token = [token[1], token[2]] # strip position
|
|
46
|
+
source_str << token[1]
|
|
47
|
+
nesting += 1 if starting_nesting_token_types.include? token
|
|
48
|
+
is_ending_token = token.eql?(ending_token_type)
|
|
49
|
+
break if is_ending_token && nesting.eql?(0)
|
|
50
|
+
nesting -= 1 if is_ending_token
|
|
51
|
+
end
|
|
52
|
+
source_str
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Examines the source of a proc to extract the body by
|
|
57
|
+
# removing the outermost block delimiters and any surrounding.
|
|
58
|
+
# whitespace.
|
|
59
|
+
#
|
|
60
|
+
# Raises exception if the block takes arguments.
|
|
61
|
+
#
|
|
62
|
+
def source_body
|
|
63
|
+
raise "Cannot extract proc body on non-zero arity" unless arity.eql?(0)
|
|
64
|
+
tokens = Ripper.lex source
|
|
65
|
+
body_start_idx = 2
|
|
66
|
+
body_end_idx = -1
|
|
67
|
+
if tokens[0][1].eql?(:on_tlambda)
|
|
68
|
+
body_start_idx = tokens.index(tokens.detect { |t| t[1].eql?(:on_tlambeg) }) + 1
|
|
69
|
+
end
|
|
70
|
+
body_tokens = tokens[body_start_idx..-1]
|
|
71
|
+
|
|
72
|
+
body_tokens.pop # ending token of proc
|
|
73
|
+
# remove trailing whitespace
|
|
74
|
+
whitespace = [:on_sp, :on_nl, :on_ignored_nl]
|
|
75
|
+
body_tokens.pop while whitespace.include?(body_tokens[-1][1])
|
|
76
|
+
# remove leading whitespace
|
|
77
|
+
body_tokens.shift while whitespace.include?(body_tokens[0][1])
|
|
78
|
+
|
|
79
|
+
# put them back together
|
|
80
|
+
body_tokens.map {|token| token[2] }.join
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def self.from_source(prc_src)
|
|
84
|
+
raise ArgumentError unless prc_src.kind_of?(String)
|
|
85
|
+
prc = eval(prc_src)
|
|
86
|
+
prc.instance_variable_set(:@source, prc_src)
|
|
87
|
+
prc
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# We use Hash#inspect in ExpressTemplates::Markup::Wrapper to reproduce arguments
|
|
2
|
+
# to helpers in the Rails view.
|
|
3
|
+
#
|
|
4
|
+
# Hash#inspect calls #inspect on values and keys. This allows us to
|
|
5
|
+
# place the resulting string into the view code with a simple substitution
|
|
6
|
+
# or concatenation.
|
|
7
|
+
#
|
|
8
|
+
# In special cases, however, we might want the argument or one of its keys
|
|
9
|
+
# or values to be the result of evaluating of a ruby expression in the view
|
|
10
|
+
# that does not itself return a String. The result of #inspect
|
|
11
|
+
# is normally a quoted and escaped string which would evaluate to a string
|
|
12
|
+
# in the view. What we want is a simple string of code. Here we provide
|
|
13
|
+
# a method that overrides #inspect in the strings eigenclass to strip off
|
|
14
|
+
# enclosing quotes or unwanted escapes. It shouldn't bother anybody and
|
|
15
|
+
# it keeps us from doing messy things elsewhere for now.
|
|
16
|
+
class String
|
|
17
|
+
def to_view_code
|
|
18
|
+
class << self
|
|
19
|
+
def inspect
|
|
20
|
+
super.gsub(/^"(.*)"$/,'\1')
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
return self
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module ExpressTemplates
|
|
2
|
+
require 'core_extensions/proc'
|
|
3
|
+
require 'core_extensions/string'
|
|
4
|
+
require 'express_templates/indenter'
|
|
5
|
+
require 'express_templates/macro'
|
|
6
|
+
require 'express_templates/markup'
|
|
7
|
+
require 'express_templates/components'
|
|
8
|
+
require 'express_templates/template/handler'
|
|
9
|
+
require 'express_templates/renderer'
|
|
10
|
+
require 'express_templates/expander'
|
|
11
|
+
require 'express_templates/compiler'
|
|
12
|
+
require 'express_templates/interpolator'
|
|
13
|
+
extend Renderer
|
|
14
|
+
extend Compiler
|
|
15
|
+
if defined?(Rails)
|
|
16
|
+
::ActionView::Template.register_template_handler :et, ExpressTemplates::Template::Handler
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module ExpressTemplates
|
|
2
|
+
module Compiler
|
|
3
|
+
def compile(template_or_src=nil, &block)
|
|
4
|
+
|
|
5
|
+
if block
|
|
6
|
+
begin
|
|
7
|
+
block.source
|
|
8
|
+
rescue
|
|
9
|
+
raise "block must have source - did you do compile(&:label) ?"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
template, src = _normalize(template_or_src)
|
|
14
|
+
|
|
15
|
+
expander = Expander.new(template)
|
|
16
|
+
|
|
17
|
+
compiled = expander.expand(src, &block).map(&:compile)
|
|
18
|
+
|
|
19
|
+
return Interpolator.transform(compiled.join("+").gsub('"+"', '')).tap do |s|
|
|
20
|
+
puts("\n"+template.inspect+"\nSource:\n#{template.try(:source)}\nInterpolated:\n#{s}\n") if ENV['DEBUG'].eql?('true')
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
def _normalize(template_or_src)
|
|
26
|
+
template, src = nil, nil
|
|
27
|
+
if template_or_src.respond_to?(:source)
|
|
28
|
+
template = template_or_src
|
|
29
|
+
src = template_or_src.source
|
|
30
|
+
else
|
|
31
|
+
src = template_or_src
|
|
32
|
+
end
|
|
33
|
+
return template, src
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module ExpressTemplates
|
|
2
|
+
module Components
|
|
3
|
+
end
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
require 'express_templates/expander'
|
|
7
|
+
require 'express_templates/components/base'
|
|
8
|
+
require 'express_templates/components/container'
|
|
9
|
+
require 'express_templates/components/null_wrap'
|
|
10
|
+
require 'express_templates/components/for_each'
|
|
11
|
+
require 'express_templates/components/unless_block'
|
|
12
|
+
require 'express_templates/components/row'
|
|
13
|
+
require 'express_templates/components/column'
|
|
14
|
+
require 'express_templates/components/form_rails_support'
|
|
15
|
+
require 'express_templates/components/content_for'
|
|
16
|
+
require 'express_templates/components/table_for'
|
|
17
|
+
require 'express_templates/components/tree_for'
|
|
18
|
+
require 'express_templates/components/forms'
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
capabilities = Dir.glob(File.join(File.dirname(__FILE__), 'capabilities', '*.rb'))
|
|
2
|
+
capabilities.each {|capability| require capability}
|
|
3
|
+
|
|
4
|
+
module ExpressTemplates
|
|
5
|
+
# Components provide self-contained reusable view code meant to be shared
|
|
6
|
+
# within a project or across many projects through a library of components
|
|
7
|
+
#
|
|
8
|
+
# Components gain their functionality through inclusion of Capabilities.
|
|
9
|
+
#
|
|
10
|
+
# Most Components are descendents of Components::Base.
|
|
11
|
+
#
|
|
12
|
+
module Components
|
|
13
|
+
|
|
14
|
+
# Components::Base is the base class for ExpressTemplates view components.
|
|
15
|
+
#
|
|
16
|
+
# View components are available as macros in ExpressTemplates and may be
|
|
17
|
+
# used to encapsulate common view patterns, behavior and functionality in
|
|
18
|
+
# reusable classes that can be shared within and across projects.
|
|
19
|
+
#
|
|
20
|
+
# Components intended to provide a base framework for a library of reusable
|
|
21
|
+
# components to cut development time across a multitude of projects.
|
|
22
|
+
#
|
|
23
|
+
# Components gain their functionality through including Capabilities.
|
|
24
|
+
#
|
|
25
|
+
# Example capabilities include:
|
|
26
|
+
#
|
|
27
|
+
# * Managing related ExpressTemplate fragments
|
|
28
|
+
# * Compiling template fragments for evaluation in a View Context
|
|
29
|
+
# * Specifying rendering logic to be executed in the View Context
|
|
30
|
+
# * Potentially referencing external assets that may be required
|
|
31
|
+
# for the component to work.
|
|
32
|
+
#
|
|
33
|
+
# Components::Base includes the following capabilities:
|
|
34
|
+
#
|
|
35
|
+
# * Capabilities::Templating
|
|
36
|
+
# * Capabilities::Rendering
|
|
37
|
+
# * Capabilities::Wrapping
|
|
38
|
+
# * Capabilities::Iterating
|
|
39
|
+
#
|
|
40
|
+
class Base < Expander
|
|
41
|
+
include ExpressTemplates::Macro
|
|
42
|
+
include Capabilities::Templating
|
|
43
|
+
include Capabilities::Rendering
|
|
44
|
+
include Capabilities::Wrapping
|
|
45
|
+
include Capabilities::Iterating
|
|
46
|
+
|
|
47
|
+
def self.inherited(klass)
|
|
48
|
+
ExpressTemplates::Expander.register_macros_for klass
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module ExpressTemplates
|
|
2
|
+
module Components
|
|
3
|
+
module Capabilities
|
|
4
|
+
module Adoptable
|
|
5
|
+
# Adoptable adds the capability for a child to refer
|
|
6
|
+
# to its parent. This is used by more complex
|
|
7
|
+
# components which are intended to work together
|
|
8
|
+
# such as form components where form elements may need
|
|
9
|
+
# to use information known only to the parent.
|
|
10
|
+
|
|
11
|
+
def self.included(base)
|
|
12
|
+
base.class_eval do
|
|
13
|
+
attr_accessor :parent
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module ExpressTemplates
|
|
2
|
+
module Components
|
|
3
|
+
module Capabilities
|
|
4
|
+
module Building
|
|
5
|
+
# commented this out because it's intercepting calls to rails helpers
|
|
6
|
+
# TODO: fix this... I think the whole buiding approach is broken.
|
|
7
|
+
# this class is empty and should probably go away.
|
|
8
|
+
# def method_missing(name, *args)
|
|
9
|
+
# raise "#{self.class.to_s} has no method '#{name}'"
|
|
10
|
+
# end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
data/vendor/gems/express_templates/lib/express_templates/components/capabilities/conditionality.rb
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module ExpressTemplates
|
|
2
|
+
module Components
|
|
3
|
+
module Capabilities
|
|
4
|
+
# Adds the capability for a component to only render
|
|
5
|
+
# its markup when a condition to be evaluated in the
|
|
6
|
+
# view is true.
|
|
7
|
+
#
|
|
8
|
+
# Example:
|
|
9
|
+
#
|
|
10
|
+
# class PageHeader < ExpressTemplates::Components::Base
|
|
11
|
+
# include ExpressTemplates::Components::Capabilities::Conditionality
|
|
12
|
+
#
|
|
13
|
+
# emits {
|
|
14
|
+
# h1 { content_for(:page_header) }
|
|
15
|
+
# }
|
|
16
|
+
#
|
|
17
|
+
# only_if -> { content_for?(:page_header) }
|
|
18
|
+
#
|
|
19
|
+
# end
|
|
20
|
+
# end
|
|
21
|
+
#
|
|
22
|
+
# The condition supplied to only if in the form of a proc
|
|
23
|
+
# is evaluated in the view context.
|
|
24
|
+
#
|
|
25
|
+
# The component will render an empty string if the proc returns false.
|
|
26
|
+
module Conditionality
|
|
27
|
+
def self.included(base)
|
|
28
|
+
base.class_eval do
|
|
29
|
+
extend ClassMethods
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
module ClassMethods
|
|
34
|
+
|
|
35
|
+
def condition_proc
|
|
36
|
+
@condition_proc
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def only_if condition_proc
|
|
40
|
+
@condition_proc = Proc.from_source "-> {!(#{condition_proc.source_body})}"
|
|
41
|
+
inner_src = self[:markup]
|
|
42
|
+
fragment_src = %Q(-> {
|
|
43
|
+
unless_block(Proc.from_source(#{@condition_proc.source.inspect})) {
|
|
44
|
+
#{inner_src.source_body}
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
_store :markup, Proc.from_source(fragment_src)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
data/vendor/gems/express_templates/lib/express_templates/components/capabilities/configurable.rb
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
module ExpressTemplates
|
|
2
|
+
module Components
|
|
3
|
+
module Capabilities
|
|
4
|
+
|
|
5
|
+
# Configurable components accept options which they can use to alter
|
|
6
|
+
# their markup each time they are invoked within a template.
|
|
7
|
+
#
|
|
8
|
+
# They do not compile their markup fragments at load time as simpler
|
|
9
|
+
# components do for efficiency. Rather they compile their fragments
|
|
10
|
+
# when they are themselves undergoing compilation. This facilitates
|
|
11
|
+
# access to arguments which were passed to the component at initialization.
|
|
12
|
+
#
|
|
13
|
+
# For example, if we have a Row component that is Configurable:
|
|
14
|
+
#
|
|
15
|
+
# row(:main)
|
|
16
|
+
#
|
|
17
|
+
# might process to:
|
|
18
|
+
#
|
|
19
|
+
# <div id="main" class="row" />
|
|
20
|
+
#
|
|
21
|
+
|
|
22
|
+
module Configurable
|
|
23
|
+
def self.included(base)
|
|
24
|
+
base.class_eval do
|
|
25
|
+
extend ClassMethods
|
|
26
|
+
include InstanceMethods
|
|
27
|
+
|
|
28
|
+
# Stores arguments for later processing, eg., compile time
|
|
29
|
+
def initialize(*args)
|
|
30
|
+
@args = args.dup
|
|
31
|
+
_process_args!(args)
|
|
32
|
+
super(*args)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
module ClassMethods
|
|
38
|
+
|
|
39
|
+
protected
|
|
40
|
+
|
|
41
|
+
# Override Templating._compile_fragment to delay compilation
|
|
42
|
+
def _compile_fragment(block, options = {})
|
|
43
|
+
if options.delete(:force_compile)
|
|
44
|
+
super(block, options)
|
|
45
|
+
else
|
|
46
|
+
block
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def _lookup(name, options = {})
|
|
51
|
+
super(name, options.merge(force_compile: true))
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
module InstanceMethods
|
|
57
|
+
|
|
58
|
+
def config
|
|
59
|
+
@config ||= {}
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
alias :my :config
|
|
63
|
+
|
|
64
|
+
def expand_locals
|
|
65
|
+
{my: config}
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Override Templating#lookup to pass locals
|
|
69
|
+
def lookup(fragment_name, options = {})
|
|
70
|
+
super(fragment_name, options.merge(expand_locals))
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
private
|
|
75
|
+
|
|
76
|
+
def _process_args!(args)
|
|
77
|
+
if args.first.kind_of?(Symbol)
|
|
78
|
+
config.merge!(id: args.shift)
|
|
79
|
+
end
|
|
80
|
+
while arg = args.shift
|
|
81
|
+
if arg.kind_of?(Hash)
|
|
82
|
+
config.merge!(arg)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|