Commit graph

525 commits

Author SHA1 Message Date
David Rodríguez
3169ffc0d6 [ruby/rdoc] Add frozen string literal support
daac9d0471
2020-05-24 23:47:24 +09:00
aycabta
37b8a7afca [ruby/rdoc] Add instance_methods because instance_method_list should be obsolete
9b1da32254
2020-05-24 23:47:24 +09:00
Nobuyoshi Nakada
e6d1363ae6 [ruby/rdoc] Fixed inverted CSS for note-list and label-list
a13d6439da
2020-05-24 23:47:24 +09:00
aycabta
32e0ff26e0 [ruby/rdoc] Delegate ERB args correctly
82ff37a822
2020-05-24 23:47:24 +09:00
Jeremy Evans
7e7981c84f [ruby/rdoc] Treat multiple Ruby methods calling the same C method as aliases
Previously, only calls to rb_define_alias were treated as aliases.
This treats calls to rb_define_method with the same C function as
aliases, with the first function defined being the primary method.

This move the dedup code from the C parser to AnyMethod, and has
AnyMethod look in its aliases to find the call_seq.

Switch the deduplication code to remove lines matching one of the
other aliases, instead of only keeping lines matching the current
alias.  The previous approach could eliminate all call_seq lines
in cases where no line matched.  This was necessary to pass
tests when call_seq does deduplication by default.

The only change to the darkfish template is to not perform
unnecessary work by deduplicating twice.

0ead78616b
2020-05-24 23:47:24 +09:00
aycabta
f52a4690f8 [ruby/rdoc] Process crossref before tidylink
The crossref must be linked before tidylink because Klass.method[:sym] will be
processed as a tidylink first and will be broken.

0f47baf6d2
2020-05-24 23:47:24 +09:00
Nate Matykiewicz
c79f9ea606 [ruby/rdoc] Escape method names in HTML
The following is invalid HTML:
<a href="Array.html#method-i-3C-3C"><code><<</code></a></p>

Incorrect:
<code><<</code>

Correct:
<code>&lt;&lt;</code>

Fixes #761

b120d087f6
2020-05-24 23:47:24 +09:00
Hiroshi SHIBATA
5c6269c459
Support XDG_* (#2174)
* Support XDG_CONFIG_HOME for gemrc.

* Support XDG_DATA_HOME for .gem

* Added test for XDG_DATA_HOME

* Do not reuse environmental variable.

* Unify .rdoc path to RDoc.home.

* Support XDG_DATA_HOME for .rdoc

* Ignore exists?

* Extracted config_home path

* Use XDG_CONFIG_HOME for default credential path

* Fixed inconsistency location.

* Fixed the broken tests.

* Support XDG_CONFIG_HOME for irbrc

* Introduce Gem.cache_home as XDG_CACHE_HOME

* Use Gem.cache_home instead of Gem.config_home for the credential file of RubyGems.

* Initialized the old configurations

* Fixed test failure related the configuration initialization

* restore XDG_DATA_HOME

* Fixed the broken examples of bundler with XDG_*

* Do not modify environmental variable on test file

* Use XDG_DATA_HOME insted of XDG_CACHE_HOME for credential file

* stub out Gem.data_home

* Move dir accessor to defaults.rb file

* Use XDG_DATA_HOME for signed gem features

* Use XDG_DATA_HOME for spec cache

* Do not rely on Gem.user_home

* Gem.user_home is always exists. Don't need to use FileUitls.mkdir_p

* Bump support version to RubyGems 3.2.0+

* Removed the needless fallback configuration

* Fixed the inconsistency methods that are find_config_file and config_file

* Use Gem.configuration.credentials_path instead of hard-coded path

* gem_path is always provided

* Removed the duplicated code of find_home

* Also removed the duplicated code of user_home

* use Gem::UNTAINT instead of untaint for surpressing the warnings

* Use File.directory

* Restore XDG_DATA_HOME

* Use File.write
2020-04-23 19:16:06 +09:00
Nobuyoshi Nakada
14e013cdbb [ruby/rdoc] Drop old rubies
* `RbConfig::CONFIG['ridir']` has been set since 1.9.2

* `ENV["HOME"]` has been defaulted to `USERPROFILE` since 1.9.0,
  and backported to 1.8.5 or later.

a3a614e676
2020-04-23 15:13:27 +09:00
Nobuyoshi Nakada
2b7409a2f2
Specify explicit separator not to be affected by $; 2020-03-08 17:38:37 +09:00
Nobuyoshi Nakada
f5abcf767e [ruby/rdoc] Removed RDoc::Context::Section#sequence
It has been deprecated since 2011.

5c2aa0f77d
2020-02-20 18:06:19 +09:00
aycabta
30c5e8c4b9 [ruby/rdoc] Version 6.2.1
c65e14d112
2019-12-24 08:04:01 +09:00
aycabta
2bf0743edc Update parsers of RDoc that are generated by Racc 2019-12-24 07:58:53 +09:00
aycabta
adc9b3ca7f [ruby/rdoc] Support newline in the middle of constant definition
74d3984324
2019-12-24 07:58:53 +09:00
aycabta
e50e552693 [ruby/rdoc] Treat Proc#call syntax sugar for constant correctly
957d041ae0
2019-12-24 07:58:53 +09:00
Nobuyoshi Nakada
e68999c82c
Fixed misspellings
Fixed misspellings reported at [Bug #16437], for default gems.
2019-12-20 12:19:45 +09:00
aycabta
2d0a1a1869 Fix ghost method line no 2019-11-28 08:19:05 +09:00
aycabta
c8ce37d427 [ruby/rdoc] Support different drive latters in include paths
946d2592e2
2019-10-29 12:34:44 +09:00
aycabta
ad9c713728 Make (#methodname) a link with --hyperlink-all option 2019-10-26 16:27:23 +09:00
Nobuyoshi Nakada
d70fdeedf0 Make (#methodname) a link 2019-10-26 15:48:11 +09:00
aycabta
12d05537d7 Update required_ruby_version to 2.4.0 2019-10-09 12:25:50 +09:00
Nobuyoshi Nakada
3bb1162cac
Folded files in gemspec 2019-09-16 21:51:48 +09:00
aycabta
3568029823 Remove .document and .gitignore from file list of rdoc.gemspec 2019-09-08 03:07:45 +09:00
Jeremy Evans
d08e1004e0 Fix keyword argument separation issues in lib
Mostly requires adding ** in either calls or method definitions.
2019-08-30 12:39:31 -07:00
aycabta
e82719c651 Remove jquery.js from file list of rdoc.gemspec 2019-08-28 19:47:22 +09:00
Kazuhiro NISHIYAMA
989e8ad322
Remove debug print [ci skip] 2019-08-28 10:34:56 +09:00
aycabta
f308ab2131 Remove jquery.js 2019-08-28 01:12:14 +09:00
aycabta
d8fa88294f Version 6.2.0 2019-08-28 00:48:12 +09:00
aycabta
39810b4035 Good bye jQuery 2019-08-28 00:48:12 +09:00
Yusuke Endoh
bc1e2271af lib/rdoc/markup/parser.rb: remove a unused variable initialization 2019-08-19 10:07:05 +09:00
aycabta
2a65498ca2 Remove CI files from list 2019-08-17 20:20:04 +09:00
Hiroshi SHIBATA
e095803c37 Removed formatter_test_case and text_formatter_test_case from Gem::Specification#files. 2019-08-17 20:20:04 +09:00
Hiroshi SHIBATA
3a06c11a7d Removed autoload from Markup. 2019-08-17 20:20:04 +09:00
Hiroshi SHIBATA
79fe84edf5 Removed test_case files from lib directory. 2019-08-17 20:20:04 +09:00
Yusuke Endoh
229ae3269d lib/rdoc/store.rb: Use Marshal.dump(obj, io)
instead of dumping obj to a string and then saving the string.
It omits object creation.
2019-08-16 21:27:05 +09:00
Yusuke Endoh
cd41378ef9 lib/rdoc/parser/ruby.rb: Avoid .chars.to_a.last
The code creates a lot of useless objects.
Instead, using a regexp is shorter and faster.
2019-08-16 11:36:47 +09:00
Yusuke Endoh
f71bd7477e RDoc::Parser::C: Integrate do_classes and do_modules by one regexp match
The full scan of the C source code (`@content.scan`) is very slow.
The old code invokes the scan six times in `do_classes` and
`do_modules`.

This change integrates the six scans into one by merging the regexps.
The integrated regexp is a bit hard to maintain, but the speed up is
significant: approx. 30 sec -> 20 sec in Ruby's `make rdoc`.

In addition, this change omits `do_boot_defclass` unless the file name
is `class.c`.  `boot_defclass` is too specific to Ruby's source code, so
RDoc should handle it as a special case.

Before this change:

     TOTAL    (pct)     SAMPLES    (pct)     FRAME
       858  (13.6%)         858  (13.6%)     (garbage collection)
       292   (4.6%)         264   (4.2%)     RDoc::Parser::C#do_define_class
       263   (4.2%)         250   (3.9%)     RDoc::Parser::C#do_define_module
       275   (4.3%)         241   (3.8%)     RDoc::Parser::C#do_define_class_under
       248   (3.9%)         237   (3.7%)     RDoc::Parser::C#do_define_module_under
       234   (3.7%)         234   (3.7%)     RDoc::Parser::C#gen_body_table
       219   (3.5%)         219   (3.5%)     Ripper::Lexer#state_obj
       217   (3.4%)         216   (3.4%)     RDoc::Parser::C#do_struct_define_without_accessor
       205   (3.2%)         205   (3.2%)     RDoc::Parser::C#do_boot_defclass
       205   (3.2%)         205   (3.2%)     RDoc::Parser::C#do_singleton_class

The six methods take approx. 22.2%.
`do_define_class` (4.2%) + `do_define_class_under` (3.8%) +
`do_define_module` (3,9$) + `do_define_module_under` (3.7%) +
`do_struct_define_without_accessor` (3.4%) + `do_singleton_class` (3.2%)

After this change, the methods are integrated to `do_classes_and_modules`
which takes only 5.8%.

     TOTAL    (pct)     SAMPLES    (pct)     FRAME
       812  (16.7%)         812  (16.7%)     (garbage collection)
       355   (7.3%)         284   (5.8%)     RDoc::Parser::C#do_classes_and_modules
       225   (4.6%)         225   (4.6%)     RDoc::Parser::C#gen_body_table
       429   (8.8%)         210   (4.3%)     RDoc::Parser::RubyTools#get_tk
       208   (4.3%)         208   (4.3%)     RDoc::TokenStream#add_tokens
2019-08-16 06:07:11 +09:00
Hiroshi SHIBATA
e87e10e5e7 Use test/unit instead of test-unit. Because test-unit is only provided standalone gem. 2019-08-16 06:07:11 +09:00
Hiroshi SHIBATA
8a18a639b7 Use Gemfile instead of add_development_dependency. 2019-08-16 06:07:11 +09:00
Nobuyoshi Nakada
1a5304228a Use test-unit instead of minitest
Minitest 6 will err `assert_equal` with `nil`.
https://github.com/seattlerb/minitest/issues/779
2019-08-16 06:07:11 +09:00
aycabta
64f9f512c5 Treat linking to Markdown label correctly 2019-08-16 06:02:45 +09:00
Yusuke Endoh
723a37d038 Separate RDoc::TokenStream#add_tokens and #add_token
The old version of `add_tokens` accepts an array of tokens, and
multiple arguments of tokens by using `Array#flatten`.
And `add_token` was an alias to `add_tokens`.

I think it is unnecessarily flexible; in fact, all callsites of
`add_tokens` (except test) passes only an array of tokens.
And the code created a lot of temporal arrays.

This change makes `add_tokens` accept only one array of tokens,
and does `add_token` accept one token.  It is a bit faster (about
1 second in Ruby's `make rdoc`), and it ls also cleaner in my point of
view.
2019-08-16 06:02:45 +09:00
Yusuke Endoh
0a0760aa63 Refactor and improve performance of RDoc::Markup::Parser
This change introduces a wrapper of StringScanner that is aware of the
current position (column and lineno).
It has two advantages: faster and more modular.

The old code frequently runs `@input.byteslice(0, byte_offset).length`
to get the current position, but it was painfully slow.  This change
keeps track of the position at each scan, which reduces about half of
time of "Generating RI format into ..." in Ruby's `make rdoc`
(5.5 sec -> 3.0 sec).

And the old code used four instance variables (`@input`, `@line`,
`@line_pos`, and `@s`) to track the position.  This change factors them
out into MyStringScanner, so now only one variable (`@s`) is needed.
2019-08-16 06:02:45 +09:00
Kazuhiro NISHIYAMA
2e6f777f9e
/o should not use with instance variable
for example:
```
class C;def initialize(pat);@pat=pat;end;def re;/#{@pat}/o;end;end
C.new('1').re #=> /1/
C.new('2').re #=> /1/
```
2019-07-30 12:44:38 +09:00
Nobuyoshi Nakada
e62a60927e
Should match the beginning/end of string 2019-07-29 23:05:41 +09:00
Nobuyoshi Nakada
3ee63cfe88
Match suffix for content type more precisely
Suffix needs a dot and should match the end of string.
2019-07-29 23:05:41 +09:00
Nobuyoshi Nakada
bef398eb87
Chomp html suffix literally
Unescaped dot does not mean a suffix.
2019-07-29 23:05:41 +09:00
Maxime Lapointe
21ce8b3298 [ruby/rdoc] Fix image links in rdoc.css
Every image in the rdoc.css that use url has the wrong one. They end up pointing to `css/images/zoom.png` instead of `images/zoom.png`.

Just open this page https://ruby.github.io/rdoc/RDoc/CodeObject.html on chrome and you can see in the console the spam of the failed GET queries.

This fixes it.
daf36f9894
2019-07-26 17:32:46 +08:00
aycabta
8bb4892376
[ruby/rdoc] Update jQuery to 3.3.1
17df871ee
2019-07-26 17:32:19 +08:00
aycabta
3b0f952ec8 [ruby/rdoc] Support nesting text page URL
RDoc::Servlet#documentation_page replaces "/" in URL with "::" for class
or module but it's also used for the replaced name on text pages. This
causes a bug when text pages are in nesting directory.

This commit fixes #615.

d73b915b1e
2019-07-26 17:29:17 +08:00