express_admin 1.2.1 → 1.3.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/app/assets/javascripts/express_admin.js +2 -0
- data/app/assets/javascripts/express_admin/admin.js +2 -0
- data/app/assets/stylesheets/express_admin.css +0 -5
- data/app/assets/stylesheets/express_admin/components/_definition.sass +8 -0
- data/app/assets/stylesheets/express_admin/components/_pane.sass +2 -2
- data/app/assets/stylesheets/express_admin/components/_sub_menu.sass +2 -2
- data/app/assets/stylesheets/express_admin/components/_widget_box.sass +4 -4
- data/app/assets/stylesheets/express_admin/globals/_foundation_overrides.sass +2 -1
- data/app/assets/stylesheets/express_admin/globals/_mixins.sass +0 -2
- data/app/assets/stylesheets/express_admin/plugins/_select2.sass +475 -68
- data/app/assets/stylesheets/express_admin/plugins/_tinymce.sass +2 -0
- data/app/assets/stylesheets/express_admin/screen.sass +6 -1
- data/app/assets/stylesheets/express_admin/sections/_header.sass +1 -0
- data/app/assets/stylesheets/express_admin/sections/_main_content.sass +6 -2
- data/app/assets/stylesheets/express_admin/sections/_main_region.sass +10 -7
- data/app/assets/stylesheets/express_admin/sections/_page_body.sass +6 -3
- data/app/assets/stylesheets/express_admin/sections/_page_sidebar.sass +6 -2
- data/app/assets/stylesheets/express_admin/sections/_sidebar_region.sass +4 -3
- data/app/assets/stylesheets/express_admin/shared/_buttons.sass +0 -1
- data/app/assets/stylesheets/express_admin/shared/_forms.sass +14 -2
- data/app/assets/stylesheets/express_admin/shared/_trees.sass +7 -3
- data/app/assets/stylesheets/ionicons/{ionicons.css.sass → ionicons.sass} +0 -0
- data/app/components/express_admin/addon_sidebar_component.rb +23 -34
- data/app/components/express_admin/definition_list.rb +38 -0
- data/app/components/express_admin/definition_table.rb +51 -0
- data/app/components/express_admin/flash_message_component.rb +5 -11
- data/app/components/express_admin/layout_component.rb +2 -9
- data/app/components/express_admin/main_region.rb +4 -4
- data/app/components/express_admin/mega_menu_component.rb +40 -34
- data/app/components/express_admin/page_header_component.rb +8 -18
- data/app/components/express_admin/pane.rb +13 -10
- data/app/components/express_admin/setting_form.rb +23 -20
- data/app/components/express_admin/sidebar_region.rb +6 -4
- data/app/components/express_admin/smart_form.rb +21 -18
- data/app/components/express_admin/smart_table.rb +44 -40
- data/app/components/express_admin/widget_box.rb +8 -8
- data/app/helpers/express_admin/admin_helper.rb +1 -1
- data/app/views/devise/sessions/new.html.et +63 -0
- data/app/views/layouts/express_admin/admin.html.et +8 -9
- data/app/views/shared/express_admin/_navigation_bar.html.et +6 -5
- data/config/tinymce.yml +29 -0
- data/lib/core_extensions/string_promptify.rb +9 -0
- data/lib/express_admin.rb +1 -0
- data/lib/express_admin/engine.rb +11 -9
- data/lib/express_admin/version.rb +1 -1
- data/lib/generators/express_admin/install/install_generator.rb +7 -0
- data/lib/generators/express_admin/install/templates/views/devise/sessions/new.html.et +1 -0
- data/test/dummy/app/views/demo/sign_in.html.et +6 -6
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +11361 -0
- data/test/dummy/test/components/smart_form_test.rb +57 -34
- data/test/dummy/test/components/smart_table_test.rb +35 -35
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1EoyfDwFVtgMAOjo7HPkor8TQbVaioOFx9hildx_DTQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4OPIkynisipUm8vKo57HUhBMWFSHBno_IH6OdpK29IA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4hK1AdPGHbXGkebvk-nSvhxtCdOSlMYNWvA43CvQKhI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6c0H20s6oHf45XogeDELaojxa0PX1NmirTTWV1ClcRw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9QvwPXfTSVmgQX6tdK9GuCn0--MZ8Z8eJJbHpUEq1p8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BoKdGhgi5NHfGTc42p9nltpEIYj_BBUxVdv7YhpBmmA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GJGMlSyTg1AvPCV_6PaLOTVEKbHeVKY1jhCoaKuRlxM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/H0aD5KRj-4fhORkqWcWZfKPOQfu_ggvt4OmYOl4S5mw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IBLgVNsKBbJxN8NQnh6zTc3bC_OG-8BhtA3xCNDV6ks.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Po8q4NrWy9Kymnz_HbOk-WbdGY_KuuXc6urGogTHe7U.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/V1aP9G-CVtOLR5PTnHleid8WC9TSfFAT1DzAygp_5CQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WhePtBvZPmF1Jhdcc4glsjhxBJQo9Qw0CDgy_F8lClY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dVokuKbK8HbOtvPIksKGBAYE8x44l372dQ0gEISqbdo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oN1zSGeSEz4KhkAuUF_yFDsCVPkulfFjomEAjFzGdPc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qIeSoker4TjM7JYRQTOjgRd4nN0WeHnNY1GMK7Zpe8M.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tTFLM1bjKSeg4nyH7GWbTY6JVvuYhNKFFvsOMS9h8O0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tzX-HHF4F70o-aSB9Z_duoPxFGDv3auYnrpko9SYafU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vMbWbI1SO5bEaiu2pRvV8NDmms_j5flYoRvCSJavhdU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ypZCDLo54Pz2ZoUxrxSEUjT5FYMAq8Ozp8OTOYDRdAE.cache +0 -0
- data/test/fixtures/categories.yml +8 -0
- data/test/test_helper.rb +34 -0
- data/vendor/gems/express_templates/CHANGELOG.md +12 -0
- data/vendor/gems/express_templates/Gemfile.lock +4 -1
- data/vendor/gems/express_templates/README.md +22 -41
- data/vendor/gems/express_templates/express_templates.gemspec +1 -0
- data/vendor/gems/express_templates/lib/arbre/patches.rb +50 -0
- data/vendor/gems/express_templates/lib/core_extensions/proc.rb +1 -0
- data/vendor/gems/express_templates/lib/express_templates.rb +2 -3
- data/vendor/gems/express_templates/lib/express_templates/compiler.rb +2 -7
- data/vendor/gems/express_templates/lib/express_templates/components.rb +1 -9
- data/vendor/gems/express_templates/lib/express_templates/components/base.rb +33 -37
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/resourceful.rb +30 -18
- data/vendor/gems/express_templates/lib/express_templates/components/configurable.rb +41 -0
- data/vendor/gems/express_templates/lib/express_templates/components/form_rails_support.rb +5 -6
- data/vendor/gems/express_templates/lib/express_templates/components/forms.rb +0 -1
- data/vendor/gems/express_templates/lib/express_templates/components/forms/basic_fields.rb +3 -6
- data/vendor/gems/express_templates/lib/express_templates/components/forms/checkbox.rb +1 -1
- data/vendor/gems/express_templates/lib/express_templates/components/forms/express_form.rb +15 -25
- data/vendor/gems/express_templates/lib/express_templates/components/forms/form_component.rb +20 -11
- data/vendor/gems/express_templates/lib/express_templates/components/forms/option_support.rb +2 -2
- data/vendor/gems/express_templates/lib/express_templates/components/forms/radio.rb +7 -8
- data/vendor/gems/express_templates/lib/express_templates/components/forms/select.rb +61 -37
- data/vendor/gems/express_templates/lib/express_templates/components/forms/select_collection.rb +2 -8
- data/vendor/gems/express_templates/lib/express_templates/components/forms/submit.rb +7 -6
- data/vendor/gems/express_templates/lib/express_templates/components/tree_for.rb +26 -42
- data/vendor/gems/express_templates/lib/express_templates/version.rb +1 -1
- data/vendor/gems/express_templates/test/components/base_test.rb +17 -15
- data/vendor/gems/express_templates/test/components/capabilities/resourceful_test.rb +3 -3
- data/vendor/gems/express_templates/test/components/configurable_test.rb +27 -21
- data/vendor/gems/express_templates/test/components/forms/basic_fields_test.rb +57 -17
- data/vendor/gems/express_templates/test/components/forms/checkbox_test.rb +16 -22
- data/vendor/gems/express_templates/test/components/forms/express_form_test.rb +23 -76
- data/vendor/gems/express_templates/test/components/forms/radio_test.rb +31 -27
- data/vendor/gems/express_templates/test/components/forms/select_test.rb +46 -71
- data/vendor/gems/express_templates/test/components/forms/submit_test.rb +10 -5
- data/vendor/gems/express_templates/test/components/tree_for_test.rb +24 -52
- data/vendor/gems/express_templates/test/dummy/app/views/hello/show.html.et +4 -3
- data/vendor/gems/express_templates/test/dummy/app/views/layouts/application.html.et +1 -1
- data/vendor/gems/express_templates/test/dummy/log/test.log +4296 -0
- data/vendor/gems/express_templates/test/express_templates_test.rb +5 -1
- data/vendor/gems/express_templates/test/handler_test.rb +19 -17
- data/vendor/gems/express_templates/test/performance_test.rb +11 -7
- data/vendor/gems/express_templates/test/test_helper.rb +162 -1
- metadata +58 -47
- data/app/assets/stylesheets/express_admin/components/_megadropdown.sass +0 -66
- data/vendor/gems/express_templates/diagrams/diagram.graffle +0 -2404
- 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/lib/express_templates/components/capabilities/adoptable.rb +0 -20
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/building.rb +0 -14
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/conditionality.rb +0 -54
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/configurable.rb +0 -90
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/iterating.rb +0 -75
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/parenting.rb +0 -72
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/rendering.rb +0 -30
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/templating.rb +0 -198
- data/vendor/gems/express_templates/lib/express_templates/components/capabilities/wrapping.rb +0 -84
- data/vendor/gems/express_templates/lib/express_templates/components/column.rb +0 -13
- data/vendor/gems/express_templates/lib/express_templates/components/container.rb +0 -7
- data/vendor/gems/express_templates/lib/express_templates/components/content_for.rb +0 -42
- data/vendor/gems/express_templates/lib/express_templates/components/for_each.rb +0 -30
- data/vendor/gems/express_templates/lib/express_templates/components/forms/form_support.rb +0 -13
- data/vendor/gems/express_templates/lib/express_templates/components/null_wrap.rb +0 -41
- data/vendor/gems/express_templates/lib/express_templates/components/row.rb +0 -28
- data/vendor/gems/express_templates/lib/express_templates/components/table_for.rb +0 -163
- data/vendor/gems/express_templates/lib/express_templates/components/unless_block.rb +0 -40
- data/vendor/gems/express_templates/lib/express_templates/expander.rb +0 -140
- data/vendor/gems/express_templates/lib/express_templates/macro.rb +0 -45
- data/vendor/gems/express_templates/lib/express_templates/markup.rb +0 -9
- data/vendor/gems/express_templates/lib/express_templates/markup/html_tag.rb +0 -62
- data/vendor/gems/express_templates/lib/express_templates/markup/tag.rb +0 -150
- data/vendor/gems/express_templates/lib/express_templates/markup/wrapper.rb +0 -94
- data/vendor/gems/express_templates/lib/express_templates/markup/yielder.rb +0 -21
- data/vendor/gems/express_templates/test/components/column_test.rb +0 -11
- data/vendor/gems/express_templates/test/components/conditionality_test.rb +0 -37
- data/vendor/gems/express_templates/test/components/container_test.rb +0 -66
- data/vendor/gems/express_templates/test/components/content_for_test.rb +0 -60
- data/vendor/gems/express_templates/test/components/iterating_test.rb +0 -127
- data/vendor/gems/express_templates/test/components/null_wrap_test.rb +0 -28
- data/vendor/gems/express_templates/test/components/row_test.rb +0 -16
- data/vendor/gems/express_templates/test/components/table_for_test.rb +0 -211
- data/vendor/gems/express_templates/test/expander_stack_test.rb +0 -41
- data/vendor/gems/express_templates/test/expander_test.rb +0 -99
- data/vendor/gems/express_templates/test/markup/tag_test.rb +0 -149
- data/vendor/gems/express_templates/test/markup/wrapper_test.rb +0 -42
- data/vendor/gems/express_templates/test/markup/yielder_test.rb +0 -9
|
Binary file
|
|
Binary file
|
data/vendor/gems/express_templates/lib/express_templates/components/capabilities/adoptable.rb
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
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
|
data/vendor/gems/express_templates/lib/express_templates/components/capabilities/building.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
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
|
data/vendor/gems/express_templates/lib/express_templates/components/capabilities/iterating.rb
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
module ExpressTemplates
|
|
2
|
-
module Components
|
|
3
|
-
module Capabilities
|
|
4
|
-
#
|
|
5
|
-
# Adds the capability to iterate over a collection repeating a markup
|
|
6
|
-
# fragment for each member.
|
|
7
|
-
#
|
|
8
|
-
# Example:
|
|
9
|
-
#
|
|
10
|
-
# class ParagraphsComponent < ExpressTemplates::Components::Base
|
|
11
|
-
#
|
|
12
|
-
# emits -> { p { item } } # item is the default local variable name
|
|
13
|
-
#
|
|
14
|
-
# for_each -> { paragraphs } # evaluated in view context
|
|
15
|
-
#
|
|
16
|
-
# end
|
|
17
|
-
#
|
|
18
|
-
# Must specify an <tt>iterator</tt> either as a proc to be evaluated in the
|
|
19
|
-
# view context or else as a variable name in the form of a symbol which is
|
|
20
|
-
# assumed to be available in the view context.
|
|
21
|
-
#
|
|
22
|
-
# Provides:
|
|
23
|
-
#
|
|
24
|
-
# * Iterating::ClassMethods (for_each)
|
|
25
|
-
#
|
|
26
|
-
module Iterating
|
|
27
|
-
def self.included(base)
|
|
28
|
-
base.class_eval do
|
|
29
|
-
extend ClassMethods
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
module ClassMethods
|
|
34
|
-
# Sets the component up to use iterating logic to reproduce a fragment
|
|
35
|
-
# for a collection.
|
|
36
|
-
#
|
|
37
|
-
# Parameters include an iterator that may be :@variable assumed to be
|
|
38
|
-
# available in context or a proc that when evaluated in the context
|
|
39
|
-
# should return a collection.
|
|
40
|
-
#
|
|
41
|
-
# An <tt>:emit</tt> option may specify a fragment to emit.
|
|
42
|
-
# Defaults to <tt>:markup</tt>
|
|
43
|
-
#
|
|
44
|
-
# An <tt>:as</tt> option specifies the local variable name for each
|
|
45
|
-
# item in the collection for use in the fragment. Defaults to: <tt>item</tt>
|
|
46
|
-
#
|
|
47
|
-
# An <tt>:empty</tt> option specifies a fragment to use for the
|
|
48
|
-
# empty state when the iterator returns an empty collection.
|
|
49
|
-
def for_each(iterator, as: :item, emit: :markup, empty: nil)
|
|
50
|
-
as = as.to_sym
|
|
51
|
-
emit = emit.to_sym
|
|
52
|
-
iterator = iterator.kind_of?(Proc) ? iterator.source : iterator
|
|
53
|
-
fragment_src = if empty
|
|
54
|
-
%Q(-> {
|
|
55
|
-
unless_block(Proc.from_source("-> {#{iterator}.call.empty?}"), alt: #{self[empty].source}) {
|
|
56
|
-
for_each(Proc.from_source("#{iterator}"), as: #{as.inspect}) {
|
|
57
|
-
#{self[emit].source_body}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
})
|
|
61
|
-
else
|
|
62
|
-
%Q(-> {
|
|
63
|
-
for_each(Proc.from_source("#{iterator}"), as: #{as.inspect}) {
|
|
64
|
-
#{self[emit].source_body}
|
|
65
|
-
}
|
|
66
|
-
})
|
|
67
|
-
end
|
|
68
|
-
fragment = Proc.from_source(fragment_src)
|
|
69
|
-
_store :markup, fragment
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
data/vendor/gems/express_templates/lib/express_templates/components/capabilities/parenting.rb
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
module ExpressTemplates
|
|
2
|
-
module Components
|
|
3
|
-
module Capabilities
|
|
4
|
-
module Parenting
|
|
5
|
-
|
|
6
|
-
# Parenting adds the capability for a component to have and render
|
|
7
|
-
# children that may be specified in the template fragment which
|
|
8
|
-
# includes the component.
|
|
9
|
-
#
|
|
10
|
-
# Example parenting component:
|
|
11
|
-
#
|
|
12
|
-
# class Line < ExpressTemplates::Components::Base
|
|
13
|
-
# include Capabilities::Parenting
|
|
14
|
-
#
|
|
15
|
-
# emits { p.line { _yield } }
|
|
16
|
-
# end
|
|
17
|
-
#
|
|
18
|
-
# You might then use this component like so:
|
|
19
|
-
#
|
|
20
|
-
# line "In", "Xanadu", "did", "Kubla", "Khan"
|
|
21
|
-
# line { "A stately pleasure-dome decree :" }
|
|
22
|
-
# line { "Where Alph, the sacred river, ran" }
|
|
23
|
-
# line %q(Through caverns measureless to man)
|
|
24
|
-
# line %q|Down to a sunless sea.|
|
|
25
|
-
#
|
|
26
|
-
# Provides
|
|
27
|
-
#
|
|
28
|
-
# * ClassMethods for rendering
|
|
29
|
-
# * InstanceMethods for managing children
|
|
30
|
-
#
|
|
31
|
-
def self.included(base)
|
|
32
|
-
base.class_eval do
|
|
33
|
-
include InstanceMethods
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
module InstanceMethods
|
|
38
|
-
def children
|
|
39
|
-
@children ||= []
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def children=(children)
|
|
43
|
-
@children = children
|
|
44
|
-
children.each do |child|
|
|
45
|
-
if child.kind_of?(Adoptable)
|
|
46
|
-
child.parent = self
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def compile
|
|
52
|
-
null_wrapped_children = "null_wrap(%q(#{compile_children}))"
|
|
53
|
-
wrap_children_src = self.class[:markup].source.gsub(/(\s)_yield(\s)/, '\1'+null_wrapped_children+'\2')
|
|
54
|
-
_compile_fragment(Proc.from_source(wrap_children_src))
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def compile_children
|
|
58
|
-
compiled_children = nil
|
|
59
|
-
Indenter.for(:compile) do |indent, indent_with_newline|
|
|
60
|
-
compiled_children = children.map do |child|
|
|
61
|
-
indent_with_newline +
|
|
62
|
-
(child.respond_to?(:compile) ? child.compile : child.inspect) # Bare strings may be children
|
|
63
|
-
end.join("+\n")
|
|
64
|
-
compiled_children.gsub!('"+"', '') # avoid unnecessary string concatenation
|
|
65
|
-
end
|
|
66
|
-
return compiled_children
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
data/vendor/gems/express_templates/lib/express_templates/components/capabilities/rendering.rb
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module ExpressTemplates
|
|
2
|
-
module Components
|
|
3
|
-
module Capabilities
|
|
4
|
-
|
|
5
|
-
# Adds the capability for a component to render itself in a context.
|
|
6
|
-
#
|
|
7
|
-
# Provides both:
|
|
8
|
-
#
|
|
9
|
-
# * Rendering::ClassMethods
|
|
10
|
-
# * Rendering::InstanceMethods
|
|
11
|
-
#
|
|
12
|
-
# Used in ExpressTemplates::Components::Base.
|
|
13
|
-
#
|
|
14
|
-
module Rendering
|
|
15
|
-
def self.included(base)
|
|
16
|
-
base.class_eval do
|
|
17
|
-
extend ClassMethods
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
module ClassMethods
|
|
22
|
-
def render_in(context, &view_code)
|
|
23
|
-
context.instance_eval(&view_code)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
data/vendor/gems/express_templates/lib/express_templates/components/capabilities/templating.rb
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
module ExpressTemplates
|
|
2
|
-
module Components
|
|
3
|
-
module Capabilities
|
|
4
|
-
|
|
5
|
-
# The Templating capability module provides Components with the ability
|
|
6
|
-
# to store, reference and compile template fragments.
|
|
7
|
-
#
|
|
8
|
-
# It extends the including class with Templating::ClassMethods.
|
|
9
|
-
#
|
|
10
|
-
# It also provides helpers which are snippets of code in the form of
|
|
11
|
-
# lambdas that may be evaluated in the view context.
|
|
12
|
-
#
|
|
13
|
-
module Templating
|
|
14
|
-
def self.included(base)
|
|
15
|
-
base.class_eval do
|
|
16
|
-
extend ClassMethods
|
|
17
|
-
include InstanceMethods
|
|
18
|
-
end
|
|
19
|
-
class << base
|
|
20
|
-
alias_method :fragments, :emits
|
|
21
|
-
alias_method :has_markup, :emits
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
module ClassMethods
|
|
26
|
-
|
|
27
|
-
# Store fragments of ExpressTemplate style markup for use in
|
|
28
|
-
# generating the HTML representation of a component.
|
|
29
|
-
#
|
|
30
|
-
# For example in your class, simply place the following:
|
|
31
|
-
#
|
|
32
|
-
# class MyComponent < ET::Components::Base
|
|
33
|
-
# emits {
|
|
34
|
-
# ul {
|
|
35
|
-
# li "one"
|
|
36
|
-
# li "two"
|
|
37
|
-
# li "three"
|
|
38
|
-
# }
|
|
39
|
-
# }
|
|
40
|
-
#
|
|
41
|
-
# end
|
|
42
|
-
#
|
|
43
|
-
# By default this template code is stored under the label :markup
|
|
44
|
-
#
|
|
45
|
-
# You may specify several fragments with a hash containing lambdas:
|
|
46
|
-
#
|
|
47
|
-
# emits body: -> { li "item" },
|
|
48
|
-
# wrapper: -> { ul { _yield } }
|
|
49
|
-
#
|
|
50
|
-
# This method is aliased as <tt>fragments</tt> and <tt>has_markup</tt>
|
|
51
|
-
#
|
|
52
|
-
def emits(*args, &template_code)
|
|
53
|
-
if args.first.respond_to?(:call) or template_code
|
|
54
|
-
fragment = (args.first||template_code)
|
|
55
|
-
raise "must use stabby lambda" unless fragment.lambda?
|
|
56
|
-
_store :markup, fragment# default fragment is named :markup
|
|
57
|
-
else
|
|
58
|
-
args.first.to_a.each do |name, block|
|
|
59
|
-
raise ArgumentError unless name.is_a?(Symbol) and block.is_a?(Proc)
|
|
60
|
-
_store(name, block)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def [](label)
|
|
66
|
-
_lookup(label)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# Stores a block given for later evaluation in context.
|
|
70
|
-
#
|
|
71
|
-
# Example:
|
|
72
|
-
#
|
|
73
|
-
# class TitleComponent < ECB
|
|
74
|
-
# helper :title_helper do
|
|
75
|
-
# @resource.name
|
|
76
|
-
# end
|
|
77
|
-
#
|
|
78
|
-
# emits {
|
|
79
|
-
# h1 {
|
|
80
|
-
# title_helper
|
|
81
|
-
# }
|
|
82
|
-
# }
|
|
83
|
-
#
|
|
84
|
-
# end
|
|
85
|
-
#
|
|
86
|
-
# In this example <tt>@resource.name</tt> is evaluated in the
|
|
87
|
-
# provided context during page rendering and not during template
|
|
88
|
-
# expansion or compilation.
|
|
89
|
-
#
|
|
90
|
-
# This is the recommended for encapsulation of "helper" type
|
|
91
|
-
# functionality which is of concern only to the component and
|
|
92
|
-
# used only in its own markup fragments.
|
|
93
|
-
def helper(name, &block)
|
|
94
|
-
_helpers[name] = block
|
|
95
|
-
_define_helper_methods name
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
def special_handlers
|
|
99
|
-
{insert: self, _yield: self}.merge(Hash[*(_helpers.keys.map {|k| [k, self] }.flatten)])
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
protected
|
|
103
|
-
|
|
104
|
-
# Stores a fragment for use during compilation and rendering
|
|
105
|
-
# of a component.
|
|
106
|
-
def _store(name, fragment)
|
|
107
|
-
@fragments ||= Hash.new
|
|
108
|
-
@fragments[name] = fragment
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# Looks up a template fragment for this component and returns
|
|
112
|
-
# compiled template code.
|
|
113
|
-
#
|
|
114
|
-
# If the template fragment is not already compiled, it compiles it
|
|
115
|
-
# with the supplied options as locals. Locals may be used within
|
|
116
|
-
# the template during expansion.
|
|
117
|
-
#
|
|
118
|
-
# Returns a string containing ruby code which evaluates to markup.
|
|
119
|
-
def _lookup(name, options = {})
|
|
120
|
-
@fragments ||= Hash.new
|
|
121
|
-
@fragments[name] or raise "no template fragment supplied for: #{name}"
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
private
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
def _helpers
|
|
128
|
-
@helpers ||= Hash.new
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def _define_helper_methods(name)
|
|
132
|
-
method_definition= <<-RUBY
|
|
133
|
-
class << self
|
|
134
|
-
|
|
135
|
-
# called during expansion
|
|
136
|
-
define_method(:#{name}) do |*args|
|
|
137
|
-
helper_args = %w(self)
|
|
138
|
-
helper_args += args.map(&:inspect)
|
|
139
|
-
'{{#{self.to_s}._#{name}('+_interpolate(helper_args).join(', ')+')}}'
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
# called during rendering in view context
|
|
143
|
-
define_method(:_#{name}) do |context, *args|
|
|
144
|
-
begin
|
|
145
|
-
helper_proc = _helpers[:#{name}]
|
|
146
|
-
helper_args = args.take(helper_proc.arity)
|
|
147
|
-
context.instance_exec *helper_args, &helper_proc
|
|
148
|
-
rescue => e
|
|
149
|
-
raise "#{name} raised: \#\{e.to_s\}"
|
|
150
|
-
end.to_s
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
RUBY
|
|
154
|
-
eval(method_definition)
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
def _interpolate(args)
|
|
158
|
-
args.map do |arg|
|
|
159
|
-
if arg.kind_of?(String) && match = arg.match(/"\{\{(.*)\}\}"/)
|
|
160
|
-
match[1]
|
|
161
|
-
else
|
|
162
|
-
arg
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
module InstanceMethods
|
|
170
|
-
|
|
171
|
-
def lookup(fragment_name, options={})
|
|
172
|
-
fragment = self.class[fragment_name]
|
|
173
|
-
if fragment.kind_of?(Proc)
|
|
174
|
-
_compile_fragment(fragment, options)
|
|
175
|
-
else
|
|
176
|
-
fragment
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
# Expands and compiles the supplied block representing a
|
|
181
|
-
# template fragment.
|
|
182
|
-
#
|
|
183
|
-
# Any supplied options are passed as locals for use during expansion.
|
|
184
|
-
#
|
|
185
|
-
# Returns a string containing ruby code which evaluates to markup.
|
|
186
|
-
def _compile_fragment(block, options = {})
|
|
187
|
-
initialize_expander(nil, self.class.special_handlers, options)
|
|
188
|
-
expand(&block).map(&:compile).join("+").gsub('"+"', '')
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
end
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
end
|