| Age | Commit message (Collapse) | Author |
|
The code creates a lot of useless objects.
Instead, using a regexp is shorter and faster.
|
|
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
|
|
standalone gem.
|
|
|
|
Minitest 6 will err `assert_equal` with `nil`.
https://github.com/seattlerb/minitest/issues/779
|
|
|
|
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.
|
|
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.
|
|
|
|
|
|
|
|
\vref is not valid doc syntax
Notes:
Merged: https://github.com/ruby/ruby/pull/2364
|
|
|
|
Now Proc#to_s returns
"#<Proc:0x00000237a0f5f170@t.rb:1>".
However, it is convenient to select a file name by (double-)clicking
on some terminals by separating ' ' instead of '@' like
"#<Proc:0x00000237a0f5f170 t.rb:1>"
[Feature #16101]
|
|
|
|
|
|
Fix TypeError when typing `''.[TAB]`
|
|
|
|
This reverts commit 1ee88c51b3c319b74b69540e111e4a1c24833cad.
|
|
|
|
RUBY_PLATFORM on JRuby is always "java", so it will not reflect
the host operating system. This regex appears to be the consensus
way to detect Windows based on a search of Ruby code on Github:
https://github.com/search?q=%2Fmswin%7Cmsys%7Cmingw%7Ccygwin%7Cbccwin%7Cwince%7Cemc%2F&type=Code
|
|
|
|
|
|
Closes: https://github.com/ruby/ruby/pull/1425
|
|
JRUBY_VERSION
* RUBY_ENGINE and RUBY_ENGINE_VERSION are defined on every modern Ruby.
* There is no such constant as TRUFFLERUBY_VERSION or RBX_VERSION.
https://github.com/rubygems/rubygems/commit/431d0aefdd
|
|
https://github.com/rubygems/rubygems/commit/83eced0b39
|
|
https://github.com/rubygems/rubygems/commit/5c3158d975
|
|
https://github.com/rubygems/rubygems/commit/b0588a87b1
|
|
https://github.com/rubygems/rubygems/commit/5a1d3d618d
|
|
https://github.com/ruby/rexml/commit/404bd99a7c
|
|
relational expressions
GitHub: fix #18
Reported by Mirko Budszuhn. Thanks!!!
https://github.com/ruby/rexml/commit/0dca2a2ba0
|
|
GitHub: fix #18
It must be 0.
Reported by Mirko Budszuhn. Thanks!!!
https://github.com/ruby/rexml/commit/b48f3afa3b
|
|
nonexistent case
It must be an empty string.
https://github.com/ruby/rexml/commit/81bc7cd4f5
|
|
https://github.com/ruby/rexml/commit/feb8ddb1ec
|
|
GitHub: fix #17
There is a bug when they are used against node set. They should return
boolean value but they returned node set.
Reported by Mirko Budszuhn. Thanks!!!
https://github.com/ruby/rexml/commit/a02bf38440
|
|
https://github.com/ruby/rexml/commit/185062a4a4
|
|
variable
https://github.com/ruby/rexml/commit/59378a16ea
|
|
https://github.com/ruby/rexml/commit/54452c103a
|
|
* Message less confusing error to human
* Problem: Following error message is not helpful, because you have to reason
that '' actually means it's in the top-level, and the 'div' (not '</div>') is
an end tag
require "rexml/parsers/lightparser"
REXML::Parsers::LightParser.new('</div>').parse
#=> Missing end tag for '' (got 'div')
* Solution: add a special case in error handling just to change the error message
require "rexml/parsers/lightparser"
REXML::Parsers::LightParser.new('</div>').parse
#=> Unexpected top-level end tag (got 'div')
* Refactor by removing unnecessary `md` check
* Thanks @a_matsuda to review this at asakusa.rb!
https://github.com/ruby/rexml/commit/f6528d4477
|
|
Patch by Alyssa Ross. Thanks!!!
https://github.com/ruby/rexml/commit/2a53c54f58
|
|
https://github.com/ruby/rexml/commit/a124a19b9a
|
|
https://github.com/ruby/rexml/commit/c0e3f14564
|
|
NOTE: It's a backward incompatible change. If we have any serious
problems with this change, we may revert this change.
The XML namespace specification says the default namespace doesn't
apply to attribute names but it does in REXML without this change:
https://www.w3.org/TR/xml-names/#uniqAttrs
> the default namespace does not apply to attribute names
REXML reports a parse error for the following XML that is described as
a valid XML in the XML nsmaspace specification without this change:
<!-- http://www.w3.org is bound to n1 and is the default -->
<x xmlns:n1="http://www.w3.org"
xmlns="http://www.w3.org" >
<good a="1" b="2" />
<good a="1" n1:a="2" />
</x>
If attribute doesn't have prefix, the attribute should return "" for
both #prefix and #namespace.
https://github.com/ruby/rexml/commit/9e4fd552bc
|
|
https://github.com/ruby/rexml/commit/2384586811
|
|
This reverts commit 61b73c1bf8dc64d97fba7f0a8c503c24b11313f5.
"*:local_name" becomes prefix=nil.
https://github.com/ruby/rexml/commit/9e7dd4cd4e
|
|
It must not be nil.
https://github.com/ruby/rexml/commit/61b73c1bf8
|
|
https://github.com/ruby/rexml/commit/70310a06e5
|
|
prefix
[ruby-list:50733]
Reported by Yasuhiro KIMURA. Thanks!!!
https://github.com/ruby/rexml/commit/8f3c5c176a
|
|
https://github.com/ruby/rexml/commit/0f79e71210
|
|
Closes: https://github.com/ruby/ruby/pull/1749
|