Module: RubyNext
- Defined in:
- lib/ruby-next/irb.rb,
lib/ruby-next/cli.rb,
lib/ruby-next/core.rb,
lib/ruby-next/utils.rb,
lib/ruby-next/config.rb,
lib/ruby-next/logging.rb,
lib/ruby-next/version.rb,
lib/ruby-next/language.rb,
lib/ruby-next/commands/base.rb,
lib/ruby-next/language/eval.rb,
lib/ruby-next/language/setup.rb,
lib/ruby-next/language/parser.rb,
lib/ruby-next/commands/nextify.rb,
lib/ruby-next/language/runtime.rb,
lib/ruby-next/commands/core_ext.rb,
lib/ruby-next/language/rewriters/base.rb,
lib/ruby-next/language/rewriters/text.rb,
lib/ruby-next/language/paco_parsers/base.rb,
lib/ruby-next/language/rewriters/2.4/dir.rb,
lib/ruby-next/language/rewriters/abstract.rb,
lib/ruby-next/language/paco_parsers/comments.rb,
lib/ruby-next/language/rewriters/edge/it_param.rb,
lib/ruby-next/language/rewriters/3.0/in_pattern.rb,
lib/ruby-next/language/rewriters/2.7/args_forward.rb,
lib/ruby-next/language/rewriters/3.0/find_pattern.rb,
lib/ruby-next/language/rewriters/2.6/endless_range.rb,
lib/ruby-next/language/paco_parsers/string_literals.rb,
lib/ruby-next/language/rewriters/3.0/endless_method.rb,
lib/ruby-next/language/rewriters/3.1/shorthand_hash.rb,
lib/ruby-next/language/rewriters/2.1/required_kwargs.rb,
lib/ruby-next/language/rewriters/2.3/safe_navigation.rb,
lib/ruby-next/language/rewriters/2.7/numbered_params.rb,
lib/ruby-next/language/rewriters/3.1/anonymous_block.rb,
lib/ruby-next/language/rewriters/2.1/numeric_literals.rb,
lib/ruby-next/language/rewriters/2.3/squiggly_heredoc.rb,
lib/ruby-next/language/rewriters/2.7/pattern_matching.rb,
lib/ruby-next/language/rewriters/3.1/pin_vars_pattern.rb,
lib/ruby-next/language/rewriters/3.2/anonymous_restargs.rb,
lib/ruby-next/language/rewriters/2.5/rescue_within_block.rb,
lib/ruby-next/language/rewriters/3.0/args_forward_leading.rb,
lib/ruby-next/language/rewriters/proposed/method_reference.rb,
lib/ruby-next/language/rewriters/3.1/endless_method_command.rb,
lib/ruby-next/language/rewriters/proposed/bind_vars_pattern.rb,
lib/ruby-next/language/rewriters/3.1/refinement_import_methods.rb,
lib/ruby-next/language/rewriters/3.1/oneline_pattern_parensless.rb
Overview
Add binding argument to all self-less eval’s
Defined Under Namespace
Modules: Commands, Core, IRBExt, Language, Utils Classes: CLI
Constant Summary collapse
- MIN_SUPPORTED_VERSION =
Mininum Ruby version supported by RubyNext
Gem::Version.new("2.2.0")
- RUBY_NEXT_DIR =
Where to store transpiled files (relative from the project LOAD_PATH, usually ‘lib/`)
".rbnext"
- LAST_MINOR_VERSIONS =
Defines last minor version for every major version
{ 2 => 8, # 2.8 is required for backward compatibility: some gems already uses it 3 => 4 }.freeze
- LATEST_VERSION =
[3, 4].freeze
- NEXT_VERSION =
A virtual version number used for proposed features
"1995.next.0"
- VERSION =
"1.0.1"
Class Attribute Summary collapse
-
.debug_enabled ⇒ Object
Returns the value of attribute debug_enabled.
-
.silence_warnings ⇒ Object
Returns the value of attribute silence_warnings.
Class Method Summary collapse
- .debug_source(source, filepath = nil) ⇒ Object
-
.edge_syntax? ⇒ Boolean
Returns true if we want to use edge syntax.
-
.load_from_rc(path = ".rbnextrc") ⇒ Object
Load transpile settings from the RC file (nextify command flags).
- .next_ruby_version(version = current_ruby_version) ⇒ Object
- .proposed_syntax? ⇒ Boolean
- .warn(msg) ⇒ Object
Instance Method Summary collapse
Class Attribute Details
.debug_enabled ⇒ Object
Returns the value of attribute debug_enabled.
8 9 10 |
# File 'lib/ruby-next/logging.rb', line 8 def debug_enabled @debug_enabled end |
.silence_warnings ⇒ Object
Returns the value of attribute silence_warnings.
7 8 9 |
# File 'lib/ruby-next/logging.rb', line 7 def silence_warnings @silence_warnings end |
Class Method Details
.debug_source(source, filepath = nil) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/ruby-next/logging.rb', line 16 def debug_source(source, filepath = nil) return unless debug_enabled return if debug_filter && !filepath.include?(debug_filter) $stdout.puts Utils.source_with_lines(source, filepath) end |
.edge_syntax? ⇒ Boolean
Returns true if we want to use edge syntax
36 37 38 |
# File 'lib/ruby-next/config.rb', line 36 def edge_syntax? %w[y true 1].include?(ENV["RUBY_NEXT_EDGE"]) end |
.load_from_rc(path = ".rbnextrc") ⇒ Object
Load transpile settings from the RC file (nextify command flags)
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/ruby-next/config.rb', line 62 def load_from_rc(path = ".rbnextrc") return unless File.exist?(path) require "yaml" args = YAML.load_file(path)&.fetch("nextify", "")&.lines&.flat_map { |line| line.chomp.split(/\s+/) } ENV["RUBY_NEXT_EDGE"] ||= "true" if args.delete("--edge") ENV["RUBY_NEXT_PROPOSED"] ||= "true" if args.delete("--proposed") ENV["RUBY_NEXT_TRANSPILE_MODE"] ||= "rewrite" if args.delete("--transpile-mode=rewrite") ENV["RUBY_NEXT_TRANSPILE_MODE"] ||= "ast" if args.delete("--transpile-mode=ast") end |
.next_ruby_version(version = current_ruby_version) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/ruby-next/config.rb', line 44 def next_ruby_version(version = current_ruby_version) return if version == Gem::Version.new(NEXT_VERSION) major, minor = Gem::Version.new(version).segments.map(&:to_i) return Gem::Version.new(NEXT_VERSION) if major >= LATEST_VERSION.first && minor >= LATEST_VERSION.last nxt = if LAST_MINOR_VERSIONS[major] == minor "#{major + 1}.0.0" else "#{major}.#{minor + 1}.0" end Gem::Version.new(nxt) end |
.proposed_syntax? ⇒ Boolean
40 41 42 |
# File 'lib/ruby-next/config.rb', line 40 def proposed_syntax? %w[y true 1].include?(ENV["RUBY_NEXT_PROPOSED"]) end |
.warn(msg) ⇒ Object
10 11 12 13 14 |
# File 'lib/ruby-next/logging.rb', line 10 def warn(msg) return if silence_warnings Kernel.warn msg end |
Instance Method Details
#current_ruby_version ⇒ Object
26 27 28 |
# File 'lib/ruby-next/config.rb', line 26 def current_ruby_version "2.6.5" end |