class ERB # # Returns revision information for the erb.rb module. # def self.version: () -> String # # 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 *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 % # <> omit newline for lines starting with <% and ending in %> # > omit newline for lines ending in %> # - omit blank lines ending in -%> # # *eoutvar* can be used to set the name of the variable ERB will build up its # output in. This is useful when you need to run multiple ERB templates through # the same binding and/or when you want to control where output ends up. Pass # the name of the variable to be used inside a String. # # ### Example # # require "erb" # # # build data class # class Listings # PRODUCT = { :name => "Chicken Fried Steak", # :desc => "A well messages pattie, breaded and fried.", # :cost => 9.95 } # # attr_reader :product, :price # # def initialize( product = "", price = "" ) # @product = product # @price = price # end # # def build # b = binding # # create and run templates, filling member data variables # ERB.new(<<-'END_PRODUCT'.gsub(/^\s+/, ""), trim_mode: "", eoutvar: "@product").result b # <%= PRODUCT[:name] %> # <%= PRODUCT[:desc] %> # END_PRODUCT # ERB.new(<<-'END_PRICE'.gsub(/^\s+/, ""), trim_mode: "", eoutvar: "@price").result b # <%= PRODUCT[:name] %> -- <%= PRODUCT[:cost] %> # <%= PRODUCT[:desc] %> # END_PRICE # end # end # # # setup template data # listings = Listings.new # listings.build # # puts listings.product + "\n" + listings.price # # *Generates* # # Chicken Fried Steak # A well messages pattie, breaded and fried. # # Chicken Fried Steak -- 9.95 # A well messages pattie, breaded and fried. # def initialize: (String, ?eoutvar: String, ?trim_mode: Integer | String | NilClass) -> untyped # # The Ruby code generated by ERB # def src: () -> String # # The encoding to eval # def encoding: () -> Encoding # # The optional *filename* argument passed to Kernel#eval when the ERB code is # run # def filename: () -> (String | NilClass) # # The optional *filename* argument passed to Kernel#eval when the ERB code is # run # def filename=: (String | NilClass) -> untyped # # The optional *lineno* argument passed to Kernel#eval when the ERB code is run # def lineno: () -> Integer # # The optional *lineno* argument passed to Kernel#eval when the ERB code is run # def lineno=: (Integer) -> untyped # # 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 # # Generate results and print them. (see ERB#result) # def run: (?Binding) -> untyped # # 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 # # Render a template on a new toplevel binding with local variables specified by # a Hash object. # def result_with_hash: (Hash[untyped, untyped]) -> String # # 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 # # 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 # erb = ERB.new(File.read(filename)) # erb.filename = filename # MyModule = erb.def_module('render(arg1, arg2)') # class MyClass # include MyModule # end # def def_module: (?String) -> Module # # Define unnamed class which has *methodname* as instance method, and return it. # # example: # class MyClass_ # def initialize(arg1, arg2) # @arg1 = arg1; @arg2 = arg2 # end # end # filename = 'example.rhtml' # @arg1 and @arg2 are used in example.rhtml # erb = ERB.new(File.read(filename)) # erb.filename = filename # MyClass = erb.def_class(MyClass_, 'render()') # print MyClass.new('foo', 123).render() # def def_class: (?Class, ?String) -> Class end