Class: RDoc::Parser::ChangeLog::Git::LogEntry

Inherits:
Struct
  • Object
show all
Defined in:
lib/rdoc/parser/changelog.rb

Constant Summary collapse

HEADING_LEVEL =
3

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base, commit, author, email, date, contents) ⇒ LogEntry

Returns a new instance of LogEntry.



274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
# File 'lib/rdoc/parser/changelog.rb', line 274

def initialize(base, commit, author, email, date, contents)
  case contents
  when String
    if base&.match(%r[\A([^:/]+:/+[^/]+/)[^/]+/[^/]+/])
      repo, host = $&, $1
      contents = contents.dup
      # base: https://github.com/ruby/ruby/
      #   Fix #15791 -> Fix [#15791](https://github.com/ruby/ruby/pull/15791)
      #   GH-15791 -> [GH-15791](https://github.com/ruby/ruby/pull/15791)
      #   (#15791) -> ([#15791](https://github.com/ruby/ruby/pull/15791))
      contents.gsub!(/\b(?:(?i:fix(?:e[sd])?) +)\K\#(\d+\b)|\bGH-(\d+)\b|\(\K\#(\d+)(?=\))/) do
        "[#{$&}](#{repo}pull/#{$1 || $2 || $3})"
      end
      # repo#PR, repo@HASH
      #   ruby/ruby#15791 -> [ruby/ruby#15791](https://github.com/ruby/ruby/pull/15791)
      #   ruby/ruby@a8a989b6 -> [ruby/ruby@a8a989b6](https://github.com/ruby/ruby/commit/a8a989b6)
      # ref in branckets is not extended
      #   [ruby/net-imap#543][ruby/ruby#15791] -> [ruby/net-imap#543][ruby/ruby#15791]
      contents.gsub!(%r[(?<![-\w#/@]|\]\[)([-\w]+/[-\w]+)(?:@(\h{8,40})|\#(\d+))(?![-\w#/@]|\]\[)]) do
        path = defined?($2) ? "commit/#{$2}" : "pull/#{$3}"
        "[#{$&}](#{host}#{$1}/#{path})"
      end
    end

    contents = RDoc::Markdown.parse(contents).parts.each do |body|
      case body
      when RDoc::Markup::Heading
        body.level += HEADING_LEVEL + 1
      end
    end
    case first = contents[0]
    when RDoc::Markup::Paragraph
      contents[0] = RDoc::Markup::Heading.new(HEADING_LEVEL + 1, first.text)
    end
  end
  super
end

Instance Attribute Details

#authorObject

Returns the value of attribute author

Returns:

  • (Object)

    the current value of author



271
272
273
# File 'lib/rdoc/parser/changelog.rb', line 271

def author
  @author
end

#baseObject

Returns the value of attribute base

Returns:

  • (Object)

    the current value of base



271
272
273
# File 'lib/rdoc/parser/changelog.rb', line 271

def base
  @base
end

#commitObject

Returns the value of attribute commit

Returns:

  • (Object)

    the current value of commit



271
272
273
# File 'lib/rdoc/parser/changelog.rb', line 271

def commit
  @commit
end

#contentsObject

Returns the value of attribute contents

Returns:

  • (Object)

    the current value of contents



271
272
273
# File 'lib/rdoc/parser/changelog.rb', line 271

def contents
  @contents
end

#dateObject

Returns the value of attribute date

Returns:

  • (Object)

    the current value of date



271
272
273
# File 'lib/rdoc/parser/changelog.rb', line 271

def date
  @date
end

#emailObject

Returns the value of attribute email

Returns:

  • (Object)

    the current value of email



271
272
273
# File 'lib/rdoc/parser/changelog.rb', line 271

def email
  @email
end

Instance Method Details

#accept(visitor) ⇒ Object



343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
# File 'lib/rdoc/parser/changelog.rb', line 343

def accept(visitor)
  visitor.accept_heading self
  begin
    if visitor.respond_to?(:code_object=)
      code_object = visitor.code_object
      visitor.code_object = self
    end
    contents.each do |body|
      body.accept visitor
    end
  ensure
    if visitor.respond_to?(:code_object)
      visitor.code_object = code_object
    end
  end
end

#arefObject



316
317
318
# File 'lib/rdoc/parser/changelog.rb', line 316

def aref
  commit
end

#label(context = nil) ⇒ Object



324
325
326
# File 'lib/rdoc/parser/changelog.rb', line 324

def label(context = nil)
  aref
end

#legacy_arefObject



320
321
322
# File 'lib/rdoc/parser/changelog.rb', line 320

def legacy_aref
  "label-#{commit}"
end

#legacy_label(context = nil) ⇒ Object



328
329
330
# File 'lib/rdoc/parser/changelog.rb', line 328

def legacy_label(context = nil)
  legacy_aref
end

#levelObject



312
313
314
# File 'lib/rdoc/parser/changelog.rb', line 312

def level
  HEADING_LEVEL
end

#pretty_print(q) ⇒ Object

:nodoc:



360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
# File 'lib/rdoc/parser/changelog.rb', line 360

def pretty_print(q) # :nodoc:
  q.group(2, '[log_entry: ', ']') do
    q.text commit
    q.text ','
    q.breakable
    q.group(2, '[date: ', ']') { q.text date }
    q.text ','
    q.breakable
    q.group(2, '[author: ', ']') { q.text author }
    q.text ','
    q.breakable
    q.group(2, '[email: ', ']') { q.text email }
    q.text ','
    q.breakable
    q.pp contents
  end
end

#textObject



332
333
334
335
336
337
338
339
340
341
# File 'lib/rdoc/parser/changelog.rb', line 332

def text
  case base
  when nil
    "#{date}"
  when /%s/
    "{#{date}}[#{base % commit}]"
  else
    "{#{date}}[#{base}#{commit}]"
  end + " {#{author}}[mailto:#{email}]"
end