yaks-html 0.9.0 → 0.10.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/lib/yaks-html.rb +2 -2
- data/lib/yaks/format/html.rb +29 -16
- data/lib/yaks/format/template.html +73 -28
- data/yaks-html.gemspec +4 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00098aaad249008d6a0748ed5d94483be2eb6694
|
4
|
+
data.tar.gz: e870922d4a96e4bd90ca12c31c4b5be8e71e0428
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73a42d1ca3639992a8ac660d15e5359d8e9647e67e0a5cc75aaa78eedad9cac63b01b0cf611bfc8e0fc9deb1a02d9636c6611e8bfb5ac787740580fb8e129766
|
7
|
+
data.tar.gz: 625d9f5d71a110d4c07383e6cca9a69fb27a89dbe1595591931c305e76804f5e1aad00134da11ad4bc720e1ae24b99646aade45aec92485268bee34ea623a550
|
data/lib/yaks-html.rb
CHANGED
@@ -3,6 +3,6 @@ require 'yaks'
|
|
3
3
|
require 'yaks/format/html'
|
4
4
|
|
5
5
|
-> do
|
6
|
-
unparser = Hexp::Unparser.new(
|
7
|
-
Yaks::Serializer.register(:html, ->(data,
|
6
|
+
unparser = Hexp::Unparser.new(no_escape: [:script, :style])
|
7
|
+
Yaks::Serializer.register(:html, ->(data, _env) { unparser.call(data) })
|
8
8
|
end.call
|
data/lib/yaks/format/html.rb
CHANGED
@@ -12,12 +12,12 @@ module Yaks
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def section(name)
|
15
|
-
template.select(".#{name}").first
|
15
|
+
template.select(".#{name}").first # rubocop:disable Performance/Detect
|
16
16
|
end
|
17
17
|
|
18
18
|
def serialize_resource(resource)
|
19
19
|
template.replace('.resource') do |_|
|
20
|
-
|
20
|
+
render(resource)
|
21
21
|
end.replace('.yaks-version') do |ver|
|
22
22
|
ver.content(Yaks::VERSION)
|
23
23
|
end.replace('.request-info') do |req|
|
@@ -25,6 +25,12 @@ module Yaks
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
def render(*args)
|
29
|
+
object = args.first
|
30
|
+
type = object.class.name.split('::').last
|
31
|
+
send("render_#{underscore(type)}", *args)
|
32
|
+
end
|
33
|
+
|
28
34
|
def render_resource(resource, templ = section('resource'))
|
29
35
|
templ
|
30
36
|
.replace('.type') { |header| header.content(resource.type.to_s + (resource.collection? ? ' collection' : '')) }
|
@@ -33,6 +39,8 @@ module Yaks
|
|
33
39
|
.replace('.forms') {|div| render_forms(resource.forms).call(div) }
|
34
40
|
.replace('.subresource') {|sub_templ| render_subresources(resource, templ, sub_templ) }
|
35
41
|
end
|
42
|
+
alias_method :render_collection_resource, :render_resource
|
43
|
+
alias_method :render_null_resource, :render_resource
|
36
44
|
|
37
45
|
def render_attributes(attributes)
|
38
46
|
->(templ) do
|
@@ -56,8 +64,13 @@ module Yaks
|
|
56
64
|
->(templ) do
|
57
65
|
links.map do |link|
|
58
66
|
templ
|
59
|
-
.replace('.rel a') {|a|
|
60
|
-
|
67
|
+
.replace('.rel a') {|a|
|
68
|
+
a.attr('href', rel_href(link.rel)).content(link.rel.to_s)
|
69
|
+
}
|
70
|
+
.replace('.uri a') {|a|
|
71
|
+
a.attr('href', link.uri).content(link.uri)
|
72
|
+
.attr('rel', link.rel.to_s)
|
73
|
+
}
|
61
74
|
.replace('.title') {|x| x.content(link.title.to_s) }
|
62
75
|
.replace('.templated') {|x| x.content(link.templated?.inspect) }
|
63
76
|
end
|
@@ -65,26 +78,28 @@ module Yaks
|
|
65
78
|
end
|
66
79
|
|
67
80
|
def render_subresources(resource, templ, sub_templ)
|
68
|
-
templ = templ
|
81
|
+
templ = templ
|
82
|
+
.replace('h1,h2,h3,h4') {|h| h.set_tag("h#{h.tag[/\d/].to_i.next}") }
|
83
|
+
.add_class('collapsed')
|
69
84
|
if resource.collection?
|
70
85
|
resource.seq.map do |r|
|
71
|
-
|
86
|
+
render(r, templ)
|
72
87
|
end
|
73
88
|
else
|
74
89
|
resource.subresources.map do |resources|
|
75
90
|
rel = resources.rels.first
|
76
91
|
sub_templ
|
77
92
|
.replace('.rel a') {|a| a.attr('href', rel_href(rel)).content(rel.to_s) }
|
78
|
-
.replace('.value') {|x| x.content(resources.seq.map { |
|
93
|
+
.replace('.value') {|x| x.content(resources.seq.map { |res| render(res, templ) })}
|
94
|
+
.attr('rel', rel.to_s)
|
79
95
|
end
|
80
96
|
end
|
81
97
|
end
|
82
98
|
|
83
|
-
|
84
99
|
def render_forms(forms)
|
85
100
|
->(div) do
|
86
101
|
div.content(
|
87
|
-
forms.map(&method(:
|
102
|
+
forms.map(&method(:render))
|
88
103
|
)
|
89
104
|
end
|
90
105
|
end
|
@@ -96,7 +111,7 @@ module Yaks
|
|
96
111
|
form = form.attr('action', form_control.action) if form_control.action
|
97
112
|
form = form.attr('enctype', form_control.media_type) if form_control.media_type
|
98
113
|
|
99
|
-
rows = form_control.fields.map(&method(:
|
114
|
+
rows = form_control.fields.map(&method(:render))
|
100
115
|
rows << H[:tr, H[:td], H[:td, H[:input, {type: 'submit'}]]]
|
101
116
|
|
102
117
|
H[:div,
|
@@ -105,7 +120,6 @@ module Yaks
|
|
105
120
|
end
|
106
121
|
|
107
122
|
def render_field(field)
|
108
|
-
return render_fieldset(field) if field.type == :fieldset
|
109
123
|
extra_info = reject_keys(field.to_h_compact, :type, :name, :value, :label, :options)
|
110
124
|
H[:tr,
|
111
125
|
H[:td,
|
@@ -116,8 +130,6 @@ module Yaks
|
|
116
130
|
H[:select, reject_keys(field.to_h_compact, :options), render_select_options(field.options)]
|
117
131
|
when /textarea/
|
118
132
|
H[:textarea, reject_keys(field.to_h_compact, :value), field.value || '']
|
119
|
-
when /legend/
|
120
|
-
H[:legend, field.to_h_compact]
|
121
133
|
when /hidden/
|
122
134
|
[ field.value.inspect,
|
123
135
|
H[:input, field.to_h_compact]
|
@@ -130,12 +142,13 @@ module Yaks
|
|
130
142
|
end
|
131
143
|
|
132
144
|
def render_fieldset(fieldset)
|
133
|
-
legend = fieldset.fields.
|
134
|
-
|
145
|
+
legend = fieldset.fields.find {|field| field.type == :legend}
|
146
|
+
fields = fieldset.fields.reject {|field| field.type == :legend}
|
147
|
+
legend = legend ? legend.label : ''
|
135
148
|
|
136
149
|
H[:tr,
|
137
150
|
H[:th, legend],
|
138
|
-
H[:td, H[:fieldset, H[:table,
|
151
|
+
H[:td, H[:fieldset, H[:table, fields.map(&method(:render))]]]]
|
139
152
|
end
|
140
153
|
|
141
154
|
def render_select_options(options)
|
@@ -70,6 +70,26 @@
|
|
70
70
|
.footer {
|
71
71
|
margin-top: 1em;
|
72
72
|
}
|
73
|
+
|
74
|
+
.collapsed .heading::before, .expanded .heading::before {
|
75
|
+
font-size: 0.6em;
|
76
|
+
display: block;
|
77
|
+
float: left;
|
78
|
+
margin-top: 0.4em;
|
79
|
+
margin-right: 0.5em;
|
80
|
+
}
|
81
|
+
|
82
|
+
.collapsed .heading::before {
|
83
|
+
content: "▶";
|
84
|
+
}
|
85
|
+
|
86
|
+
.expanded .heading::before {
|
87
|
+
content: "▼";
|
88
|
+
}
|
89
|
+
|
90
|
+
.collapsed .body {
|
91
|
+
display: none;
|
92
|
+
}
|
73
93
|
</style>
|
74
94
|
</head>
|
75
95
|
<body>
|
@@ -77,40 +97,65 @@
|
|
77
97
|
</div>
|
78
98
|
|
79
99
|
<div class="resource">
|
80
|
-
<h1 class="type">Resource Type</h1>
|
81
|
-
|
82
|
-
<
|
83
|
-
<
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
<
|
88
|
-
<
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
<
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
<div class="subresource
|
106
|
-
|
107
|
-
|
100
|
+
<h1 class="heading type">Resource Type</h1>
|
101
|
+
|
102
|
+
<div class="resource-data body">
|
103
|
+
<table class="attributes">
|
104
|
+
<tr class="attribute"><td class="name">name</td><td class="value">value</td></tr>
|
105
|
+
</table>
|
106
|
+
|
107
|
+
<table class="links">
|
108
|
+
<tr>
|
109
|
+
<th>Rel</th>
|
110
|
+
<th>URI</th>
|
111
|
+
<th>Title</th>
|
112
|
+
<th>Templated</th>
|
113
|
+
</tr>
|
114
|
+
|
115
|
+
<tr class="link">
|
116
|
+
<td class="rel"><a href="">rel</a></td>
|
117
|
+
<td class="uri"><a href="">uri</a></td>
|
118
|
+
<td class="title">title</td>
|
119
|
+
<td class="templated">false</td>
|
120
|
+
</tr>
|
121
|
+
</table>
|
122
|
+
|
123
|
+
<div class="forms"></div>
|
124
|
+
|
125
|
+
<div class="subresource collapsed">
|
126
|
+
<div class="subresource-rel rel heading"><a></a></div>
|
127
|
+
<div class="value body" class="collapsed"></div>
|
128
|
+
</div>
|
108
129
|
|
130
|
+
</div>
|
109
131
|
</div>
|
110
132
|
|
111
133
|
<div class="footer">
|
112
134
|
generated with <a href="https://github.com/plexus/yaks">Yaks <span class="yaks-version"></span></a>
|
113
135
|
</div>
|
114
136
|
|
137
|
+
<script>
|
138
|
+
function setupCollapseExpand() {
|
139
|
+
var nodes = document.getElementsByClassName("heading");
|
140
|
+
|
141
|
+
for (var i=0; i < nodes.length; i++) {
|
142
|
+
var node = nodes[i];
|
143
|
+
node.onclick = function() {
|
144
|
+
var parent = this.parentNode;
|
145
|
+
if (parent.className.indexOf("collapsed") >= 0) {
|
146
|
+
parent.className = parent.className.replace("collapsed", "expanded");
|
147
|
+
} else {
|
148
|
+
parent.className = parent.className.replace("expanded", "collapsed");
|
149
|
+
}
|
150
|
+
};
|
151
|
+
}
|
152
|
+
};
|
153
|
+
|
154
|
+
if (window.addEventListener) {
|
155
|
+
window.addEventListener("load", setupCollapseExpand, false);
|
156
|
+
} else if (window.attachEvent) {
|
157
|
+
window.attachEvent("onload", setupCollapseExpand);
|
158
|
+
}
|
159
|
+
</script>
|
115
160
|
</body>
|
116
161
|
</html>
|
data/yaks-html.gemspec
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
require 'English'
|
3
4
|
require File.expand_path('../../yaks/lib/yaks/version', __FILE__)
|
4
5
|
|
5
6
|
Gem::Specification.new do |gem|
|
@@ -13,10 +14,12 @@ Gem::Specification.new do |gem|
|
|
13
14
|
gem.license = 'MIT'
|
14
15
|
|
15
16
|
gem.require_paths = %w[lib]
|
16
|
-
gem.files = `git ls-files`.split(
|
17
|
+
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
18
|
gem.test_files = gem.files.grep(/^spec/)
|
18
19
|
gem.extra_rdoc_files = %w[README.md]
|
19
20
|
|
21
|
+
gem.required_ruby_version = '>= 1.9.3'
|
22
|
+
|
20
23
|
gem.add_runtime_dependency 'yaks', Yaks::VERSION
|
21
24
|
gem.add_runtime_dependency 'hexp', '>= 0.4'
|
22
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yaks-html
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arne Brasseur
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yaks
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.10.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.10.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: hexp
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -65,7 +65,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.9.3
|
69
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
71
|
- - ">="
|
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
73
|
version: '0'
|
74
74
|
requirements: []
|
75
75
|
rubyforge_project:
|
76
|
-
rubygems_version: 2.
|
76
|
+
rubygems_version: 2.4.5
|
77
77
|
signing_key:
|
78
78
|
specification_version: 4
|
79
79
|
summary: HTML output format for Yaks
|