Module: ApipieDslHelper
- Includes:
- ActionView::Helpers::TagHelper
- Included in:
- ApipieDsl::ApipieDslsController
- Defined in:
- app/helpers/apipie_dsl_helper.rb
Class Method Summary collapse
Instance Method Summary collapse
- #apipie_dsl_example(source, output = nil) ⇒ Object
- #apipie_dsl_menu ⇒ Object
- #apipie_erb_wrap(content, mode: :loud, open_trim: false, close_trim: false) ⇒ Object
- #class_references(obj, version, link_extension) ⇒ Object
- #current_version(classes) ⇒ Object
- #dsl_sections ⇒ Object
- #escaped_method_name(method, options = {}) ⇒ Object
- #heading(title, level = 1) ⇒ Object
- #in_section?(section, klass) ⇒ Boolean
- #method_signature(method_desc) ⇒ Object
- #render_help ⇒ Object
- #resolve_default(default) ⇒ Object
- #section_ext(section) ⇒ Object
Class Method Details
.in_section?(section, klass) ⇒ Boolean
134 135 136 137 138 139 140 |
# File 'app/helpers/apipie_dsl_helper.rb', line 134 def self.in_section?(section, klass) class_desc = ApipieDSL.get_class_description(klass) raise ApipieDSL::Error, "Cannot find #{klass} description" if class_desc.nil? return true if section.empty? class_desc.sections.include?(section) end |
Instance Method Details
#apipie_dsl_example(source, output = nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/helpers/apipie_dsl_helper.rb', line 37 def apipie_dsl_example(source, output = nil) text = content_tag(:p, _('Example input:')) + content_tag(:pre, source, class: 'wiki') if output.present? text += content_tag(:p, _('Example output:')) + content_tag(:pre, output, class: 'wiki') end text.html_safe end |
#apipie_dsl_menu ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/helpers/apipie_dsl_helper.rb', line 21 def content_tag(:ul, class: 'breadcrumb') do content = dsl_sections.map do |section| content_tag(:li, class: section == @section ? 'active' : '') do link_to(_(section.titleize), @doc[:doc_url] + section_ext(section) + @doc[:link_extension]) end end.join(' | ').html_safe unless ApipieDSL.configuration.help_layout.nil? content += content_tag(:li, class: "pull-right #{'active' if @section == 'help'}") do link_to(_('Help'), @doc[:doc_url] + section_ext('help') + @doc[:link_extension]) end end end end |
#apipie_erb_wrap(content, mode: :loud, open_trim: false, close_trim: false) ⇒ Object
49 50 51 52 53 54 55 56 57 58 |
# File 'app/helpers/apipie_dsl_helper.rb', line 49 def apipie_erb_wrap(content, mode: :loud, open_trim: false, close_trim: false) case mode when :loud "<%= #{content} #{close_trim ? '-' : ''}%>" when :comment "<%# #{content} #{close_trim ? '-' : ''}%>" else "<%#{open_trim ? '-' : ''} #{content} #{close_trim ? '-' : ''}%>" end end |
#class_references(obj, version, link_extension) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'app/helpers/apipie_dsl_helper.rb', line 102 def class_references(obj, version, link_extension) # Try to convert to a constant in case of LazyValidator usage # Will raise const missing exception in case of wrong usage of the method if obj.is_a?(String) ref = ApipieDSL.refs[version][ApipieDSL.get_class_name(obj)] return "<a href='#{ref.doc_url(ref.sections.first)}#{link_extension}'>#{obj}</a>" if ref obj = ApipieDSL.configuration.rails? ? obj.constantize : obj.split('::').reduce(::Module, :const_get) end return obj.to_s unless [::Module, ::Class, ::Array].include?(obj.class) refs = [obj].flatten.map do |o| next o unless [::Module, ::Class].include?(o.class) referenced = ApipieDSL.refs[version][ApipieDSL.get_class_name(o)] next o if referenced.nil? "<a href='#{referenced.doc_url(referenced.sections.first)}#{link_extension}'>#{o}</a>" end return refs.first if refs.size < 2 refs end |
#current_version(classes) ⇒ Object
146 147 148 149 150 151 152 153 154 155 |
# File 'app/helpers/apipie_dsl_helper.rb', line 146 def current_version(classes) case classes when Array classes.first[:version] when Hash classes.values.first[:version] else raise ApipieDSL::Error, "Cannot find current version for #{classes}" end end |
#dsl_sections ⇒ Object
126 127 128 |
# File 'app/helpers/apipie_dsl_helper.rb', line 126 def dsl_sections ApipieDSL.configuration.sections end |
#escaped_method_name(method, options = {}) ⇒ Object
15 16 17 18 19 |
# File 'app/helpers/apipie_dsl_helper.rb', line 15 def escaped_method_name(method, = {}) [:escaping] ||= '' [:pattern] ||= /[?]/ return method.gsub([:pattern], [:escaping]) if method.is_a?(String) end |
#heading(title, level = 1) ⇒ Object
9 10 11 12 13 |
# File 'app/helpers/apipie_dsl_helper.rb', line 9 def heading(title, level = 1) content_tag("h#{level}") do title end end |
#in_section?(section, klass) ⇒ Boolean
130 131 132 |
# File 'app/helpers/apipie_dsl_helper.rb', line 130 def in_section?(section, klass) ApipieDslHelper.in_section?(section, klass) end |
#method_signature(method_desc) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'app/helpers/apipie_dsl_helper.rb', line 75 def method_signature(method_desc) return "#{method_desc[:name]}" if method_desc[:params].empty? params = method_desc[:params].map do |param| default = resolve_default(param[:default]) case param[:type] when 'required' param[:name].to_s when 'optional' if param[:expected_type] == 'list' "*#{param[:name]}" else "#{param[:name]} = #{default}" end when 'keyword' "#{param[:name]}: #{default}" end end.compact.join(', ') block_param = method_desc[:params].find { |p| p[:type] == 'block' } signature_parts = [method_desc[:name]] signature_parts << "(#{params})" unless params.empty? signature_parts << " #{block_param[:schema]}" if block_param signature_parts.join end |
#render_help ⇒ Object
157 158 159 |
# File 'app/helpers/apipie_dsl_helper.rb', line 157 def render_help render template: ApipieDSL.configuration.help_layout end |
#resolve_default(default) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/helpers/apipie_dsl_helper.rb', line 60 def resolve_default(default) case default when nil 'nil' when '' "\"\"" when Symbol ":#{default}" when String "\"#{default}\"" else default end end |
#section_ext(section) ⇒ Object
142 143 144 |
# File 'app/helpers/apipie_dsl_helper.rb', line 142 def section_ext(section) "/#{section}" end |