rdoc 6.17.0 → 7.2.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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +196 -0
  3. data/LEGAL.rdoc +6 -0
  4. data/README.md +90 -7
  5. data/doc/markup_reference/markdown.md +558 -0
  6. data/doc/markup_reference/rdoc.rdoc +1169 -0
  7. data/lib/rdoc/code_object/any_method.rb +15 -7
  8. data/lib/rdoc/code_object/attr.rb +2 -1
  9. data/lib/rdoc/code_object/class_module.rb +62 -11
  10. data/lib/rdoc/code_object/constant.rb +9 -0
  11. data/lib/rdoc/code_object/context/section.rb +46 -9
  12. data/lib/rdoc/code_object/context.rb +15 -4
  13. data/lib/rdoc/code_object/method_attr.rb +13 -1
  14. data/lib/rdoc/code_object/mixin.rb +3 -0
  15. data/lib/rdoc/code_object/top_level.rb +15 -1
  16. data/lib/rdoc/comment.rb +1 -1
  17. data/lib/rdoc/cross_reference.rb +31 -24
  18. data/lib/rdoc/generator/aliki.rb +141 -0
  19. data/lib/rdoc/generator/darkfish.rb +3 -1
  20. data/lib/rdoc/generator/template/aliki/_footer.rhtml +1 -1
  21. data/lib/rdoc/generator/template/aliki/_head.rhtml +9 -4
  22. data/lib/rdoc/generator/template/aliki/_header.rhtml +4 -4
  23. data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +1 -1
  24. data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +3 -3
  25. data/lib/rdoc/generator/template/aliki/class.rhtml +17 -17
  26. data/lib/rdoc/generator/template/aliki/css/rdoc.css +278 -60
  27. data/lib/rdoc/generator/template/aliki/index.rhtml +1 -1
  28. data/lib/rdoc/generator/template/aliki/js/aliki.js +51 -23
  29. data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
  30. data/lib/rdoc/generator/template/aliki/js/c_highlighter.js +1 -1
  31. data/lib/rdoc/generator/template/aliki/js/{search.js → search_controller.js} +16 -7
  32. data/lib/rdoc/generator/template/aliki/js/search_navigation.js +105 -0
  33. data/lib/rdoc/generator/template/aliki/js/search_ranker.js +239 -0
  34. data/lib/rdoc/generator/template/aliki/page.rhtml +1 -1
  35. data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +1 -1
  36. data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +1 -1
  37. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +1 -1
  38. data/lib/rdoc/generator/template/darkfish/class.rhtml +11 -11
  39. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +19 -0
  40. data/lib/rdoc/markdown.kpeg +22 -12
  41. data/lib/rdoc/markdown.rb +36 -26
  42. data/lib/rdoc/markup/blank_line.rb +25 -23
  43. data/lib/rdoc/markup/element.rb +21 -0
  44. data/lib/rdoc/markup/formatter.rb +129 -106
  45. data/lib/rdoc/markup/hard_break.rb +30 -27
  46. data/lib/rdoc/markup/heading.rb +166 -77
  47. data/lib/rdoc/markup/inline_parser.rb +312 -0
  48. data/lib/rdoc/markup/parser.rb +1 -1
  49. data/lib/rdoc/markup/raw.rb +52 -55
  50. data/lib/rdoc/markup/table.rb +48 -40
  51. data/lib/rdoc/markup/to_ansi.rb +51 -4
  52. data/lib/rdoc/markup/to_bs.rb +22 -42
  53. data/lib/rdoc/markup/to_html.rb +178 -183
  54. data/lib/rdoc/markup/to_html_crossref.rb +58 -79
  55. data/lib/rdoc/markup/to_html_snippet.rb +62 -62
  56. data/lib/rdoc/markup/to_label.rb +29 -20
  57. data/lib/rdoc/markup/to_markdown.rb +61 -37
  58. data/lib/rdoc/markup/to_rdoc.rb +86 -26
  59. data/lib/rdoc/markup/to_test.rb +9 -1
  60. data/lib/rdoc/markup/to_tt_only.rb +10 -16
  61. data/lib/rdoc/markup/verbatim.rb +1 -1
  62. data/lib/rdoc/markup.rb +11 -32
  63. data/lib/rdoc/options.rb +1 -1
  64. data/lib/rdoc/parser/changelog.rb +29 -0
  65. data/lib/rdoc/parser/prism_ruby.rb +44 -32
  66. data/lib/rdoc/parser/ruby.rb +1 -1
  67. data/lib/rdoc/rubygems_hook.rb +3 -3
  68. data/lib/rdoc/text.rb +44 -5
  69. data/lib/rdoc/token_stream.rb +4 -8
  70. data/lib/rdoc/version.rb +1 -1
  71. data/rdoc.gemspec +3 -3
  72. metadata +13 -15
  73. data/CONTRIBUTING.rdoc +0 -219
  74. data/ExampleMarkdown.md +0 -39
  75. data/ExampleRDoc.rdoc +0 -210
  76. data/lib/rdoc/markup/attr_changer.rb +0 -22
  77. data/lib/rdoc/markup/attr_span.rb +0 -35
  78. data/lib/rdoc/markup/attribute_manager.rb +0 -405
  79. data/lib/rdoc/markup/attributes.rb +0 -70
  80. data/lib/rdoc/markup/regexp_handling.rb +0 -40
@@ -1,52 +1,60 @@
1
1
  # frozen_string_literal: true
2
- ##
3
- # A section of table
4
2
 
5
- class RDoc::Markup::Table
6
- # headers of each column
7
- attr_accessor :header
3
+ module RDoc
4
+ class Markup
5
+ # A section of table
6
+ class Table < Element
7
+ # Headers of each column
8
+ #: Array[String]
9
+ attr_accessor :header
8
10
 
9
- # alignments of each column
10
- attr_accessor :align
11
+ # Alignments of each column
12
+ #: Array[Symbol?]
13
+ attr_accessor :align
11
14
 
12
- # body texts of each column
13
- attr_accessor :body
15
+ # Body texts of each column
16
+ #: Array[String]
17
+ attr_accessor :body
14
18
 
15
- # Creates new instance
16
- def initialize(header, align, body)
17
- @header, @align, @body = header, align, body
18
- end
19
-
20
- # :stopdoc:
21
- def ==(other)
22
- self.class == other.class and
23
- @header == other.header and
24
- @align == other.align and
25
- @body == other.body
26
- end
19
+ #: (Array[String], Array[Symbol?], Array[String]) -> void
20
+ def initialize(header, align, body)
21
+ @header, @align, @body = header, align, body
22
+ end
27
23
 
28
- def accept(visitor)
29
- visitor.accept_table @header, @body, @align
30
- end
24
+ #: (Object) -> bool
25
+ def ==(other)
26
+ self.class == other.class && @header == other.header &&
27
+ @align == other.align && @body == other.body
28
+ end
31
29
 
32
- def pretty_print(q)
33
- q.group 2, '[Table: ', ']' do
34
- q.group 2, '[Head: ', ']' do
35
- q.seplist @header.zip(@align) do |text, align|
36
- q.pp text
37
- if align
38
- q.text ":"
39
- q.breakable
40
- q.text align.to_s
41
- end
42
- end
30
+ # @override
31
+ #: (untyped) -> void
32
+ def accept(visitor)
33
+ visitor.accept_table(@header, @body, @align)
43
34
  end
44
- q.breakable
45
- q.group 2, '[Body: ', ']' do
46
- q.seplist @body do |body|
47
- q.group 2, '[', ']' do
48
- q.seplist body do |text|
35
+
36
+ # @override
37
+ #: (untyped) -> String
38
+ def pretty_print(q)
39
+ q.group 2, '[Table: ', ']' do
40
+ q.group 2, '[Head: ', ']' do
41
+ q.seplist @header.zip(@align) do |text, align|
49
42
  q.pp text
43
+ if align
44
+ q.text ":"
45
+ q.breakable
46
+ q.text align.to_s
47
+ end
48
+ end
49
+ end
50
+ q.breakable
51
+ q.group 2, '[Body: ', ']' do
52
+ q.seplist @body do |body|
53
+ q.group 2, '[', ']' do
54
+ q.seplist body do |text|
55
+ q.pp text
56
+ end
57
+ end
50
58
  end
51
59
  end
52
60
  end
@@ -19,10 +19,57 @@ class RDoc::Markup::ToAnsi < RDoc::Markup::ToRdoc
19
19
  ##
20
20
  # Maps attributes to ANSI sequences
21
21
 
22
- def init_tags
23
- add_tag :BOLD, "\e[1m", "\e[m"
24
- add_tag :TT, "\e[7m", "\e[m"
25
- add_tag :EM, "\e[4m", "\e[m"
22
+ ANSI_STYLE_CODES_ON = {
23
+ BOLD: 1,
24
+ TT: 7,
25
+ EM: 4,
26
+ STRIKE: 9
27
+ }
28
+
29
+ ANSI_STYLE_CODES_OFF = {
30
+ BOLD: 22,
31
+ TT: 27,
32
+ EM: 24,
33
+ STRIKE: 29
34
+ }
35
+
36
+ # Apply the given attributes by emitting ANSI sequences.
37
+ # Emitting attribute changes are deferred until new text is added and applied in batch.
38
+ # This method computes the necessary ANSI codes to transition from the
39
+ # current set of applied attributes to the new set of +attributes+.
40
+
41
+ def apply_attributes(attributes)
42
+ before = @applied_attributes
43
+ after = attributes.sort
44
+ return if before == after
45
+
46
+ if after.empty?
47
+ emit_inline("\e[m")
48
+ elsif !before.empty? && before.size > (before & after).size + 1
49
+ codes = after.map {|attr| ANSI_STYLE_CODES_ON[attr] }.compact
50
+ emit_inline("\e[#{[0, *codes].join(';')}m")
51
+ else
52
+ off_codes = (before - after).map {|attr| ANSI_STYLE_CODES_OFF[attr] }.compact
53
+ on_codes = (after - before).map {|attr| ANSI_STYLE_CODES_ON[attr] }.compact
54
+ emit_inline("\e[#{(off_codes + on_codes).join(';')}m")
55
+ end
56
+ @applied_attributes = attributes
57
+ end
58
+
59
+ def add_text(text)
60
+ attrs = @attributes.keys
61
+ if @applied_attributes != attrs
62
+ apply_attributes(attrs)
63
+ end
64
+ emit_inline(text)
65
+ end
66
+
67
+ def handle_inline(text)
68
+ @applied_attributes = []
69
+ res = super
70
+ res << "\e[m" unless @applied_attributes.empty?
71
+ @applied_attributes = []
72
+ res
26
73
  end
27
74
 
28
75
  ##
@@ -17,14 +17,29 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
17
17
  @in_em = false
18
18
  end
19
19
 
20
- ##
21
- # Sets a flag that is picked up by #annotate to do the right thing in
22
- # #convert_string
20
+ def handle_inline(text)
21
+ initial_style = []
22
+ initial_style << :BOLD if @in_b
23
+ initial_style << :EM if @in_em
24
+ super(text, initial_style)
25
+ end
23
26
 
24
- def init_tags
25
- add_tag :BOLD, '+b', '-b'
26
- add_tag :EM, '+_', '-_'
27
- add_tag :TT, '', '' # we need in_tt information maintained
27
+ def add_text(text)
28
+ attrs = @attributes.keys
29
+ if attrs.include? :BOLD
30
+ styled = +''
31
+ text.chars.each do |c|
32
+ styled << "#{c}\b#{c}"
33
+ end
34
+ text = styled
35
+ elsif attrs.include? :EM
36
+ styled = +''
37
+ text.chars.each do |c|
38
+ styled << "_\b#{c}"
39
+ end
40
+ text = styled
41
+ end
42
+ emit_inline(text)
28
43
  end
29
44
 
30
45
  ##
@@ -68,39 +83,4 @@ class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc
68
83
  def calculate_text_width(text)
69
84
  text.gsub(/_\x08/, '').gsub(/\x08./, '').size
70
85
  end
71
-
72
- ##
73
- # Turns on or off regexp handling for +convert_string+
74
-
75
- def annotate(tag)
76
- case tag
77
- when '+b' then @in_b = true
78
- when '-b' then @in_b = false
79
- when '+_' then @in_em = true
80
- when '-_' then @in_em = false
81
- end
82
- ''
83
- end
84
-
85
- ##
86
- # Calls convert_string on the result of convert_regexp_handling
87
-
88
- def convert_regexp_handling(target)
89
- convert_string super
90
- end
91
-
92
- ##
93
- # Adds bold or underline mixed with backspaces
94
-
95
- def convert_string(string)
96
- return string unless @in_b or @in_em
97
- chars = if @in_b then
98
- string.chars.map do |char| "#{char}\b#{char}" end
99
- elsif @in_em then
100
- string.chars.map do |char| "_\b#{char}" end
101
- end
102
-
103
- chars.join
104
- end
105
-
106
86
  end