ejx 1.0 → 1.1
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/lib/ejx/assets/ejx.js +26 -17
- data/lib/ejx/template.rb +1 -1
- data/lib/ejx/template/subtemplate.rb +18 -7
- data/lib/ejx/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5e3997ce1ac9e0edc1de2f0046b0b6a088bdaae849e05278c86223a4e4d620f
|
4
|
+
data.tar.gz: db78cf1549960d7264a1eb001fd1999c94a911f9f8e00aaa721e1d9471bbfd72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3770f88b9741b78be7d90ce40d865821b6e0f71f4a6ee3cb48c018c93b81436f31df47b83fd0b9143935439f8ddfb594eebdfda1724487c44f4b015af024d74a
|
7
|
+
data.tar.gz: 873581ec37a56a0ffa9a4b9c0e44f9f9aa632b41419f2ad8e67a8033a22bc9e6915d74cb0827e7ebe15028d4a9a7ac2ddcc669a28caa15b61eb4bfd4ba3cebea
|
data/lib/ejx/assets/ejx.js
CHANGED
@@ -1,17 +1,26 @@
|
|
1
|
+
function insertBefore(el, items) {
|
2
|
+
items.forEach((i) => {
|
3
|
+
if ( Array.isArray(i) ) {
|
4
|
+
insertBefore(el, i);
|
5
|
+
} else if (i instanceof Element) {
|
6
|
+
el.insertAdjacentElement('beforebegin', i);
|
7
|
+
} else if (i instanceof Text) {
|
8
|
+
// TextNode#toString() => "[object Text]" so we need to get it ourselves,
|
9
|
+
// Not sure why but the test in Node do not reflect this.
|
10
|
+
el.insertAdjacentText('beforebegin', i.textContent);
|
11
|
+
} else {
|
12
|
+
el.insertAdjacentText('beforebegin', i);
|
13
|
+
}
|
14
|
+
});
|
15
|
+
}
|
16
|
+
|
1
17
|
function repalceejx(el, withItems) {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
el.insertAdjacentText('beforebegin', i)
|
9
|
-
}
|
10
|
-
})
|
11
|
-
el.remove();
|
12
|
-
} else {
|
13
|
-
el.replaceWith(withItems);
|
14
|
-
}
|
18
|
+
if ( Array.isArray(withItems) ) {
|
19
|
+
insertBefore(el, withItems);
|
20
|
+
el.remove();
|
21
|
+
} else {
|
22
|
+
el.replaceWith(withItems);
|
23
|
+
}
|
15
24
|
}
|
16
25
|
|
17
26
|
export function append(items, to, escape, promises, promiseResults) {
|
@@ -23,12 +32,12 @@ export function append(items, to, escape, promises, promiseResults) {
|
|
23
32
|
let holder = document.createElement( "div");
|
24
33
|
to[method](holder);
|
25
34
|
promises.push( items.then((resolvedItems) => {
|
26
|
-
if(holder.parentElement) {
|
27
|
-
repalceejx(holder, resolvedItems || promiseResults.flat())
|
35
|
+
if (holder.parentElement) {
|
36
|
+
repalceejx(holder, resolvedItems || promiseResults.flat());
|
28
37
|
} else if (Array.isArray(resolvedItems)) {
|
29
|
-
to.splice(to.indexOf(holder), 1, ...resolvedItems)
|
38
|
+
to.splice(to.indexOf(holder), 1, ...resolvedItems);
|
30
39
|
} else {
|
31
|
-
to.splice(to.indexOf(holder), 1, resolvedItems)
|
40
|
+
to.splice(to.indexOf(holder), 1, resolvedItems);
|
32
41
|
}
|
33
42
|
}));
|
34
43
|
} else if (typeof items === 'string') {
|
data/lib/ejx/template.rb
CHANGED
@@ -70,7 +70,7 @@ class EJX::Template
|
|
70
70
|
@tree.last.children << subtemplate
|
71
71
|
@stack.pop
|
72
72
|
elsif pm.match(/function\s*\([^\)]*\)\s*\{\s*\Z/m) || pm.match(/=>\s*\{\s*\Z/m)
|
73
|
-
@tree << EJX::Template::Subtemplate.new(pm.strip, [open_modifier, close_modifier].compact)
|
73
|
+
@tree << EJX::Template::Subtemplate.new(pm.strip, [open_modifier, close_modifier].compact, append: !pm.match?(/\A\s*(var|const|let)?\s*[^(]+\s*=/))
|
74
74
|
@stack.pop
|
75
75
|
else
|
76
76
|
if open_modifier != :comment && !pre_js.empty? && @tree.last.children.last.is_a?(EJX::Template::JS)
|
@@ -1,19 +1,26 @@
|
|
1
1
|
class EJX::Template::Subtemplate
|
2
2
|
|
3
|
-
attr_reader :children
|
3
|
+
attr_reader :children, :append
|
4
4
|
|
5
|
-
def initialize(opening, modifiers)
|
5
|
+
def initialize(opening, modifiers, append: true)
|
6
6
|
@children = [opening]
|
7
7
|
@modifiers = modifiers
|
8
|
+
@append = append
|
8
9
|
end
|
9
10
|
|
10
11
|
def to_js(indentation: 4, var_generator: nil, append: "__output")
|
11
12
|
global_output_var = var_generator.next
|
12
13
|
output_var = var_generator.next
|
13
14
|
|
14
|
-
output =
|
15
|
-
|
16
|
-
|
15
|
+
output = ''
|
16
|
+
if @append
|
17
|
+
output << "#{' '*indentation}var #{global_output_var} = [];\n"
|
18
|
+
output << "#{' '*indentation}__ejx_append("
|
19
|
+
output << @children.first << "\n"
|
20
|
+
else
|
21
|
+
output << "#{' '*indentation}#{@children.first}\n"
|
22
|
+
end
|
23
|
+
|
17
24
|
output << "#{' '*(indentation+4)}var #{output_var} = [];\n"
|
18
25
|
|
19
26
|
@children[1..-2].each do |child|
|
@@ -25,10 +32,14 @@ class EJX::Template::Subtemplate
|
|
25
32
|
end
|
26
33
|
end
|
27
34
|
|
28
|
-
output << ' '*(indentation+4) << "#{global_output_var}.push(#{output_var});\n"
|
35
|
+
output << ' '*(indentation+4) << "#{global_output_var}.push(#{output_var});\n" if @append
|
29
36
|
output << ' '*(indentation+4) << "return #{output_var};\n";
|
30
37
|
output << ' '*indentation << @children.last.strip.delete_suffix(';')
|
31
|
-
output <<
|
38
|
+
output << if @append
|
39
|
+
", #{append}, true, __promises, #{global_output_var});\n"
|
40
|
+
else
|
41
|
+
";\n"
|
42
|
+
end
|
32
43
|
|
33
44
|
output
|
34
45
|
end
|
data/lib/ejx/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ejx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Bracy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|