stdlib/erb/0/erb.rbs in rbs-2.0.0 vs stdlib/erb/0/erb.rbs in rbs-2.1.0
- old
+ new
@@ -1,258 +1,22 @@
-# # ERB -- Ruby Templating
-#
-# ## Introduction
-#
-# ERB provides an easy to use but powerful templating system for Ruby. Using
-# ERB, actual Ruby code can be added to any plain text document for the purposes
-# of generating document information details and/or flow control.
-#
-# A very simple example is this:
-#
-# require 'erb'
-#
-# x = 42
-# template = ERB.new <<-EOF
-# The value of x is: <%= x %>
-# EOF
-# puts template.result(binding)
-#
-# *Prints:* The value of x is: 42
-#
-# More complex examples are given below.
-#
-# ## Recognized Tags
-#
-# ERB recognizes certain tags in the provided template and converts them based
-# on the rules below:
-#
-# <% Ruby code -- inline with output %>
-# <%= Ruby expression -- replace with result %>
-# <%# comment -- ignored -- useful in testing %>
-# % a line of Ruby code -- treated as <% line %> (optional -- see ERB.new)
-# %% replaced with % if first thing on a line and % processing is used
-# <%% or %%> -- replace with <% or %> respectively
-#
-# All other text is passed through ERB filtering unchanged.
-#
-# ## Options
-#
-# There are several settings you can change when you use ERB:
-# * the nature of the tags that are recognized;
-# * the value of `$SAFE` under which the template is run;
-# * the binding used to resolve local variables in the template.
-#
-#
-# See the ERB.new and ERB#result methods for more detail.
-#
-# ## Character encodings
-#
-# ERB (or Ruby code generated by ERB) returns a string in the same character
-# encoding as the input string. When the input string has a magic comment,
-# however, it returns a string in the encoding specified by the magic comment.
-#
-# # -*- coding: utf-8 -*-
-# require 'erb'
-#
-# template = ERB.new <<EOF
-# <%#-*- coding: Big5 -*-%>
-# \_\_ENCODING\_\_ is <%= \_\_ENCODING\_\_ %>.
-# EOF
-# puts template.result
-#
-# *Prints:* _*ENCODING*_ is Big5.
-#
-# ## Examples
-#
-# ### Plain Text
-#
-# ERB is useful for any generic templating situation. Note that in this
-# example, we use the convenient "% at start of line" tag, and we quote the
-# template literally with `%q{...}` to avoid trouble with the backslash.
-#
-# require "erb"
-#
-# # Create template.
-# template = %q{
-# From: James Edward Gray II <james@grayproductions.net>
-# To: <%= to %>
-# Subject: Addressing Needs
-#
-# <%= to[/\w+/] %>:
-#
-# Just wanted to send a quick note assuring that your needs are being
-# addressed.
-#
-# I want you to know that my team will keep working on the issues,
-# especially:
-#
-# <%# ignore numerous minor requests -- focus on priorities %>
-# % priorities.each do |priority|
-# * <%= priority %>
-# % end
-#
-# Thanks for your patience.
-#
-# James Edward Gray II
-# }.gsub(/^ /, '')
-#
-# message = ERB.new(template, trim_mode: "%<>")
-#
-# # Set up template data.
-# to = "Community Spokesman <spokesman@ruby_community.org>"
-# priorities = [ "Run Ruby Quiz",
-# "Document Modules",
-# "Answer Questions on Ruby Talk" ]
-#
-# # Produce result.
-# email = message.result
-# puts email
-#
-# *Generates:*
-#
-# From: James Edward Gray II <james@grayproductions.net>
-# To: Community Spokesman <spokesman@ruby_community.org>
-# Subject: Addressing Needs
-#
-# Community:
-#
-# Just wanted to send a quick note assuring that your needs are being addressed.
-#
-# I want you to know that my team will keep working on the issues, especially:
-#
-# * Run Ruby Quiz
-# * Document Modules
-# * Answer Questions on Ruby Talk
-#
-# Thanks for your patience.
-#
-# James Edward Gray II
-#
-# ### Ruby in HTML
-#
-# ERB is often used in `.rhtml` files (HTML with embedded Ruby). Notice the
-# need in this example to provide a special binding when the template is run, so
-# that the instance variables in the Product object can be resolved.
-#
-# require "erb"
-#
-# # Build template data class.
-# class Product
-# def initialize( code, name, desc, cost )
-# @code = code
-# @name = name
-# @desc = desc
-# @cost = cost
-#
-# @features = [ ]
-# end
-#
-# def add_feature( feature )
-# @features << feature
-# end
-#
-# # Support templating of member data.
-# def get_binding
-# binding
-# end
-#
-# # ...
-# end
-#
-# # Create template.
-# template = %{
-# <html>
-# <head><title>Ruby Toys -- <%= @name %></title></head>
-# <body>
-#
-# <h1><%= @name %> (<%= @code %>)</h1>
-# <p><%= @desc %></p>
-#
-# <ul>
-# <% @features.each do |f| %>
-# <li><b><%= f %></b></li>
-# <% end %>
-# </ul>
-#
-# <p>
-# <% if @cost < 10 %>
-# <b>Only <%= @cost %>!!!</b>
-# <% else %>
-# Call for a price, today!
-# <% end %>
-# </p>
-#
-# </body>
-# </html>
-# }.gsub(/^ /, '')
-#
-# rhtml = ERB.new(template)
-#
-# # Set up template data.
-# toy = Product.new( "TZ-1002",
-# "Rubysapien",
-# "Geek's Best Friend! Responds to Ruby commands...",
-# 999.95 )
-# toy.add_feature("Listens for verbal commands in the Ruby language!")
-# toy.add_feature("Ignores Perl, Java, and all C variants.")
-# toy.add_feature("Karate-Chop Action!!!")
-# toy.add_feature("Matz signature on left leg.")
-# toy.add_feature("Gem studded eyes... Rubies, of course!")
-#
-# # Produce result.
-# rhtml.run(toy.get_binding)
-#
-# *Generates (some blank lines removed):*
-#
-# <html>
-# <head><title>Ruby Toys -- Rubysapien</title></head>
-# <body>
-#
-# <h1>Rubysapien (TZ-1002)</h1>
-# <p>Geek's Best Friend! Responds to Ruby commands...</p>
-#
-# <ul>
-# <li><b>Listens for verbal commands in the Ruby language!</b></li>
-# <li><b>Ignores Perl, Java, and all C variants.</b></li>
-# <li><b>Karate-Chop Action!!!</b></li>
-# <li><b>Matz signature on left leg.</b></li>
-# <li><b>Gem studded eyes... Rubies, of course!</b></li>
-# </ul>
-#
-# <p>
-# Call for a price, today!
-# </p>
-#
-# </body>
-# </html>
-#
-# ## Notes
-#
-# There are a variety of templating solutions available in various Ruby
-# projects:
-# * ERB's big brother, eRuby, works the same but is written in C for speed;
-# * Amrita (smart at producing HTML/XML);
-# * cs/Template (written in C for speed);
-# * RDoc, distributed with Ruby, uses its own template engine, which can be
-# reused elsewhere;
-# * and others; search [RubyGems.org](https://rubygems.org/) or [The Ruby
-# Toolbox](https://www.ruby-toolbox.com/).
-#
-#
-# Rails, the web application framework, uses ERB to create views.
-#
class ERB
+ # <!--
+ # rdoc-file=lib/erb.rb
+ # - version()
+ # -->
# Returns revision information for the erb.rb module.
#
def self.version: () -> String
+ # <!--
+ # rdoc-file=lib/erb.rb
+ # - new(str, safe_level=NOT_GIVEN, legacy_trim_mode=NOT_GIVEN, legacy_eoutvar=NOT_GIVEN, trim_mode: nil, eoutvar: '_erbout')
+ # -->
# Constructs a new ERB object with the template specified in *str*.
#
# An ERB object works by building a chunk of Ruby code that will output the
- # completed template when run. If *safe_level* is set to a non-nil value, ERB
- # code will be run in a separate thread with **$SAFE** set to the provided
- # level.
+ # completed template when run.
#
# If *trim_mode* is passed a String containing one or more of the following
# modifiers, ERB will adjust its code generation as listed:
#
# % enables Ruby code processing for lines beginning with %
@@ -310,58 +74,110 @@
# Chicken Fried Steak -- 9.95
# A well messages pattie, breaded and fried.
#
def initialize: (String, ?eoutvar: String, ?trim_mode: Integer | String | NilClass) -> untyped
+ # <!-- rdoc-file=lib/erb.rb -->
# The Ruby code generated by ERB
#
def src: () -> String
+ # <!-- rdoc-file=lib/erb.rb -->
# The encoding to eval
#
def encoding: () -> Encoding
+ # <!-- rdoc-file=lib/erb.rb -->
# The optional *filename* argument passed to Kernel#eval when the ERB code is
# run
#
def filename: () -> (String | NilClass)
+
+ # <!-- rdoc-file=lib/erb.rb -->
+ # The optional *filename* argument passed to Kernel#eval when the ERB code is
+ # run
+ #
def filename=: (String | NilClass) -> untyped
+ # <!-- rdoc-file=lib/erb.rb -->
# The optional *lineno* argument passed to Kernel#eval when the ERB code is run
#
def lineno: () -> Integer
+
+ # <!-- rdoc-file=lib/erb.rb -->
+ # The optional *lineno* argument passed to Kernel#eval when the ERB code is run
+ #
def lineno=: (Integer) -> untyped
+
+ # <!--
+ # rdoc-file=lib/erb.rb
+ # - location=((filename, lineno))
+ # -->
+ # Sets optional filename and line number that will be used in ERB code
+ # evaluation and error reporting. See also #filename= and #lineno=
+ #
+ # erb = ERB.new('<%= some_x %>')
+ # erb.render
+ # # undefined local variable or method `some_x'
+ # # from (erb):1
+ #
+ # erb.location = ['file.erb', 3]
+ # # All subsequent error reporting would use new location
+ # erb.render
+ # # undefined local variable or method `some_x'
+ # # from file.erb:4
+ #
def location=: (Array[String | Integer]) -> untyped
+ # <!--
+ # rdoc-file=lib/erb.rb
+ # - run(b=new_toplevel)
+ # -->
# Generate results and print them. (see ERB#result)
#
def run: (?Binding) -> untyped
+ # <!--
+ # rdoc-file=lib/erb.rb
+ # - result(b=new_toplevel)
+ # -->
# Executes the generated ERB code to produce a completed template, returning the
# results of that code. (See ERB::new for details on how this process can be
# affected by *safe_level*.)
#
# *b* accepts a Binding object which is used to set the context of code
# evaluation.
#
def result: (?Binding) -> String
+ # <!--
+ # rdoc-file=lib/erb.rb
+ # - result_with_hash(hash)
+ # -->
# Render a template on a new toplevel binding with local variables specified by
# a Hash object.
#
def result_with_hash: (Hash[untyped, untyped]) -> String
+ # <!--
+ # rdoc-file=lib/erb.rb
+ # - def_method(mod, methodname, fname='(ERB)')
+ # -->
# Define *methodname* as instance method of *mod* from compiled Ruby source.
#
# example:
# filename = 'example.rhtml' # 'arg1' and 'arg2' are used in example.rhtml
# erb = ERB.new(File.read(filename))
# erb.def_method(MyClass, 'render(arg1, arg2)', filename)
# print MyClass.new.render('foo', 123)
#
def def_method: (Module, String, ?String) -> untyped
+ # <!--
+ # rdoc-file=lib/erb.rb
+ # - def_module(methodname='erb')
+ # -->
# Create unnamed module, define *methodname* as instance method of it, and
# return it.
#
# example:
# filename = 'example.rhtml' # 'arg1' and 'arg2' are used in example.rhtml
@@ -372,9 +188,13 @@
# include MyModule
# end
#
def def_module: (?String) -> Module
+ # <!--
+ # rdoc-file=lib/erb.rb
+ # - def_class(superklass=Object, methodname='result')
+ # -->
# Define unnamed class which has *methodname* as instance method, and return it.
#
# example:
# class MyClass_
# def initialize(arg1, arg2)