summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2019-08-16lib/rdoc/parser/ruby.rb: Avoid `.chars.to_a.last`Yusuke Endoh
The code creates a lot of useless objects. Instead, using a regexp is shorter and faster.
2019-08-16RDoc::Parser::C: Integrate do_classes and do_modules by one regexp matchYusuke Endoh
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-16Use test/unit instead of test-unit. Because test-unit is only provided ↵Hiroshi SHIBATA
standalone gem.
2019-08-16Use Gemfile instead of add_development_dependency.Hiroshi SHIBATA
2019-08-16Use test-unit instead of minitestNobuyoshi Nakada
Minitest 6 will err `assert_equal` with `nil`. https://github.com/seattlerb/minitest/issues/779
2019-08-16Treat linking to Markdown label correctlyaycabta
2019-08-16Separate RDoc::TokenStream#add_tokens and #add_tokenYusuke Endoh
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-16Refactor and improve performance of RDoc::Markup::ParserYusuke Endoh
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-16Don't echo results of assignment expressionsSteven Willis
2019-08-16Fixed class, module and method references [ci skip]Nobuyoshi Nakada
2019-08-15Fixed a markup in different format [ci skip]Nobuyoshi Nakada
2019-08-14Remove strange formatting from English [ci skip]Nikolai B
\vref is not valid doc syntax Notes: Merged: https://github.com/ruby/ruby/pull/2364
2019-08-14fix last commit.Koichi Sasada
2019-08-14change Proc#to_s format ('@...' -> ' ...') (#2362)Koichi Sasada
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]
2019-08-13Fix a typo [ci skip]Kazuhiro NISHIYAMA
2019-08-09Fix typo: duplicated the [skip-ci]ohbarye
2019-08-09Revert a6e32855d079e8f3806d8be8a5f5cf7b3a967133 partiallyKazuhiro NISHIYAMA
Fix TypeError when typing `''.[TAB]`
2019-08-07Fixed deprecation messageNobuyoshi Nakada
2019-08-06Revert "Don't echo results of assignment expressions"aycabta
This reverts commit 1ee88c51b3c319b74b69540e111e4a1c24833cad.
2019-08-06Don't echo results of assignment expressionsSteven Willis
2019-08-06Use host_os from RbConfig to detect host OS.Charles Oliver Nutter
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
2019-08-06Remove obsolete TODO commentaycabta
2019-08-06Update Unicode URL to 12.1.0aycabta
2019-08-06Improve same directory detection in FileUtilsJustin Collins
Closes: https://github.com/ruby/ruby/pull/1425
2019-08-05[rubygems/rubygems] Use the standard RUBY_ENGINE_VERSION instead of ↵Benoit Daloze
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
2019-08-05[rubygems/rubygems] Use gsub with HashKazuhiro NISHIYAMA
https://github.com/rubygems/rubygems/commit/83eced0b39
2019-08-05[rubygems/rubygems] Revert cadb66037d9b58c80fc795f39384d533229a1f73bronzdoc
https://github.com/rubygems/rubygems/commit/5c3158d975
2019-08-05[rubygems/rubygems] Fixed to warn with shadowing outer local variable.Hiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/b0588a87b1
2019-08-05[rubygems/rubygems] Remove FIXME commentbronzdoc
https://github.com/rubygems/rubygems/commit/5a1d3d618d
2019-08-04[ruby/rexml] gemspec: updateSutou Kouhei
https://github.com/ruby/rexml/commit/404bd99a7c
2019-08-04[ruby/rexml] xpath: add missing value conversions for equality and ↵Kouhei Sutou
relational expressions GitHub: fix #18 Reported by Mirko Budszuhn. Thanks!!! https://github.com/ruby/rexml/commit/0dca2a2ba0
2019-08-04[ruby/rexml] xpath number: fix a bug that false is converted to NaNKouhei Sutou
GitHub: fix #18 It must be 0. Reported by Mirko Budszuhn. Thanks!!! https://github.com/ruby/rexml/commit/b48f3afa3b
2019-08-04[ruby/rexml] xpath local_name: fix a bug that nil is returned for ↵Kouhei Sutou
nonexistent case It must be an empty string. https://github.com/ruby/rexml/commit/81bc7cd4f5
2019-08-04[ruby/rexml] xpath boolean: implementKouhei Sutou
https://github.com/ruby/rexml/commit/feb8ddb1ec
2019-08-04[ruby/rexml] xpath: fix a bug for equality or relational expressionsKouhei Sutou
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
2019-08-04[ruby/rexml] Use PPKouhei Sutou
https://github.com/ruby/rexml/commit/185062a4a4
2019-08-04[ruby/rexml] xpath: add support for changing to debug mode by environment ↵Kouhei Sutou
variable https://github.com/ruby/rexml/commit/59378a16ea
2019-08-04[ruby/rexml] Bump versionKouhei Sutou
https://github.com/ruby/rexml/commit/54452c103a
2019-08-04[ruby/rexml] Message less confusing error to human (#16)ujihisa
* 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
2019-08-04[ruby/rexml] Fix crash with nil XPath variables (#13)Alyssa Ross
Patch by Alyssa Ross. Thanks!!! https://github.com/ruby/rexml/commit/2a53c54f58
2019-08-04[ruby/rexml] use #inspect to print meta-characters in error messagesFUJI Goro (gfx)
https://github.com/ruby/rexml/commit/a124a19b9a
2019-08-04[ruby/rexml] Bump versionKouhei Sutou
https://github.com/ruby/rexml/commit/c0e3f14564
2019-08-04[ruby/rexml] Fix attribute's default namespace behaviorKouhei Sutou
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
2019-08-04[ruby/rexml] FormatKouhei Sutou
https://github.com/ruby/rexml/commit/2384586811
2019-08-04[ruby/rexml] Revert "xpath: remove needless nil check"Kouhei Sutou
This reverts commit 61b73c1bf8dc64d97fba7f0a8c503c24b11313f5. "*:local_name" becomes prefix=nil. https://github.com/ruby/rexml/commit/9e7dd4cd4e
2019-08-04[ruby/rexml] xpath: remove needless nil checkKouhei Sutou
It must not be nil. https://github.com/ruby/rexml/commit/61b73c1bf8
2019-08-04[ruby/rexml] Add a TODO for Attribute#namespaceKouhei Sutou
https://github.com/ruby/rexml/commit/70310a06e5
2019-08-04[ruby/rexml] xpath: fix a bug that no namespace attribute isn't matched with ↵Kouhei Sutou
prefix [ruby-list:50733] Reported by Yasuhiro KIMURA. Thanks!!! https://github.com/ruby/rexml/commit/8f3c5c176a
2019-08-04[ruby/rexml] Bump versionKouhei Sutou
https://github.com/ruby/rexml/commit/0f79e71210
2019-08-04change call CGI methods from :: to .Semyon Pupkov
Closes: https://github.com/ruby/ruby/pull/1749