Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/cloudflare-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout PR Code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
repository: ${{ github.event.client_payload.pr_checkout_repository }}
ref: ${{ github.event.client_payload.pr_head_sha }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/fork-preview-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
github.event.workflow_run.event == 'pull_request'
steps:
- name: Download PR information
uses: actions/download-artifact@v4
uses: actions/download-artifact@v5
with:
name: pr
github-token: ${{ secrets.GITHUB_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
if: ${{ github.repository == 'ruby/rdoc' && !startsWith(github.event_name, 'pull') }}
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Setup Ruby
uses: ruby/setup-ruby@eaecf785f6a34567a6d97f686bbb7bccc1ac1e5c # v1.237.0
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
fail-fast: false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # v3.3.0
- uses: actions/checkout@v5 # v3.3.0
# libyaml-dev is needed for psych, see https://github.com/ruby/setup-ruby/issues/409
- if: ${{ matrix.os == 'ubuntu-latest' }}
run: sudo apt install libyaml-dev
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/push_gem.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
with:
egress-policy: audit

- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

- name: Set up Ruby
uses: ruby/setup-ruby@eaecf785f6a34567a6d97f686bbb7bccc1ac1e5c # v1.237.0
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ruby-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
bundler: none
- name: Save latest buildable revision to environment
run: echo "REF=$(ruby -v | cut -d')' -f1 | cut -d' ' -f5)" >> $GITHUB_ENV
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3.1.0
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v3.1.0
with:
repository: ruby/ruby
path: ruby/ruby
Expand All @@ -51,7 +51,7 @@ jobs:
autoconf
./configure -C --disable-install-doc
working-directory: ruby/ruby
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3.1.0
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v3.1.0
with:
path: ruby/rdoc
- name: Build RDoc locally
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:

runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4 # v3.3.0
- uses: actions/checkout@v5 # v3.3.0
# libyaml-dev is needed for psych, see https://github.com/ruby/setup-ruby/issues/409
- if: ${{ matrix.os == 'ubuntu-latest' }}
run: sudo apt install libyaml-dev
Expand Down
43 changes: 27 additions & 16 deletions lib/rdoc/markdown.kpeg
Original file line number Diff line number Diff line change
Expand Up @@ -497,6 +497,17 @@
end
end

##
# Wraps `text` in code markup for rdoc inline formatting

def code text
# trim even spaces
text = $2 while /\A( +|\t+)(.*)\1\z/ =~ text
# escape unescaped backslash at the end
backslash_at_end = "\\" if /(?<!\\)(?:\\\\)*\\\z/.match?(text)
"<code>#{text}#{backslash_at_end}</code>"
end

##
# Parses inline markdown in table cells

Expand Down Expand Up @@ -1104,32 +1115,32 @@ Ticks3 = "```" !"`"
Ticks4 = "````" !"`"
Ticks5 = "`````" !"`"

Code = ( Ticks1 @Sp < (
Code = ( Ticks1 < (
( !"`" Nonspacechar )+ | !Ticks1 /`+/ |
!( @Sp Ticks1 ) ( @Spacechar | @Newline !@BlankLine )
)+ > @Sp Ticks1 |
Ticks2 @Sp < (
!Ticks1 ( @Spacechar | @Newline !@BlankLine )
)+ > Ticks1 |
Ticks2 < (
( !"`" Nonspacechar )+ |
!Ticks2 /`+/ |
!( @Sp Ticks2 ) ( @Spacechar | @Newline !@BlankLine )
)+ > @Sp Ticks2 |
Ticks3 @Sp < (
!Ticks2 ( @Spacechar | @Newline !@BlankLine )
)+ > Ticks2 |
Ticks3 < (
( !"`" Nonspacechar )+ |
!Ticks3 /`+/ |
!( @Sp Ticks3 ) ( @Spacechar | @Newline !@BlankLine )
)+ > @Sp Ticks3 |
Ticks4 @Sp < (
!Ticks3 ( @Spacechar | @Newline !@BlankLine )
)+ > Ticks3 |
Ticks4 < (
( !"`" Nonspacechar )+ |
!Ticks4 /`+/ |
!( @Sp Ticks4 ) ( @Spacechar | @Newline !@BlankLine )
)+ > @Sp Ticks4 |
Ticks5 @Sp < (
!Ticks4 ( @Spacechar | @Newline !@BlankLine )
)+ > Ticks4 |
Ticks5 < (
( !"`" Nonspacechar )+ |
!Ticks5 /`+/ |
!( @Sp Ticks5 ) ( @Spacechar | @Newline !@BlankLine )
)+ > @Sp Ticks5
!Ticks5 ( @Spacechar | @Newline !@BlankLine )
)+ > Ticks5
)
{ "<code>#{text}</code>" }
{ code text }

RawHtml = < (HtmlComment | HtmlBlockScript | HtmlTag) >
{ if html? then text else '' end }
Expand Down
5 changes: 3 additions & 2 deletions test/rdoc/rdoc_generator_darkfish_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,8 @@ def test_meta_tags_for_markdown_files_paragraph
top_level.comment = <<~MARKDOWN
# Distributed Ruby: dRuby

dRuby is a distributed object system for Ruby. It allows an object.
dRuby is a distributed object system for Ruby. It allows an object in one
Ruby process to invoke methods on an object in another Ruby process.
MARKDOWN

@g.generate
Expand All @@ -480,7 +481,7 @@ def test_meta_tags_for_markdown_files_paragraph
"<meta name=\"description\" content=\"" \
"README: dRuby " \
"dRuby is a distributed object system for Ruby. " \
"It allows an object."
"It allows an object in one Ruby process to invoke methods on an object"
)
end

Expand Down
82 changes: 79 additions & 3 deletions test/rdoc/rdoc_markdown_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -139,25 +139,101 @@ def test_parse_code
expected = doc(para("Code: <code>text</code>"))
assert_equal expected, doc

doc = parse "Code: ` text`"
expected = doc(para("Code: <code> text</code>"))
assert_equal expected, doc

doc = parse "Code: `text `"
expected = doc(para("Code: <code>text </code>"))
assert_equal expected, doc

doc = parse "Code: ` text `"
expected = doc(para("Code: <code>text</code>"))
assert_equal expected, doc

doc = parse "Code: ` text\t`"
expected = doc(para("Code: <code> text\t</code>"))
assert_equal expected, doc

doc = parse "Code: `\ttext `"
expected = doc(para("Code: <code>\ttext </code>"))
assert_equal expected, doc

doc = parse "Code: ``text`s``"
expected = doc(para("Code: <code>text`s</code>"))
assert_equal expected, doc

doc = parse "Code: `` text`s``"
expected = doc(para("Code: <code> text`s</code>"))
assert_equal expected, doc

doc = parse "Code: ``text`s ``"
expected = doc(para("Code: <code>text`s </code>"))
assert_equal expected, doc

doc = parse "Code: `` text`s ``"
expected = doc(para("Code: <code>text`s</code>"))
assert_equal expected, doc

doc = parse "Code: `` text`s\t``"
expected = doc(para("Code: <code> text`s\t</code>"))
assert_equal expected, doc

doc = parse "Code: ``\ttext`s ``"
expected = doc(para("Code: <code>\ttext`s </code>"))
assert_equal expected, doc

doc = parse "Code: ```text`s```"
expected = doc(para("Code: <code>text`s</code>"))
assert_equal expected, doc

doc = parse "Code: ``` text`s```"
expected = doc(para("Code: <code> text`s</code>"))
assert_equal expected, doc

doc = parse "Code: ```text`s ```"
expected = doc(para("Code: <code>text`s </code>"))
assert_equal expected, doc

doc = parse "Code: ``` text`s ```"
expected = doc(para("Code: <code>text`s</code>"))
assert_equal expected, doc

doc = parse "Code: ``` text`s\t```"
expected = doc(para("Code: <code> text`s\t</code>"))
assert_equal expected, doc

doc = parse "Code: ```\ttext`s ```"
expected = doc(para("Code: <code>\ttext`s </code>"))
assert_equal expected, doc

doc = parse "Code: `\\`"
expected = doc(para("Code: <code>\\\\</code>"))
assert_equal expected, doc

doc = parse "Code: ` \\ `"
expected = doc(para("Code: <code>\\\\</code>"))
assert_equal expected, doc

doc = parse "Code: `\\`s`"
expected = doc(para("Code: <code>\\\\</code>s`"))
assert_equal expected, doc

doc = parse "Code: ``\\`s``"
expected = doc(para("Code: <code>\\`s</code>"))
assert_equal expected, doc

doc = parse "Code: `` \\`s ``"
expected = doc(para("Code: <code>\\`s</code>"))
assert_equal expected, doc

doc = parse "Code: ```\\`s```"
expected = doc(para("Code: <code>\\`s</code>"))
assert_equal expected, doc

doc = parse "Code: ``` \\`s ```"
expected = doc(para("Code: <code>\\`s</code>"))
assert_equal expected, doc
end

def test_parse_code_github
Expand Down Expand Up @@ -195,7 +271,7 @@ def test_parse_code_github_format
doc = <<-MD
Example:

``` ruby
```ruby
code goes here
```
MD
Expand Down Expand Up @@ -1173,14 +1249,14 @@ def test_gfm_table_with_backslashes_in_code_spans

body = [
['Plain', '<code>$\\\\</code>', 'Should show backslash'],
['Escaped', '<code>$\\\\</code>', 'Should show backslash'],
['Escaped', '<code>$\\\\ </code>', 'Should show backslash'],
['Multiple', '<code>\\\\n\\\\t</code>', 'Should show backslashes'],
]

expected_table = @RM::Table.new(head, align, body)

expected = doc(
para('Plain text: <code>$\\\\</code> and <code>$\\\\</code> should work.'),
para('Plain text: <code>$\\\\</code> and <code>$\\\\ </code> should work.'),
expected_table
)

Expand Down
Loading