yaks-html 0.8.0.alpha → 0.8.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/yaks/format/html.rb +34 -12
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3538bfad35c96b80a3735c177fe55f504412981b
4
- data.tar.gz: f80c46102c2bb800b3aae0961cbd4e8305319a8c
3
+ metadata.gz: 2f4a1a3e001c86f0d5f082c13a303e78fdd77d55
4
+ data.tar.gz: 23735a387547e42f645f550351ea342c61d64157
5
5
  SHA512:
6
- metadata.gz: 620402df5a28b62b9cce10223bbd0a7ceb568bc86f74c0d9073f89fcf650e5371d18acd7677e0804a91e9aa26df8033e4134212a29938cf4dd735ab7a7d0670a
7
- data.tar.gz: b372e1aea24f91254704eb340d90e6600a35849090d158f9a9ff160eddcca10a8e5477e0679d3f75de699d117c9baea4f2fc51d7de9371ae9cf4057a49badb70
6
+ metadata.gz: eda417afcb0ba6373fd52fb4424496d7b225d9d82513cb4dbd31aa4fc78ff927736e03615ba3fac204866288d7c8da345d8052b937f8fe805b0dc7a843682d94
7
+ data.tar.gz: fafefd706104b3e43fa28353a2197fe65bcf5db32eb1cdb9ee99dc9098b2f461534d95681a205563b6fd626e704804e9d2ad6a37bdec5d3641d68e3022d6896e
@@ -3,7 +3,7 @@
3
3
  module Yaks
4
4
  class Format
5
5
  class HTML < self
6
- include Adamantium
6
+ include Adamantium, Util
7
7
 
8
8
  register :html, :html, 'text/html'
9
9
 
@@ -85,19 +85,41 @@ module Yaks
85
85
  form = form.attr('action', form_control.action) if form_control.action
86
86
  form = form.attr('enctype', form_control.media_type) if form_control.media_type
87
87
 
88
- rows = form_control.fields.map do |field|
89
- H[:tr,
90
- H[:td, H[:label, {for: field.name}, field.label || '']],
91
- H[:td, case field.type
92
- when /\A(button|checkbox|file|hidden|image|password|radio|reset|submit|text)\z/
93
- H[:input, type: field.type, value: field.value, name: field.name]
94
- when /textarea/
95
- H[:textarea, { name: field.name }, field.value || '']
96
- end]
97
- ]
98
- end
88
+ rows = form_control.fields.map(&method(:render_field))
89
+
99
90
  form.content(H[:table, form_control.title || '', *rows, H[:tr, H[:td, H[:input, {type: 'submit'}]]]])
100
91
  end
92
+
93
+ def render_field(field)
94
+ return render_fieldset(field) if field.type == :fieldset
95
+ extra_info = reject_keys(field.to_h_compact, :type, :name, :value, :label, :options)
96
+ H[:tr,
97
+ H[:td,
98
+ H[:label, {for: field.name}, [field.label, field.required ? '*' : ''].join]],
99
+ H[:td,
100
+ case field.type
101
+ when /select/
102
+ H[:select, reject_keys(field.to_h_compact, :options), render_select_options(field.options)]
103
+ when /textarea/
104
+ H[:textarea, reject_keys(field.to_h_compact, :value), field.value || '']
105
+ when /legend/
106
+ H[:legend, field.to_h_compact]
107
+ else
108
+ H[:input, field.to_h_compact]
109
+ end],
110
+ H[:td, extra_info.empty? ? '' : extra_info.inspect]
111
+ ]
112
+ end
113
+
114
+ def render_fieldset(fieldset)
115
+ H[:fieldset, fieldset.fields.map(&method(:render_field))]
116
+ end
117
+
118
+ def render_select_options(options)
119
+ options.map do |o|
120
+ H[:option, reject_keys(o.to_h_compact, :label), o.label]
121
+ end
122
+ end
101
123
  end
102
124
  end
103
125
  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.8.0.alpha
4
+ version: 0.8.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arne Brasseur
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-17 00:00:00.000000000 Z
11
+ date: 2015-01-09 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.8.0.alpha
19
+ version: 0.8.0.beta1
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.8.0.alpha
26
+ version: 0.8.0.beta1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hexp
29
29
  requirement: !ruby/object:Gem::Requirement