Module: Generator::Formatter
- Included in:
- API, Operation, RBS::Unified, SchemaHelpers
- Defined in:
- lib/generator/support/formatter.rb
Constant Summary collapse
- MAX_LINE_LENGTH =
120
Instance Method Summary collapse
- #convert_doc_links_to_full_url(text) ⇒ Object
- #convert_html_links_to_yard(text) ⇒ Object
- #format_method_definition(method_name, params, base_indent: 0, max_line_length: MAX_LINE_LENGTH) ⇒ Object
- #split_long_comment_line(line, base_indent: 0, wrap_indent: 0, max_line_length: MAX_LINE_LENGTH) ⇒ Object
Instance Method Details
#convert_doc_links_to_full_url(text) ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/generator/support/formatter.rb', line 64 def convert_doc_links_to_full_url(text) text.gsub(/\[([^\]]+)\]\(doc:([^\)]+)\)/) do link_text = Regexp.last_match(1) path = Regexp.last_match(2) url = "https://developer-docs.amazon.com/sp-api/docs/#{path}" "{#{url} #{link_text}}" end end |
#convert_html_links_to_yard(text) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/generator/support/formatter.rb', line 74 def convert_html_links_to_yard(text) # Handle quoted href attributes: <a href="url"> or <a href='url'> text = text.gsub(%r{<a href=['"]([^'"]+)['"]>([^<]+)</a>}) do url = Regexp.last_match(1) link_text = Regexp.last_match(2) "{#{url} #{link_text}}" end # Handle unquoted href attributes: <a href=url> text = text.gsub(%r{<a href=([^\s>]+)>([^<]+)</a>}) do url = Regexp.last_match(1) link_text = Regexp.last_match(2) "{#{url} #{link_text}}" end # Normalize markdown bold: convert __text__ to **text** for consistency text.gsub(/__(.*?)__/, '**\1**') end |
#format_method_definition(method_name, params, base_indent: 0, max_line_length: MAX_LINE_LENGTH) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/generator/support/formatter.rb', line 45 def format_method_definition(method_name, params, base_indent: 0, max_line_length: MAX_LINE_LENGTH) max_width = max_line_length - base_indent current_line = ["def #{method_name}("] lines = [] params.each do |param| if (current_line + ["#{param},"]).join.size <= max_width current_line << param + ", " else lines << " " * base_indent + current_line.join.strip current_line = [" " + param + ", "] end end joined = current_line.join lines << " " * base_indent + (joined[..-3] || "") + ")" lines.join("\n") end |
#split_long_comment_line(line, base_indent: 0, wrap_indent: 0, max_line_length: MAX_LINE_LENGTH) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/generator/support/formatter.rb', line 7 def split_long_comment_line(line, base_indent: 0, wrap_indent: 0, max_line_length: MAX_LINE_LENGTH) max_width = max_line_length - base_indent - 2 # Account for the space and `#` # Handle multi-line input by processing each line separately input_lines = line.split("\n") all_lines = [] input_lines.each do |input_line| # Preserve blank lines if input_line.strip.empty? all_lines << " " * base_indent + "#" next end current_line = [] lines = [] first_line = true input_line.sub(/^\s*#\s*/, "").split.each do |word| if first_line && (current_line + [word]).join(" ").size <= max_width current_line << word elsif !first_line && (current_line + [word]).join(" ").size <= max_width - wrap_indent current_line << word else lines << " " * base_indent + "# " + " " * (first_line ? 0 : wrap_indent) + current_line.join(" ") first_line = false current_line = [word] end end unless current_line.empty? lines << " " * base_indent + "# " + " " * (first_line ? 0 : wrap_indent) + current_line.join(" ") end all_lines.concat(lines) end all_lines.empty? ? " " * base_indent + "#" : all_lines.join("\n") end |