Module: Markita::Markdown::Form
- Defined in:
- lib/markita/markdown/form.rb
Overview
Module to isolate from Markdown
Constant Summary collapse
- FIELD =
Regexp.new field
- RGX =
/^!( #{field})+/
- POST =
/!$/
- ACTION =
/\(([^()]*)\)!?$/
Class Method Summary collapse
-
.input(type, field, name, values) ⇒ Object
:reek:LongParameterList :reek:TooManyStatements.
-
.input_defaulted(field, type, name, values) ⇒ Object
:reek:LongParameterList.
- .input_hidden(name, values) ⇒ Object
- .input_select(field, name, values) ⇒ Object
- .input_submit(values) ⇒ Object
- .input_text(field, type, name) ⇒ Object
- .match?(line) ⇒ Boolean
-
.maybe(yon, name, field, values) ⇒ Object
:reek:ControlParameter :reek:NilCheck :reek:LongParameterList.
-
.scan(line) ⇒ Object
:reek:LongYieldList :reek:TooManyStatements.
- .start(line, attributes) ⇒ Object
- .stop ⇒ Object
-
.submit(yon) ⇒ Object
:reek:ControlParameter.
Class Method Details
.input(type, field, name, values) ⇒ Object
:reek:LongParameterList :reek:TooManyStatements
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/markita/markdown/form.rb', line 30 def self.input(type, field, name, values) if field if values.empty? then input_text(field, type, name) elsif values.count > 1 then input_select(field, name, values) else input_defaulted(field, type, name, values) end elsif name == 'submit' then input_submit(values) else input_hidden(name, values) end end |
.input_defaulted(field, type, name, values) ⇒ Object
:reek:LongParameterList
52 53 54 55 56 57 |
# File 'lib/markita/markdown/form.rb', line 52 def self.input_defaulted(field, type, name, values) <<-INPUT #{field}:<input type="#{type}" name="#{name}" value="#{values[0]}"> INPUT end |
.input_hidden(name, values) ⇒ Object
47 48 49 |
# File 'lib/markita/markdown/form.rb', line 47 def self.input_hidden(name, values) %( <input type="hidden" name="#{name}" value="#{values[0]}">\n) end |
.input_select(field, name, values) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/markita/markdown/form.rb', line 16 def self.input_select(field, name, values) %( #{field}:<select name="#{name}">\n).tap do |html| values.each do |value| html << %( <option value="#{value}">#{value}</option>\n) end html << " </select>\n" end end |
.input_submit(values) ⇒ Object
43 44 45 |
# File 'lib/markita/markdown/form.rb', line 43 def self.input_submit(values) %( <input type="submit" value="#{values[0] || 'Submit'}">\n) end |
.input_text(field, type, name) ⇒ Object
25 26 27 |
# File 'lib/markita/markdown/form.rb', line 25 def self.input_text(field, type, name) %( #{field}:<input type="#{type}" name="#{name}">\n) end |
.match?(line) ⇒ Boolean
59 |
# File 'lib/markita/markdown/form.rb', line 59 def self.match?(line) = RGX.match?(line) |
.maybe(yon, name, field, values) ⇒ Object
:reek:ControlParameter :reek:NilCheck :reek:LongParameterList
62 63 64 65 66 67 |
# File 'lib/markita/markdown/form.rb', line 62 def self.maybe(yon, name, field, values) return :NO if yon == :NO || (field.nil? && name == 'submit') return yon unless field && values.count < 2 yon == :yes ? :no : :YES end |
.scan(line) ⇒ Object
:reek:LongYieldList :reek:TooManyStatements
70 71 72 73 74 75 76 77 |
# File 'lib/markita/markdown/form.rb', line 70 def self.scan(line) line.scan(FIELD).each do |field, pwd, name, value| field &&= field[0...-1] values = value ? value[2...-1].split('","') : [] type = pwd ? 'password' : 'text' yield field, type, name, values end end |
.start(line, attributes) ⇒ Object
79 80 81 82 83 |
# File 'lib/markita/markdown/form.rb', line 79 def self.start(line, attributes) method = POST.match?(line) ? ' method="post"' : '' action = (mdt = ACTION.match(line)) ? %( action="#{mdt[1]}") : '' %(<form#{action}#{method}#{attributes.shift}>\n) end |
.stop ⇒ Object
85 |
# File 'lib/markita/markdown/form.rb', line 85 def self.stop = %(</form>\n) |
.submit(yon) ⇒ Object
:reek:ControlParameter
88 89 90 91 92 93 94 95 96 97 |
# File 'lib/markita/markdown/form.rb', line 88 def self.submit(yon) case yon when :yes %( <input type="submit">\n) when :YES %( <br>\n <input type="submit">\n) else '' end end |