-
Notifications
You must be signed in to change notification settings - Fork 0
/
myst.json
1 lines (1 loc) · 109 KB
/
myst.json
1
{"kind":"ROOT","project_name":"Myst","version":"v0.6.2","homepage_url":"https://myst-lang.org","logo_url":"https://avatars2.githubusercontent.com/u/29179527?s=200&v=4","doc":"Myst is a dynamic, general-purpose programming language.\n","submodules":{"ENV":{"kind":"MODULE","name":"ENV","full_name":"ENV","doc":"`ENV` is a hash-like accessor for environment variables.","constants":{},"methods":{"each":{"kind":"METHOD","name":"each","full_name":"ENV.each","separator":".","clauses":[{"head":"def each(&block)","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Yield each key=value pair to block"}],"doc":null},"to_map":{"kind":"METHOD","name":"to_map","full_name":"ENV.to_map","separator":".","clauses":[{"head":"def to_map","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a map of the `ENV`"}],"doc":null},"set":{"kind":"METHOD","name":"set","full_name":"ENV.set","separator":".","clauses":[{"head":"def set(new_env : Map)","arity":1,"parameters":["new_env : Map"],"splat_index":null,"block_parameter":null,"doc":"Replace current `ENV` with `new_env`"}],"doc":null},"[]":{"kind":"METHOD","name":"[]","full_name":"ENV.[]","separator":".","clauses":[{"head":"def [](key : String)","arity":1,"parameters":["key : String"],"splat_index":null,"block_parameter":null,"doc":"Returns value assigned to `key`. Else returns nil."}],"doc":null},"[]=":{"kind":"METHOD","name":"[]=","full_name":"ENV.[]=","separator":".","clauses":[{"head":"def []=(key : String, value : String)","arity":2,"parameters":["key : String","value : String"],"splat_index":null,"block_parameter":null,"doc":"Assigns `value` to `key`. Returns `value`."}],"doc":null},"fetch":{"kind":"METHOD","name":"fetch","full_name":"ENV.fetch","separator":".","clauses":[{"head":"def fetch(key : String)","arity":1,"parameters":["key : String"],"splat_index":null,"block_parameter":null,"doc":"Behaves exactly like `ENV[]` when `key` is present. Raises an exception if `key` is not present."},{"head":"def fetch(key : String, default)","arity":2,"parameters":["key : String","default"],"splat_index":null,"block_parameter":null,"doc":"Behaves exactly like `ENV[]` when `key` is present. Returns `default` if `key` is not assigned any value."}],"doc":null},"keys":{"kind":"METHOD","name":"keys","full_name":"ENV.keys","separator":".","clauses":[{"head":"def keys","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a list containing all the keys of the environment."}],"doc":null},"values":{"kind":"METHOD","name":"values","full_name":"ENV.values","separator":".","clauses":[{"head":"def values","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a list containing all the values of the environment."}],"doc":null},"delete":{"kind":"METHOD","name":"delete","full_name":"ENV.delete","separator":".","clauses":[{"head":"def delete(key : String)","arity":1,"parameters":["key : String"],"splat_index":null,"block_parameter":null,"doc":"Removes the key=value pair specified by `key` from the environment. If `key` is present: the value assigned to the key (before deletion) is returned."}],"doc":null},"clear":{"kind":"METHOD","name":"clear","full_name":"ENV.clear","separator":".","clauses":[{"head":"def clear","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Clears every key=value pair of the environment."}],"doc":null},"has_key?":{"kind":"METHOD","name":"has_key?","full_name":"ENV.has_key?","separator":".","clauses":[{"head":"def has_key?(key : String)","arity":1,"parameters":["key : String"],"splat_index":null,"block_parameter":null,"doc":"Returns true if `ENV.keys` contains `key`, otherwise false."}],"doc":null}},"submodules":{},"subtypes":{}},"Color":{"kind":"MODULE","name":"Color","full_name":"Color","doc":"A library for colorizing terminal output using ANSI control sequences.\nThis library provides a single method, `colored`, which accepts a content object and the name of a color as a symbol, and returns a new String containing ANSI control sequences for setting terminal colors.\nNote that the ANSI color codes are not absolute. Depending on the user's terminal settings, the actual colors displayed in the terminal when using a given color code may not match the color implied by the name. For example, many dark terminal themes swap the black and white colors to better accomodate most use cases. Keep this in mind when selecting colors to use.","constants":{"ANSI_RESET":{"kind":"CONSTANT","name":"ANSI_RESET","full_name":"Color.ANSI_RESET","value":"\"\u001b[0m\"","doc":null},"ANSI_BLACK":{"kind":"CONSTANT","name":"ANSI_BLACK","full_name":"Color.ANSI_BLACK","value":"\"\u001b[0;30m\"","doc":null},"ANSI_RED":{"kind":"CONSTANT","name":"ANSI_RED","full_name":"Color.ANSI_RED","value":"\"\u001b[0;31m\"","doc":null},"ANSI_GREEN":{"kind":"CONSTANT","name":"ANSI_GREEN","full_name":"Color.ANSI_GREEN","value":"\"\u001b[0;32m\"","doc":null},"ANSI_YELLOW":{"kind":"CONSTANT","name":"ANSI_YELLOW","full_name":"Color.ANSI_YELLOW","value":"\"\u001b[0;33m\"","doc":null},"ANSI_BLUE":{"kind":"CONSTANT","name":"ANSI_BLUE","full_name":"Color.ANSI_BLUE","value":"\"\u001b[0;34m\"","doc":null},"ANSI_PURPLE":{"kind":"CONSTANT","name":"ANSI_PURPLE","full_name":"Color.ANSI_PURPLE","value":"\"\u001b[0;35m\"","doc":null},"ANSI_CYAN":{"kind":"CONSTANT","name":"ANSI_CYAN","full_name":"Color.ANSI_CYAN","value":"\"\u001b[0;36m\"","doc":null},"ANSI_WHITE":{"kind":"CONSTANT","name":"ANSI_WHITE","full_name":"Color.ANSI_WHITE","value":"\"\u001b[0;37m\"","doc":null}},"methods":{"ansi_from_symbol":{"kind":"METHOD","name":"ansi_from_symbol","full_name":"Color.ansi_from_symbol","separator":".","clauses":[{"head":"def ansi_from_symbol(sym) : String","arity":1,"parameters":["sym"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"colored":{"kind":"METHOD","name":"colored","full_name":"Color.colored","separator":".","clauses":[{"head":"def colored(content, color : Symbol) : String","arity":2,"parameters":["content","color : Symbol"],"splat_index":null,"block_parameter":null,"doc":"Returns a new String with the given content wrapped between two ANSI control sequences for setting the colors of the terminal. The first sequence sets the terminal to the color specified by `color`, and the second resets the terminal to its original colors.\nIf `content` is not already a String, it will be converted to a String via interpolation (i.e., by calling `to_s` on it).\nThis method may raise an error if `color` is not a valid color name."}],"doc":null}},"submodules":{},"subtypes":{}},"Enumerable":{"kind":"MODULE","name":"Enumerable","full_name":"Enumerable","doc":"The Enumerable module provides various methods for interacting with collections of values. Both `List` and `Map` include this module by default.\nThe only requirement for including this module is to define an `each` method that accepts a block argument and calls that block for every element of the collection.","constants":{},"methods":{"map":{"kind":"METHOD","name":"map","full_name":"Enumerable.map","separator":".","clauses":[{"head":"def map(&block) : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Call `block` for each element of `self` and collect the result for each call into a new List. If `each` does not yield any elements, the result will be an empty List."}],"doc":null},"join":{"kind":"METHOD","name":"join","full_name":"Enumerable.join","separator":".","clauses":[{"head":"def join(delimiter : String) : String","arity":1,"parameters":["delimiter : String"],"splat_index":null,"block_parameter":null,"doc":"Creates a new string from the result of calling `to_s` on every element of `self`, inserting `delimiter` between each element."}],"doc":null},"size":{"kind":"METHOD","name":"size","full_name":"Enumerable.size","separator":".","clauses":[{"head":"def size : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the size of the enumerable, as determined by the number of times `each` yields an element to its block."}],"doc":null},"all?":{"kind":"METHOD","name":"all?","full_name":"Enumerable.all?","separator":".","clauses":[{"head":"def all?(&block) : Boolean","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Return true if all elements in the enumerable cause `block` to return a truthy value."}],"doc":null},"any?":{"kind":"METHOD","name":"any?","full_name":"Enumerable.any?","separator":".","clauses":[{"head":"def any?(&block) : Boolean","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Return true if at least one element in the enumerable evaluates to a truthy value for the given block."}],"doc":null},"find":{"kind":"METHOD","name":"find","full_name":"Enumerable.find","separator":".","clauses":[{"head":"def find(&block)","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Iterate the enumerable, passing each element to `block`. Return the first element for which the block returns a truthy value."}],"doc":null},"select":{"kind":"METHOD","name":"select","full_name":"Enumerable.select","separator":".","clauses":[{"head":"def select(&block) : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Iterate the enumerable, passing each element to `block`. Return all elements for which the block returns a truthy value."}],"doc":null},"min":{"kind":"METHOD","name":"min","full_name":"Enumerable.min","separator":".","clauses":[{"head":"def min","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the element with the lowest value as determined by comparing values with their `<` operator."}],"doc":null},"max":{"kind":"METHOD","name":"max","full_name":"Enumerable.max","separator":".","clauses":[{"head":"def max","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the element with the highest value as determined by comparing values with their `>` operator."}],"doc":null},"sort":{"kind":"METHOD","name":"sort","full_name":"Enumerable.sort","separator":".","clauses":[{"head":"def sort : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a new, sorted List of all elements in the enumerable."}],"doc":null},"to_list":{"kind":"METHOD","name":"to_list","full_name":"Enumerable.to_list","separator":".","clauses":[{"head":"def to_list : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a new List containing all elements of the enumerable."}],"doc":null},"reduce":{"kind":"METHOD","name":"reduce","full_name":"Enumerable.reduce","separator":".","clauses":[{"head":"def reduce(&block)","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"For every element in the enumerable, call `block` with the result of the previous call and the current element as arguments. Returns a single value: the result of the final call to `block`.\nFor the first element of the enumerable, the block is _not_ called, and the element is instead passed directly as the first argument of the `block` call for the second element."},{"head":"def reduce(value, &block)","arity":1,"parameters":["value"],"splat_index":null,"block_parameter":"block","doc":"Use `value` as the initial value for the accumulator instead of the first element, allowing `block` to be called for the first element as well."}],"doc":null}},"submodules":{},"subtypes":{}},"Assert":{"kind":"MODULE","name":"Assert","full_name":"Assert","doc":"The `Assert` module provides an interface for making assertions about Myst code and values.\nInteracting with this module is primarily done through the top-level `assert` method, providing either a value or code block to use as the subject of the assertions. This method wraps that value or code block into an assertion object (either `Assertion` or `BlockAssertion`), which is then used to actually perform the assertions.\nThis module is designed with a fluid interface to simplify writing multiple assertions on the same subject. Every assertion method returns `self` when it succeeds or raises an Error when it fails, meaning assertions can easily be chained together.\nAs a contrived example, `assert().between(a, b)` could also be written as two separate assertions chained together: `assert().greater_or_equal(a).less_or_equal(b)`.\nThis module is primarily intended for use with the `Spec` module to write tests, but it also available for use by application code in cases where complex assertions about data are needed. That said, the language itself often provides cleaner, more idiomatic ways of making similar assertions that should be preferred (e.g. pattern matching, multiple function clauses, `match` expressions, etc.).","constants":{},"methods":{},"submodules":{},"subtypes":{"AssertionFailure":{"kind":"TYPE","name":"AssertionFailure","full_name":"Assert.AssertionFailure","doc":"An AssertionFailure is a container object that is raised when an assertion fails to complete.","constants":{},"instance_methods":{"left":{"kind":"METHOD","name":"left","full_name":"Assert.AssertionFailure#left","separator":"#","clauses":[{"head":"def left","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"right":{"kind":"METHOD","name":"right","full_name":"Assert.AssertionFailure#right","separator":"#","clauses":[{"head":"def right","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"to_s":{"kind":"METHOD","name":"to_s","full_name":"Assert.AssertionFailure#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"static_methods":{},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"Assert.AssertionFailure#initialize","separator":"#","clauses":[{"head":"def initialize(@left, @right, @message : String)","arity":3,"parameters":["@left","@right","@message : String"],"splat_index":null,"block_parameter":null,"doc":null},{"head":"def initialize(@left, @right)","arity":2,"parameters":["@left","@right"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"submodules":{},"subtypes":{}},"Assertion":{"kind":"TYPE","name":"Assertion","full_name":"Assert.Assertion","doc":"An object representing a pending assertion for a static value. Instantiating an `Assertion` object only stores the \"left-hand\" value. Making actual assertions is done with the instance methods on the object. For example, equality can be asserted with `%Assertion{true}.equals(true)`.\nWhen an assertion succeeds, the method will return normally, but if the assertion fails, the method will raise an `AssertionFailure` object with information about the failure.","constants":{},"instance_methods":{"is_truthy":{"kind":"METHOD","name":"is_truthy","full_name":"Assert.Assertion#is_truthy","separator":"#","clauses":[{"head":"def is_truthy : Assertion","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Asserts that the value is truthy (not `false` or `nil`)."}],"doc":null},"is_falsey":{"kind":"METHOD","name":"is_falsey","full_name":"Assert.Assertion#is_falsey","separator":"#","clauses":[{"head":"def is_falsey : Assertion","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Asserts that the value is falsey (either `false` or `nil`)."}],"doc":null},"is_true":{"kind":"METHOD","name":"is_true","full_name":"Assert.Assertion#is_true","separator":"#","clauses":[{"head":"def is_true : Assertion","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Asserts that the value is exactly the boolean value `true`."}],"doc":null},"is_false":{"kind":"METHOD","name":"is_false","full_name":"Assert.Assertion#is_false","separator":"#","clauses":[{"head":"def is_false : Assertion","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Asserts that the value is exactly the boolean value `false`."}],"doc":null},"is_nil":{"kind":"METHOD","name":"is_nil","full_name":"Assert.Assertion#is_nil","separator":"#","clauses":[{"head":"def is_nil : Assertion","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Asserts that the value is `nil` (false is not allowed)."}],"doc":null},"is_not_nil":{"kind":"METHOD","name":"is_not_nil","full_name":"Assert.Assertion#is_not_nil","separator":"#","clauses":[{"head":"def is_not_nil : Assertion","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Asserts that the value is not `nil` (false is allowed)."}],"doc":null},"equals":{"kind":"METHOD","name":"equals","full_name":"Assert.Assertion#equals","separator":"#","clauses":[{"head":"def equals(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Assert that the value is equal to `other` using its `==` method."}],"doc":null},"does_not_equal":{"kind":"METHOD","name":"does_not_equal","full_name":"Assert.Assertion#does_not_equal","separator":"#","clauses":[{"head":"def does_not_equal(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Assert that the value is not equal to `other` using its `!=` method."}],"doc":null},"less_than":{"kind":"METHOD","name":"less_than","full_name":"Assert.Assertion#less_than","separator":"#","clauses":[{"head":"def less_than(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Assert that the value is less than `other` using its `<` method."}],"doc":null},"less_or_equal":{"kind":"METHOD","name":"less_or_equal","full_name":"Assert.Assertion#less_or_equal","separator":"#","clauses":[{"head":"def less_or_equal(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Assert that the value is less than or equal to `other` using its `<=` method."}],"doc":null},"greater_or_equal":{"kind":"METHOD","name":"greater_or_equal","full_name":"Assert.Assertion#greater_or_equal","separator":"#","clauses":[{"head":"def greater_or_equal(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Assert that the value is greater than or equal to `other` using its `>=` method."}],"doc":null},"greater_than":{"kind":"METHOD","name":"greater_than","full_name":"Assert.Assertion#greater_than","separator":"#","clauses":[{"head":"def greater_than(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Assert that the value is greater than `other` using its `>` method."}],"doc":null},"between":{"kind":"METHOD","name":"between","full_name":"Assert.Assertion#between","separator":"#","clauses":[{"head":"def between(lower, upper) : Assertion","arity":2,"parameters":["lower","upper"],"splat_index":null,"block_parameter":null,"doc":"Assert that the value is between `lower` and `upper` (inclusively), using only the `<=`operator on the value for comparisons."}],"doc":null},"<":{"kind":"METHOD","name":"<","full_name":"Assert.Assertion#<","separator":"#","clauses":[{"head":"def <(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Operator alias for `less_than(other)`."}],"doc":null},"<=":{"kind":"METHOD","name":"<=","full_name":"Assert.Assertion#<=","separator":"#","clauses":[{"head":"def <=(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Operator alias for `less_or_equal(other)`."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"Assert.Assertion#==","separator":"#","clauses":[{"head":"def ==(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Operator alias for `equals(other)`."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"Assert.Assertion#!=","separator":"#","clauses":[{"head":"def !=(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Operator alias for `does_not_equal(other)`."}],"doc":null},">=":{"kind":"METHOD","name":">=","full_name":"Assert.Assertion#>=","separator":"#","clauses":[{"head":"def >=(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Operator alias for `greater_or_equal(other)`."}],"doc":null},">":{"kind":"METHOD","name":">","full_name":"Assert.Assertion#>","separator":"#","clauses":[{"head":"def >(other) : Assertion","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Operator alias for `greater_than(other)`."}],"doc":null},"is_a":{"kind":"METHOD","name":"is_a","full_name":"Assert.Assertion#is_a","separator":"#","clauses":[{"head":"def is_a(Object) : Assertion","arity":1,"parameters":["Object"],"splat_index":null,"block_parameter":null,"doc":"Assert that the value is an instance of `type`."},{"head":"def is_a(other : Type) : Assertion","arity":1,"parameters":["other : Type"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"includes":{"kind":"METHOD","name":"includes","full_name":"Assert.Assertion#includes","separator":"#","clauses":[{"head":"def includes(element) : Assertion","arity":1,"parameters":["element"],"splat_index":null,"block_parameter":null,"doc":"Assert that the value includes `element`. This requires that the value is Enumerable (implements `#each`)"}],"doc":null}},"static_methods":{},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"Assert.Assertion#initialize","separator":"#","clauses":[{"head":"def initialize(@value)","arity":1,"parameters":["@value"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"submodules":{},"subtypes":{}},"BlockAssertion":{"kind":"TYPE","name":"BlockAssertion","full_name":"Assert.BlockAssertion","doc":"An object representing a pending assertion for a block of code. Similar to the regular `Assertion`, instantiating a `BlockAssertion` only stores the block of code to be run when making the assertion. Making the actual assertion is done by calling methods on the resulting object.\n`BlockAssertion` is most useful for asserting that running a code block has a specific side effect, namely raising errors.","constants":{},"instance_methods":{"raises":{"kind":"METHOD","name":"raises","full_name":"Assert.BlockAssertion#raises","separator":"#","clauses":[{"head":"def raises(expected_error) : BlockAssertion","arity":1,"parameters":["expected_error"],"splat_index":null,"block_parameter":null,"doc":"Assert that calling the block raises an error with the given value. If no value is given, the assertion just checks that an error is raised.\nThe block will be called with whatever arguments have been set with `called_with_arguments`. By default, no arguments will be given."},{"head":"def raises : BlockAssertion","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"succeeds":{"kind":"METHOD","name":"succeeds","full_name":"Assert.BlockAssertion#succeeds","separator":"#","clauses":[{"head":"def succeeds : BlockAssertion","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Assert that calling the block completes successfully (does not raise an error)."}],"doc":null},"returns":{"kind":"METHOD","name":"returns","full_name":"Assert.BlockAssertion#returns","separator":"#","clauses":[{"head":"def returns(expected_result) : BlockAssertion","arity":1,"parameters":["expected_result"],"splat_index":null,"block_parameter":null,"doc":"Assert that calling the block returns the given value."}],"doc":null},"called_with_arguments":{"kind":"METHOD","name":"called_with_arguments","full_name":"Assert.BlockAssertion#called_with_arguments","separator":"#","clauses":[{"head":"def called_with_arguments(*args) : BlockAssertion","arity":1,"parameters":["*args"],"splat_index":0,"block_parameter":null,"doc":"Set the arguments to be used when calling the block for an assertion."}],"doc":null}},"static_methods":{},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"Assert.BlockAssertion#initialize","separator":"#","clauses":[{"head":"def initialize(@block)","arity":1,"parameters":["@block"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"submodules":{},"subtypes":{}}}},"Spec":{"kind":"MODULE","name":"Spec","full_name":"Spec","doc":"A simple library for writing specs around Myst code. Specs are written using `it`, providing either a name, a code block to test, or both. Multiple `it`s can be organized under a `describe` block for better visual clarity.\nWhen running an `it` spec, it is considered a \"pass\" so long as the given block runs without raising an unhandled error. If an error does propogate to outside of the `it` block, the spec is considered \"failed\".\nSpecs are often best written using an assertion library (such as the standard library's `Assert` module) to remove boilerplate and better express the intention of each spec.\nBy default, a passing spec will output a green `.` to the terminal, while a failing spec will output a red `F`. For now, execution will immediately halt on the first assertion failure, and the program will exit with a non-zero status code.","constants":{},"methods":{"it":{"kind":"METHOD","name":"it","full_name":"Spec.it","separator":".","clauses":[{"head":"def it(name, &block)","arity":1,"parameters":["name"],"splat_index":null,"block_parameter":"block","doc":null},{"head":"def it(&block)","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":null},{"head":"def it(name)","arity":1,"parameters":["name"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"describe":{"kind":"METHOD","name":"describe","full_name":"Spec.describe","separator":".","clauses":[{"head":"def describe(name, &block)","arity":1,"parameters":["name"],"splat_index":null,"block_parameter":"block","doc":null}],"doc":null}},"submodules":{},"subtypes":{"DescribeContainer":{"kind":"TYPE","name":"DescribeContainer","full_name":"Spec.DescribeContainer","doc":null,"constants":{},"instance_methods":{"name":{"kind":"METHOD","name":"name","full_name":"Spec.DescribeContainer#name","separator":"#","clauses":[{"head":"def name : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"get_path":{"kind":"METHOD","name":"get_path","full_name":"Spec.DescribeContainer#get_path","separator":"#","clauses":[{"head":"def get_path(current : String, stack_index) : String","arity":2,"parameters":["current : String","stack_index"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"static_methods":{},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"Spec.DescribeContainer#initialize","separator":"#","clauses":[{"head":"def initialize(name : String)","arity":1,"parameters":["name : String"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"submodules":{},"subtypes":{}},"AssertionFailure":{"kind":"TYPE","name":"AssertionFailure","full_name":"Spec.AssertionFailure","doc":"An AssertionFailure is a container object that is raised when an assertion made within an `it` block fails. The failure contains the Spec object that failed, the value that was expected, and the value that was received.","constants":{},"instance_methods":{"expected":{"kind":"METHOD","name":"expected","full_name":"Spec.AssertionFailure#expected","separator":"#","clauses":[{"head":"def expected","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"got":{"kind":"METHOD","name":"got","full_name":"Spec.AssertionFailure#got","separator":"#","clauses":[{"head":"def got","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"to_s":{"kind":"METHOD","name":"to_s","full_name":"Spec.AssertionFailure#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"static_methods":{},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"Spec.AssertionFailure#initialize","separator":"#","clauses":[{"head":"def initialize(expected, got)","arity":2,"parameters":["expected","got"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"submodules":{},"subtypes":{}},"SingleSpec":{"kind":"TYPE","name":"SingleSpec","full_name":"Spec.SingleSpec","doc":null,"constants":{},"instance_methods":{"name":{"kind":"METHOD","name":"name","full_name":"Spec.SingleSpec#name","separator":"#","clauses":[{"head":"def name : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"run":{"kind":"METHOD","name":"run","full_name":"Spec.SingleSpec#run","separator":"#","clauses":[{"head":"def run(&block)","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":null}],"doc":null}},"static_methods":{},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"Spec.SingleSpec#initialize","separator":"#","clauses":[{"head":"def initialize(name : String)","arity":1,"parameters":["name : String"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"submodules":{},"subtypes":{}}}},"Random":{"kind":"MODULE","name":"Random","full_name":"Random","doc":"The Random module provides methods for generating psuedo-random values.\nValues generated by this module should not be considered \"secure\". Myst does not currently provide a method for ensuring secure randomness.","constants":{},"methods":{"rand":{"kind":"METHOD","name":"rand","full_name":"Random.rand","separator":".","clauses":[{"head":"def rand : Float","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a random Float value in the range `[0, 1]`."},{"head":"def rand(max : Integer) : Integer","arity":1,"parameters":["max : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns a random Integer value in the range `[0, max)`."},{"head":"def rand(max : Float) : Float","arity":1,"parameters":["max : Float"],"splat_index":null,"block_parameter":null,"doc":"Returns a random Float value in the range `[0, max)`."}],"doc":null}},"submodules":{},"subtypes":{}}},"subtypes":{"List":{"kind":"TYPE","name":"List","full_name":"List","doc":"A List is a dynamically-sized, ordered collection of values.","constants":{},"instance_methods":{"to_s":{"kind":"METHOD","name":"to_s","full_name":"List#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Creates a string representation of this List by calling `join` with the delimiter set as `,`. The result will be wrapped in square brackets.\nFor example: `[1,2,3].to_s` will yield `[1,2,3]`."}],"doc":null},"first":{"kind":"METHOD","name":"first","full_name":"List#first","separator":"#","clauses":[{"head":"def first","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the element in the first position of this list."}],"doc":null},"first?":{"kind":"METHOD","name":"first?","full_name":"List#first?","separator":"#","clauses":[{"head":"def first?","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"last":{"kind":"METHOD","name":"last","full_name":"List#last","separator":"#","clauses":[{"head":"def last","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the element in the last position of this list."}],"doc":null},"last?":{"kind":"METHOD","name":"last?","full_name":"List#last?","separator":"#","clauses":[{"head":"def last?","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"empty?":{"kind":"METHOD","name":"empty?","full_name":"List#empty?","separator":"#","clauses":[{"head":"def empty? : Boolean","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Return `true` if the List contains 0 elements. Return `false` otherwise."}],"doc":null},"each":{"kind":"METHOD","name":"each","full_name":"List#each","separator":"#","clauses":[{"head":"def each(&block) : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Iterate the elements of this List. On each iteration, call `block` with that element of the list as the argument.\nReturns the original, unmodified List after completion."}],"doc":null},"size":{"kind":"METHOD","name":"size","full_name":"List#size","separator":"#","clauses":[{"head":"def size : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the number of elements contained in this List as an integer."}],"doc":null},"*":{"kind":"METHOD","name":"*","full_name":"List#*","separator":"#","clauses":[{"head":"def * : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"The splat operation. For Lists, this is a no-op and simply returns the List itself."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"List#==","separator":"#","clauses":[{"head":"def ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is also a List, has the same number of elements, and the elements at every index of `other` are equal to those in this List.\nIf `other` is not a List, or if any of those conditions are not met, this method will return `false`."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"List#!=","separator":"#","clauses":[{"head":"def !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `false` only if `other` is also a List, has the same number of elements, and the elements at every index of `other` are equal to those in this List.\nIf `other` is not a List, or if any of those conditions are not met, this method will return `true`."}],"doc":null},"+":{"kind":"METHOD","name":"+","full_name":"List#+","separator":"#","clauses":[{"head":"def +(other : List) : List","arity":1,"parameters":["other : List"],"splat_index":null,"block_parameter":null,"doc":"Returns a new List object with the elements of `other` appended to the end of this list."}],"doc":null},"[]":{"kind":"METHOD","name":"[]","full_name":"List#[]","separator":"#","clauses":[{"head":"def [](index : Integer)","arity":1,"parameters":["index : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the element of the list at position `index`. If this list does not have an element at `index`, this method will return `nil`."}],"doc":null},"[]=":{"kind":"METHOD","name":"[]=","full_name":"List#[]=","separator":"#","clauses":[{"head":"def []=(index : Integer, value)","arity":2,"parameters":["index : Integer","value"],"splat_index":null,"block_parameter":null,"doc":"Sets the element of this list at position `index` to `value`. If the list previously contained fewer than `index` elements, it will grow to that size, filling the new indices with `nil`.\nThis method returns `value` to be usable in chained expressions."}],"doc":null},"-":{"kind":"METHOD","name":"-","full_name":"List#-","separator":"#","clauses":[{"head":"def -(other : List) : List","arity":1,"parameters":["other : List"],"splat_index":null,"block_parameter":null,"doc":"Returns a new List object with the elements of `other` removed from this list."}],"doc":null},"<":{"kind":"METHOD","name":"<","full_name":"List#<","separator":"#","clauses":[{"head":"def <(other : List) : Boolean","arity":1,"parameters":["other : List"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if this list is a proper subset of `other`. That is, if every element of this list is also present in `other`, _and_ `other` also contains at least one other element.\nThe order of elements in the lists is not important for this method."}],"doc":null},"<=":{"kind":"METHOD","name":"<=","full_name":"List#<=","separator":"#","clauses":[{"head":"def <=(other : List) : Boolean","arity":1,"parameters":["other : List"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if this list is a subset of `other`. That is, if every element of this list is also present in `other`. `other` does _not_ have to contain any other elements.\nThe order of elements in the lists is not important for this method."}],"doc":null},"push":{"kind":"METHOD","name":"push","full_name":"List#push","separator":"#","clauses":[{"head":"def push(*args) : List","arity":1,"parameters":["*args"],"splat_index":0,"block_parameter":null,"doc":"Adds the given elements to the end of this list as individual entries.\nReturns the same list object with the new elements added."}],"doc":null},"pop":{"kind":"METHOD","name":"pop","full_name":"List#pop","separator":"#","clauses":[{"head":"def pop","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Attempts to remove the last element from this list and return it. If the list does not currently contain any elements to remove, this method will return `nil` instead."}],"doc":null},"unshift":{"kind":"METHOD","name":"unshift","full_name":"List#unshift","separator":"#","clauses":[{"head":"def unshift(*args) : List","arity":1,"parameters":["*args"],"splat_index":0,"block_parameter":null,"doc":"Similar to `push`, but appends the elements to the front of the list instead of to the end.\nReturns the same list object with the new elements added at the beginning of the list.\nNote that with multiple arguments, this method preserves their ordering. For example: `[1, 2].unshift(3, 4)` will result in the list `[3, 4, 1, 2]`."}],"doc":null},"shift":{"kind":"METHOD","name":"shift","full_name":"List#shift","separator":"#","clauses":[{"head":"def shift","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Similar to `pop`, but attempts to remove and return the first element of the list instead of the last element. If the list does not currently contain any elements to remove, this method will return `nil` instead."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}},"Time":{"kind":"TYPE","name":"Time","full_name":"Time","doc":"A Time object is a representation of a specific moment in time.\nThis object stores times as two independent values: the number of full seconds since the Unix Epoch, and the number of nanoseconds after those seconds.","constants":{},"instance_methods":{"validate":{"kind":"METHOD","name":"validate","full_name":"Time#validate","separator":"#","clauses":[{"head":"def validate(year, month, day, hour, minute, second, nanosecond)","arity":7,"parameters":["year","month","day","hour","minute","second","nanosecond"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"seconds":{"kind":"METHOD","name":"seconds","full_name":"Time#seconds","separator":"#","clauses":[{"head":"def seconds","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"nanoseconds":{"kind":"METHOD","name":"nanoseconds","full_name":"Time#nanoseconds","separator":"#","clauses":[{"head":"def nanoseconds","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"year":{"kind":"METHOD","name":"year","full_name":"Time#year","separator":"#","clauses":[{"head":"def year","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"month":{"kind":"METHOD","name":"month","full_name":"Time#month","separator":"#","clauses":[{"head":"def month","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"day":{"kind":"METHOD","name":"day","full_name":"Time#day","separator":"#","clauses":[{"head":"def day","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"hour":{"kind":"METHOD","name":"hour","full_name":"Time#hour","separator":"#","clauses":[{"head":"def hour","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"minute":{"kind":"METHOD","name":"minute","full_name":"Time#minute","separator":"#","clauses":[{"head":"def minute","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"second":{"kind":"METHOD","name":"second","full_name":"Time#second","separator":"#","clauses":[{"head":"def second","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"millisecond":{"kind":"METHOD","name":"millisecond","full_name":"Time#millisecond","separator":"#","clauses":[{"head":"def millisecond","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"nanosecond":{"kind":"METHOD","name":"nanosecond","full_name":"Time#nanosecond","separator":"#","clauses":[{"head":"def nanosecond","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"-":{"kind":"METHOD","name":"-","full_name":"Time#-","separator":"#","clauses":[{"head":"def -(other : Time)","arity":1,"parameters":["other : Time"],"splat_index":null,"block_parameter":null,"doc":null},{"head":"def -(other)","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"to_s":{"kind":"METHOD","name":"to_s","full_name":"Time#to_s","separator":"#","clauses":[{"head":"def to_s(format : String) : String","arity":1,"parameters":["format : String"],"splat_index":null,"block_parameter":null,"doc":"Returns a new String using the given `format` string to determine the content. `format` can contain any combination of the directives listed here: https://crystal-lang.org/api/0.24.2/Time/Format.html."},{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Renders the string using the default Unix timestamp format."}],"doc":null}},"static_methods":{"now":{"kind":"METHOD","name":"now","full_name":"Time.now","separator":".","clauses":[{"head":"defstatic now : Time","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Create and return a new Time object using the current system time."}],"doc":null}},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"Time#initialize","separator":"#","clauses":[{"head":"def initialize(seconds, nanoseconds)","arity":2,"parameters":["seconds","nanoseconds"],"splat_index":null,"block_parameter":null,"doc":null},{"head":"def initialize(year, month, day)","arity":3,"parameters":["year","month","day"],"splat_index":null,"block_parameter":null,"doc":null},{"head":"def initialize(year, month, day, hour)","arity":4,"parameters":["year","month","day","hour"],"splat_index":null,"block_parameter":null,"doc":null},{"head":"def initialize(year, month, day, hour, minute)","arity":5,"parameters":["year","month","day","hour","minute"],"splat_index":null,"block_parameter":null,"doc":null},{"head":"def initialize(year, month, day, hour, minute, second)","arity":6,"parameters":["year","month","day","hour","minute","second"],"splat_index":null,"block_parameter":null,"doc":null},{"head":"def initialize(year, month, day, hour, minute, second, nanosecond)","arity":7,"parameters":["year","month","day","hour","minute","second","nanosecond"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"submodules":{"Util":{"kind":"MODULE","name":"Util","full_name":"Time.Util","doc":"A module containing utility functions and constants for performing calculations with times. This module is primarily used by the `Time` type to properly translate between componentized time objects and seconds or nanoseconds.","constants":{"DAYS_MONTH":{"kind":"CONSTANT","name":"DAYS_MONTH","full_name":"Time.Util.DAYS_MONTH","value":"[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]","doc":"An array representing the number of days in each month of a normal year, with January being month `0`."},"DAYS_MONTH_LEAP":{"kind":"CONSTANT","name":"DAYS_MONTH_LEAP","full_name":"Time.Util.DAYS_MONTH_LEAP","value":"[0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]","doc":"Similar to `DAYS_MONTH`, but for the months of a leap year."},"SECONDS_PER_MINUTE":{"kind":"CONSTANT","name":"SECONDS_PER_MINUTE","full_name":"Time.Util.SECONDS_PER_MINUTE","value":"60","doc":null},"SECONDS_PER_HOUR":{"kind":"CONSTANT","name":"SECONDS_PER_HOUR","full_name":"Time.Util.SECONDS_PER_HOUR","value":"60 * SECONDS_PER_MINUTE","doc":null},"SECONDS_PER_DAY":{"kind":"CONSTANT","name":"SECONDS_PER_DAY","full_name":"Time.Util.SECONDS_PER_DAY","value":"24 * SECONDS_PER_HOUR","doc":null},"NANOSECONDS_PER_MILLISECOND":{"kind":"CONSTANT","name":"NANOSECONDS_PER_MILLISECOND","full_name":"Time.Util.NANOSECONDS_PER_MILLISECOND","value":"1000000.0","doc":null},"NANOSECONDS_PER_SECOND":{"kind":"CONSTANT","name":"NANOSECONDS_PER_SECOND","full_name":"Time.Util.NANOSECONDS_PER_SECOND","value":"1000000000.0","doc":null},"NANOSECONDS_PER_MINUTE":{"kind":"CONSTANT","name":"NANOSECONDS_PER_MINUTE","full_name":"Time.Util.NANOSECONDS_PER_MINUTE","value":"NANOSECONDS_PER_SECOND * 60","doc":null},"DAYS_PER_400_YEARS":{"kind":"CONSTANT","name":"DAYS_PER_400_YEARS","full_name":"Time.Util.DAYS_PER_400_YEARS","value":"365 * 400 + 97","doc":null},"DAYS_PER_100_YEARS":{"kind":"CONSTANT","name":"DAYS_PER_100_YEARS","full_name":"Time.Util.DAYS_PER_100_YEARS","value":"365 * 100 + 24","doc":null},"DAYS_PER_4_YEARS":{"kind":"CONSTANT","name":"DAYS_PER_4_YEARS","full_name":"Time.Util.DAYS_PER_4_YEARS","value":"365 * 4 + 1","doc":null}},"methods":{"leap_year?":{"kind":"METHOD","name":"leap_year?","full_name":"Time.Util.leap_year?","separator":".","clauses":[{"head":"def leap_year?(year) : Boolean","arity":1,"parameters":["year"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"absolute_days":{"kind":"METHOD","name":"absolute_days","full_name":"Time.Util.absolute_days","separator":".","clauses":[{"head":"def absolute_days(year, month, day)","arity":3,"parameters":["year","month","day"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"year_month_day_day_year":{"kind":"METHOD","name":"year_month_day_day_year","full_name":"Time.Util.year_month_day_day_year","separator":".","clauses":[{"head":"def year_month_day_day_year(seconds)","arity":1,"parameters":["seconds"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"convert_to_seconds":{"kind":"METHOD","name":"convert_to_seconds","full_name":"Time.Util.convert_to_seconds","separator":".","clauses":[{"head":"def convert_to_seconds(year, month, day, hour, minute, second)","arity":6,"parameters":["year","month","day","hour","minute","second"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"days_in_month":{"kind":"METHOD","name":"days_in_month","full_name":"Time.Util.days_in_month","separator":".","clauses":[{"head":"def days_in_month(year, month)","arity":2,"parameters":["year","month"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"submodules":{},"subtypes":{}}},"subtypes":{}},"IO":{"kind":"TYPE","name":"IO","full_name":"IO","doc":"IO is the base type for all IO types in Myst.\nTypes that inherit this type only need to implement the `read` and `write` methods. From there, this type provides a number of methods for performing complex interactions with input and output streams.\nBy providing a consistent interface for all IO operations in Myst, this type abstracts out the implementation details of interacting with various types of streams and allows users to easily write flexible methods that can work with any input or output object.","constants":{},"instance_methods":{"print":{"kind":"METHOD","name":"print","full_name":"IO#print","separator":"#","clauses":[{"head":"def print(value) : IO","arity":1,"parameters":["value"],"splat_index":null,"block_parameter":null,"doc":"Writes the given value through this IO, in order. The value will be converted to a string by calling `to_s` on it, then written to the IO using `write`."}],"doc":null},"puts":{"kind":"METHOD","name":"puts","full_name":"IO#puts","separator":"#","clauses":[{"head":"def puts : IO","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Writes the given values through this IO, in order. Each value will be converted to a string by calling `to_s` on it, then written to the IO using `write`.\nUnlike `print`, each value will also be succeeded by a newline character. If no arguments are given, a single newline character will be written to the IO."},{"head":"def puts(*values) : IO","arity":1,"parameters":["*values"],"splat_index":0,"block_parameter":null,"doc":null}],"doc":null},"gets":{"kind":"METHOD","name":"gets","full_name":"IO#gets","separator":"#","clauses":[{"head":"def gets : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Reads from the IO until a newline character is found. Returns a String containing all of the characters read from the IO, excluding the newline character.\nIf a `read` call returns an empty String before a newline character is found, the characters up until that point will be returned."}],"doc":null},"read":{"kind":"METHOD","name":"read","full_name":"IO#read","separator":"#","clauses":[{"head":"def read(size : Integer) : String","arity":1,"parameters":["size : Integer"],"splat_index":null,"block_parameter":null,"doc":"This method must be overridden by types that inherit from IO.\nReads `size` bytes from the underlying stream and returns them as a single String object. The exact semantics regarding errors is dependent on the implementing type."}],"doc":null},"write":{"kind":"METHOD","name":"write","full_name":"IO#write","separator":"#","clauses":[{"head":"def write(content) : Nil","arity":1,"parameters":["content"],"splat_index":null,"block_parameter":null,"doc":"This method must be overridden by types that inherit from IO.\nWrites the byte representation of `content` to the underlying stream. This method is generally best used by providing a String value to write.\nThe exact semantics regarding errors is dependent on the implementing type."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{"FileDescriptor":{"kind":"TYPE","name":"FileDescriptor","full_name":"IO.FileDescriptor","doc":"An IO object representing an open file descriptor on the system.","constants":{},"instance_methods":{"read":{"kind":"METHOD","name":"read","full_name":"IO.FileDescriptor#read","separator":"#","clauses":[{"head":"def read(size : Integer) : String","arity":1,"parameters":["size : Integer"],"splat_index":null,"block_parameter":null,"doc":"Reads `size` bytes from the file descriptor and returns them as a new String."}],"doc":null},"write":{"kind":"METHOD","name":"write","full_name":"IO.FileDescriptor#write","separator":"#","clauses":[{"head":"def write(content : String) : Nil","arity":1,"parameters":["content : String"],"splat_index":null,"block_parameter":null,"doc":"Writes the bytes of `content` to the file descriptor. The socket is not guaranteed to be flushed after this operation."}],"doc":null}},"static_methods":{},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"IO.FileDescriptor#initialize","separator":"#","clauses":[{"head":"def initialize(fd : Integer) : FileDscriptor","arity":1,"parameters":["fd : Integer"],"splat_index":null,"block_parameter":null,"doc":"Initializes a new object based on the given file descriptor, `fd`. The descriptor is assumed to have been opened before this method is called."}],"doc":null}},"submodules":{},"subtypes":{}}}},"Range":{"kind":"TYPE","name":"Range","full_name":"Range","doc":"The `Range` type represents the interval between two values. By default, Ranges are _inclusive_, meaning both the first and last values are included as part of the Range.\nThe only values stored by a Range are the lower and upper bounds. The values within the interval are calculated lazily, and only when necessary. With the exceptions of `#each` and `#reverse_each`, most methods are implemented using only comparisons between these bounds.\nAs Myst does not currently provide a literal syntax for Ranges, creating a new Range is done with normal type instantiation, providing the first and last values of the interval as arguments: `%Range{10, 20}`.\nAny value type can be used in a Range so long as it implements the `<` and `<=` comparison operators. However, to enable iterating through the Range, value types must also implement a `#successor` that returns the next element of the interval.\nRanges can also be used in reverse (e.g., with `#reverse_each`) if the value type defines a `#predecessor` method returning the previous element of the interval.\n`Range` includes `Enumerable`, so all of Enumerable's methods can be used directly on Ranges. Where possible, Range provides optimized implementations of Enumerable methods to avoid having to iterate all values in the interval (e.g., `#includes?`).","constants":{},"instance_methods":{"first":{"kind":"METHOD","name":"first","full_name":"Range#first","separator":"#","clauses":[{"head":"def first","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the first element of this Range; the lower bound."}],"doc":null},"last":{"kind":"METHOD","name":"last","full_name":"Range#last","separator":"#","clauses":[{"head":"def last","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the last element of this Range; the upper bound."}],"doc":null},"each":{"kind":"METHOD","name":"each","full_name":"Range#each","separator":"#","clauses":[{"head":"def each(&block) : Range","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Iterates forward through the Range (starting at `first` and incrementing to `last`), calling the block for every element in the interval."}],"doc":null},"reverse_each":{"kind":"METHOD","name":"reverse_each","full_name":"Range#reverse_each","separator":"#","clauses":[{"head":"def reverse_each(&block) : Range","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Iterates backward through the Range (starting at `last` and decrementing to `first`), calling the block for every element in the interval."}],"doc":null},"includes?":{"kind":"METHOD","name":"includes?","full_name":"Range#includes?","separator":"#","clauses":[{"head":"def includes?(value) : Boolean","arity":1,"parameters":["value"],"splat_index":null,"block_parameter":null,"doc":"Returns true if `value` exists within the interval of this Range.\nThis method has an `O(1)` implementation using only comparisons with the bounds of the interval."}],"doc":null},"to_s":{"kind":"METHOD","name":"to_s","full_name":"Range#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns an abstract string representation of the interval covered by this Range. Note that this does _not_ return a string of all the values in the interval."}],"doc":null}},"static_methods":{},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"Range#initialize","separator":"#","clauses":[{"head":"def initialize(@first, @last)","arity":2,"parameters":["@first","@last"],"splat_index":null,"block_parameter":null,"doc":"Creates a new range for the interval `[first, last]`."}],"doc":null}},"submodules":{},"subtypes":{}},"File":{"kind":"TYPE","name":"File","full_name":"File","doc":"A high-level representation of a File on the system. Creating a new File object will immediately open it.\nThe Myst interpreter does not currently ensure that files are automatically closed when the object is destroyed. As such, it is important to remember to close a File object when you are done using it, or use the static versions of the File methods to avoid creating new File objects in the first place.","constants":{},"instance_methods":{"path":{"kind":"METHOD","name":"path","full_name":"File#path","separator":"#","clauses":[{"head":"def path : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the path specified when opening this File. The path will not be expanded or modified from what was given to the initializer for this File object."}],"doc":null},"mode":{"kind":"METHOD","name":"mode","full_name":"File#mode","separator":"#","clauses":[{"head":"def mode : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the mode that this File was opened with; one of `\"r\"`, `\"w\"`, `\"a\"`, or `\"b\"`."}],"doc":null},"close":{"kind":"METHOD","name":"close","full_name":"File#close","separator":"#","clauses":[{"head":"def close : Nil","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Flushes and closes this File object's file handle, removing it from the open file pool."}],"doc":null},"size":{"kind":"METHOD","name":"size","full_name":"File#size","separator":"#","clauses":[{"head":"def size : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the size, in bytes, of this File."}],"doc":null}},"static_methods":{"open":{"kind":"METHOD","name":"open","full_name":"File.open","separator":".","clauses":[{"head":"defstatic open(path : String, mode : String) : File","arity":2,"parameters":["path : String","mode : String"],"splat_index":null,"block_parameter":null,"doc":"Creates a new File object for the file specified by `path` and opens it using the given opening mode. The mode can be any of the standard opening modes: `r`, `w`, `a`, or `b`.\nIf a file is being created, its initial permissions are set using the default creation permissions for the system.\nThis should be the preferred method for creating new File objects, rather than directly instantiating new File objects."},{"head":"defstatic open(path : String) : File","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Opens the file specified by `path` in reading mode (`\"r\"`)."}],"doc":null},"basename":{"kind":"METHOD","name":"basename","full_name":"File.basename","separator":".","clauses":[{"head":"defstatic basename(path : String) : String","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns the last path component of `path`, determined by splitting `path` based on the system's default path separator. This method acts like the inverse of `dirname`."}],"doc":null},"chmod":{"kind":"METHOD","name":"chmod","full_name":"File.chmod","separator":".","clauses":[{"head":"defstatic chmod(path : String, mode : Integer) : Nil","arity":2,"parameters":["path : String","mode : Integer"],"splat_index":null,"block_parameter":null,"doc":"Changes the permissions of the file specified by `path` to those represented by `mode`.\nSince Myst does not currently support octal literals (as mode strings are generally written), the easiest way to specify the mode is to use `String#to_i` with a `base` of 8.\nFor example: `File.chmod(file, \"644\".to_i(8))`."}],"doc":null},"delete":{"kind":"METHOD","name":"delete","full_name":"File.delete","separator":".","clauses":[{"head":"defstatic delete(path : String) : Nil","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Attempts to delete the file specified by `path` from the file system.\nThis method may raise a RuntimeError if the file does not exist."}],"doc":null},"directory?":{"kind":"METHOD","name":"directory?","full_name":"File.directory?","separator":".","clauses":[{"head":"defstatic directory?(path : String) : Boolean","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if the file specified by `path` exists and is a directory."}],"doc":null},"dirname":{"kind":"METHOD","name":"dirname","full_name":"File.dirname","separator":".","clauses":[{"head":"defstatic dirname(path : String) : String","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns a new String of `path` with last path component removed. This method acts like the inverse of `basename`."}],"doc":null},"each_line":{"kind":"METHOD","name":"each_line","full_name":"File.each_line","separator":".","clauses":[{"head":"defstatic each_line(file_name : String, &block) : Nil","arity":1,"parameters":["file_name : String"],"splat_index":null,"block_parameter":"block","doc":"Opens the file specified by `file_name` and iterates the content line-by-line. Each line is passed to `block`.\nThis method is useful for parsing large files, since the entire file does not have to be loaded into memory at one time."}],"doc":null},"empty?":{"kind":"METHOD","name":"empty?","full_name":"File.empty?","separator":".","clauses":[{"head":"defstatic empty?(path : String) : Boolean","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if the file specified by `path` exists but has no content.\nThis method may raise a RuntimeError if the file does not exist."}],"doc":null},"executable?":{"kind":"METHOD","name":"executable?","full_name":"File.executable?","separator":".","clauses":[{"head":"defstatic executable?(path : String) : Boolean","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if the file specified by `path` exists and is executable by the real user of the process calling this method."}],"doc":null},"exists?":{"kind":"METHOD","name":"exists?","full_name":"File.exists?","separator":".","clauses":[{"head":"defstatic exists?(path : String) : Boolean","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if the file specified by `path` exists on the filesystem."}],"doc":null},"expand_path":{"kind":"METHOD","name":"expand_path","full_name":"File.expand_path","separator":".","clauses":[{"head":"defstatic expand_path(path : String) : String","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns a new String reprenting the expansion of `path` to an absolute path. Relative paths are referenced from the current working directory of the process calling this method."}],"doc":null},"extname":{"kind":"METHOD","name":"extname","full_name":"File.extname","separator":".","clauses":[{"head":"defstatic extname(path : String) : String","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns the extension of the file specified by `path`. The extension is considered the string after the last dot (`.`) in the `path`.\nIf the file has no extension, this method returns a new, empty String."}],"doc":null},"file?":{"kind":"METHOD","name":"file?","full_name":"File.file?","separator":".","clauses":[{"head":"defstatic file?(path : String) : Boolean","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if the file specified by `path` exists and is a file."}],"doc":null},"join":{"kind":"METHOD","name":"join","full_name":"File.join","separator":".","clauses":[{"head":"defstatic join(*parts) : String","arity":1,"parameters":["*parts"],"splat_index":0,"block_parameter":null,"doc":"Returns a new String containing all of the elements of `parts` joined together using the system's default path separator."}],"doc":null},"lines":{"kind":"METHOD","name":"lines","full_name":"File.lines","separator":".","clauses":[{"head":"defstatic lines(file_name : String) : List","arity":1,"parameters":["file_name : String"],"splat_index":null,"block_parameter":null,"doc":"Opens the file specified by `file_name` and returns a new List containing each line of the file as elements.\nFor large files (and almost always) `File.each_line` should be preferred, as it will avoid reading the entire file into memory at one time."}],"doc":null},"link":{"kind":"METHOD","name":"link","full_name":"File.link","separator":".","clauses":[{"head":"defstatic link(old_path : String, new_path : String) : Nil","arity":2,"parameters":["old_path : String","new_path : String"],"splat_index":null,"block_parameter":null,"doc":"Creates a new (hard) link at `new_path` to the existing file at `old_path`."}],"doc":null},"read":{"kind":"METHOD","name":"read","full_name":"File.read","separator":".","clauses":[{"head":"defstatic read(path : String) : String","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Opens the file specified by `path` and returns a single string containing the entire content of the file."}],"doc":null},"readable?":{"kind":"METHOD","name":"readable?","full_name":"File.readable?","separator":".","clauses":[{"head":"defstatic readable?(path : String) : Boolean","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if the file specified by `path` exists and is readable by the real user of the process calling this method."}],"doc":null},"real_path":{"kind":"METHOD","name":"real_path","full_name":"File.real_path","separator":".","clauses":[{"head":"defstatic real_path(path : String) : String","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns the real path of `path` by following symlinks. The file specified by the resulting path is not guaranteed to exist (e.g., if the symlink is broken)."}],"doc":null},"rename":{"kind":"METHOD","name":"rename","full_name":"File.rename","separator":".","clauses":[{"head":"defstatic rename(old_name : String, new_name : String) : String","arity":2,"parameters":["old_name : String","new_name : String"],"splat_index":null,"block_parameter":null,"doc":"Moves the file specified by `old_name` to `new_name`.\nThis method may raise a RuntimeError if the file specified by `new_name` already exists or can not be created."}],"doc":null},"size":{"kind":"METHOD","name":"size","full_name":"File.size","separator":".","clauses":[{"head":"defstatic size(path : String) : Integer","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns the size of the file specified by `path` represented in bytes."}],"doc":null},"symlink":{"kind":"METHOD","name":"symlink","full_name":"File.symlink","separator":".","clauses":[{"head":"defstatic symlink(old_path : String, new_path : String) : String","arity":2,"parameters":["old_path : String","new_path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns the last path component of `path`, determined by splitting `path` based on the system's default path separator."}],"doc":null},"symlink?":{"kind":"METHOD","name":"symlink?","full_name":"File.symlink?","separator":".","clauses":[{"head":"defstatic symlink?(path : String) : Boolean","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if the file specified by `path` is a symbolic link."}],"doc":null},"touch":{"kind":"METHOD","name":"touch","full_name":"File.touch","separator":".","clauses":[{"head":"defstatic touch(path : String) : Nil","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Attempts to set the access and modification times of the file specified by `path` to the current time.\nIf the file does not exist, it will be created."}],"doc":null},"writable?":{"kind":"METHOD","name":"writable?","full_name":"File.writable?","separator":".","clauses":[{"head":"defstatic writable?(path : String) : Boolean","arity":1,"parameters":["path : String"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if the file specified by `path` exists and is writable by the real user of the process calling this method."}],"doc":null},"write":{"kind":"METHOD","name":"write","full_name":"File.write","separator":".","clauses":[{"head":"defstatic write(path : String, content : String) : Nil","arity":2,"parameters":["path : String","content : String"],"splat_index":null,"block_parameter":null,"doc":"Writes the bytes of `content` to the file specified by `path`. `content` is assumed to already by a String value; no conversions will be performed.\nIf the file already exists, it will be overwritten. Otherwise, a new file will be created."}],"doc":null}},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"File#initialize","separator":"#","clauses":[{"head":"def initialize(path : String, mode : String) : File","arity":2,"parameters":["path : String","mode : String"],"splat_index":null,"block_parameter":null,"doc":"Creates a new File object for the file specified by `path` and opens it using the given opening mode. The mode can be any of the standard opening modes: `r`, `w`, `a`, or `b`.\nIf a file is being created, its initial permissions are set using the default creation permissions for the system."}],"doc":null}},"submodules":{},"subtypes":{}},"Map":{"kind":"TYPE","name":"Map","full_name":"Map","doc":"A Map is a dynamically-sized, un-ordered collection of key-value pairs.","constants":{},"instance_methods":{"empty?":{"kind":"METHOD","name":"empty?","full_name":"Map#empty?","separator":"#","clauses":[{"head":"def empty? : Boolean","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Return `true` if the Map contains 0 entries. Return `false` otherwise."}],"doc":null},"keys":{"kind":"METHOD","name":"keys","full_name":"Map#keys","separator":"#","clauses":[{"head":"def keys","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"values":{"kind":"METHOD","name":"values","full_name":"Map#values","separator":"#","clauses":[{"head":"def values","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"each":{"kind":"METHOD","name":"each","full_name":"Map#each","separator":"#","clauses":[{"head":"def each : Map","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Iterate the key-value pairs of this Map. On each iteration, call `block` with the key and value of that pair as the arguments.\nReturns the original, unmodified Map after completion."}],"doc":null},"size":{"kind":"METHOD","name":"size","full_name":"Map#size","separator":"#","clauses":[{"head":"def size : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the number of entries contained in this Map as an integer."}],"doc":null},"+":{"kind":"METHOD","name":"+","full_name":"Map#+","separator":"#","clauses":[{"head":"def +(other : Map) : Map","arity":1,"parameters":["other : Map"],"splat_index":null,"block_parameter":null,"doc":"Returns a new Map object with the key-value pairs of `other` added to this map. If this map and `other` both contain the a given key, it will be given the value from `other`."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"Map#==","separator":"#","clauses":[{"head":"def ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is also a Map, has the same number entries, and the key and value of each entry in `other` are equal to some key-value pair in this Map.\nIf `other` is not a Map, or if any of those conditions are not met, this method will return `false`."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"Map#!=","separator":"#","clauses":[{"head":"def !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `false` only if `other` is also a Map, has the same number entries, and the key and value of each entry in `other` are equal to some key-value pair in this Map.\nIf `other` is not a Map, or if any of those conditions are not met, this method will return `true`."}],"doc":null},"[]":{"kind":"METHOD","name":"[]","full_name":"Map#[]","separator":"#","clauses":[{"head":"def [](key)","arity":1,"parameters":["key"],"splat_index":null,"block_parameter":null,"doc":"Returns the value of the entry in this map with the given `key`. If this map does not have an entry with the given `key`, this method will return nil instead."}],"doc":null},"[]=":{"kind":"METHOD","name":"[]=","full_name":"Map#[]=","separator":"#","clauses":[{"head":"def []=(key, value)","arity":2,"parameters":["key","value"],"splat_index":null,"block_parameter":null,"doc":"Assigns or creates an entry in this map under `key` with the given `value`. If this map previously contained an entry under the given `key`, its value will be overwritten.\nThis method returns `value` to be usable in chained expressions."}],"doc":null},"<":{"kind":"METHOD","name":"<","full_name":"Map#<","separator":"#","clauses":[{"head":"def <(other : Map) : Boolean","arity":1,"parameters":["other : Map"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if this map is a proper subset of `other`. That is, if every key-value pair of this map is also present in `other`, _and_ `other` also contains at least one other entry."}],"doc":null},"<=":{"kind":"METHOD","name":"<=","full_name":"Map#<=","separator":"#","clauses":[{"head":"def <=(other : Map) : Boolean","arity":1,"parameters":["other : Map"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if this map is a subset of `other`. That is, if every key-value pair of this map is also present in `other`. `other` does not have to contain any other entries."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}},"Integer":{"kind":"TYPE","name":"Integer","full_name":"Integer","doc":"An Integer is an object representing a 64-bit integer number.\nNew Integer objects are created using integer literals, which are represented as a series of one or more digits. Integer literals may also contain underscore characters between any two digits to improve legibility.\nThe following are all valid integer literals: `000`, `12_345__`, `10_000_00`.\nThe following are not considered integer literals: `1.0`, `1a1`, `abc1`.","constants":{},"instance_methods":{"times":{"kind":"METHOD","name":"times","full_name":"Integer#times","separator":"#","clauses":[{"head":"def times(&block) : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"Call block as many times as the value of this integer."}],"doc":null},"successor":{"kind":"METHOD","name":"successor","full_name":"Integer#successor","separator":"#","clauses":[{"head":"def successor : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the next smallest integer that is greater than this integer. This method is primarily intended for use with the `Range` type."}],"doc":null},"predecessor":{"kind":"METHOD","name":"predecessor","full_name":"Integer#predecessor","separator":"#","clauses":[{"head":"def predecessor : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the next largest integer that is smaller than this integer. This method is primarily intended for use with the `Range` type."}],"doc":null},"+":{"kind":"METHOD","name":"+","full_name":"Integer#+","separator":"#","clauses":[{"head":"def +(other : Integer) : Integer","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the result of adding the value of `other` to this integer. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError.\nIf `other` is a Float, this method will return a Float instead of an Integer."},{"head":"def +(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"-":{"kind":"METHOD","name":"-","full_name":"Integer#-","separator":"#","clauses":[{"head":"def -(other : Integer) : Integer","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the result of subtracting the value of `other` from this integer. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError.\nIf `other` is a Float, this method will return a Float instead of an Integer."},{"head":"def -(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"*":{"kind":"METHOD","name":"*","full_name":"Integer#*","separator":"#","clauses":[{"head":"def *(other : Integer) : Integer","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the result of multiplying the value of `other` with this integer. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError.\nIf `other` is a Float, this method will return a Float instead of an Integer."},{"head":"def *(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"/":{"kind":"METHOD","name":"/","full_name":"Integer#/","separator":"#","clauses":[{"head":"def /(other : Integer) : Integer","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the result of dividing this integer by the value of `other`. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError.\nIf `other` is a Float, this method will return a Float instead of an Integer.\nThis method will also raise a RuntimeError if the value of `other` would cause a division by zero."},{"head":"def /(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"%":{"kind":"METHOD","name":"%","full_name":"Integer#%","separator":"#","clauses":[{"head":"def %(other : Integer) : Integer","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the result of adding the value of `other` to this integer. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError.\nIf `other` is a Float, this method will return a Float instead of an Integer.\nThis method will also raise a RuntimeError if the value of `other` would cause a division by zero."},{"head":"def %(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"to_f":{"kind":"METHOD","name":"to_f","full_name":"Integer#to_f","separator":"#","clauses":[{"head":"def to_f : Float","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a new Float object with the same value as this integer."}],"doc":null},"to_s":{"kind":"METHOD","name":"to_s","full_name":"Integer#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a new String object representing this integer in base 10. This method does _not_ preserve underscores from integer literals."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"Integer#==","separator":"#","clauses":[{"head":"def ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` has the same value as this integer. This method considers integer-value Float objects as equal to their Integer counterparts.\nIf `other` is not either a Float or an Integer, this method will always return `false`."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"Integer#!=","separator":"#","clauses":[{"head":"def !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` has any value other than the value of this float. This method considers integer-value Float objects as equal to their Integer counterparts.\nIf `other` is not either a Float or an Integer, this method will always return `true`."}],"doc":null},"negate":{"kind":"METHOD","name":"negate","full_name":"Integer#negate","separator":"#","clauses":[{"head":"def negate : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a new Integer object representing the result of multiplying this integer's value by `-1`."}],"doc":null},"<":{"kind":"METHOD","name":"<","full_name":"Integer#<","separator":"#","clauses":[{"head":"def <(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is a Float or an Integer, and has a value that is mathematically less than this float.\nIf `other` is not a Float or an Integer, this method will raise a RuntimeError."}],"doc":null},"<=":{"kind":"METHOD","name":"<=","full_name":"Integer#<=","separator":"#","clauses":[{"head":"def <=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is a Float or an Integer, and has a value that is mathematically less than or equal to this float.\nIf `other` is not a Float or an Integer, this method will raise a RuntimeError."}],"doc":null},">":{"kind":"METHOD","name":">","full_name":"Integer#>","separator":"#","clauses":[{"head":"def >(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is a Float or an Integer, and has a value that is mathematically greater than or equal to this float.\nIf `other` is not a Float or an Integer, this method will raise a RuntimeError."}],"doc":null},">=":{"kind":"METHOD","name":">=","full_name":"Integer#>=","separator":"#","clauses":[{"head":"def >=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is a Float or an Integer, and has a value that is mathematically greater than this float.\nIf `other` is not a Float or an Integer, this method will raise a RuntimeError."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}},"String":{"kind":"TYPE","name":"String","full_name":"String","doc":"A String represents an arbitrary sequence of UTF-8 characters. New String objects are created using String literals, which are character sequences contained within doublequotes (`\"`).\nSpecial characters can be included a string using backslash escape sequences such as `\\n` for a newline character, `\\t` for a tab character, or `\\0` for a null-terminator.\nStrings can also include \"interpolations\", which are Myst expressions that automatically get evaluated, converted to a String value, and then inserted at that position in the string. Interpolations are done with a variant of the global interpolation syntax: `\"<()>\"`. Unlike interpolations elsehwhere in Myst, the parentheses are always required here to help avoid unnecessary escaping in strings containing `<` and/or `>` characters.","constants":{},"instance_methods":{"empty?":{"kind":"METHOD","name":"empty?","full_name":"String#empty?","separator":"#","clauses":[{"head":"def empty? : Boolean","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Return `true` if the String contains 0 characters. Return `false` otherwise."}],"doc":null},"each_char":{"kind":"METHOD","name":"each_char","full_name":"String#each_char","separator":"#","clauses":[{"head":"def each_char(&block) : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":null}],"doc":null},"+":{"kind":"METHOD","name":"+","full_name":"String#+","separator":"#","clauses":[{"head":"def +(other : String) : String","arity":1,"parameters":["other : String"],"splat_index":null,"block_parameter":null,"doc":"Returns a new String object with the content of `other` appended after the content of this string."}],"doc":null},"*":{"kind":"METHOD","name":"*","full_name":"String#*","separator":"#","clauses":[{"head":"def *(scale : Integer) : String","arity":1,"parameters":["scale : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns a new String object with the content of this string repeated `scale` times."}],"doc":null},"to_i":{"kind":"METHOD","name":"to_i","full_name":"String#to_i","separator":"#","clauses":[{"head":"def to_i(base : Integer) : Integer","arity":1,"parameters":["base : Integer"],"splat_index":null,"block_parameter":null,"doc":"Attempts to parse the content of this string into an integer value, assuming the value is written using the given `base`.\nIf the conversion to an Integer fails for any reason, this method will raise a RuntimeError."},{"head":"def to_i","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Same as above, but assuming a base 10 representation."}],"doc":null},"to_f":{"kind":"METHOD","name":"to_f","full_name":"String#to_f","separator":"#","clauses":[{"head":"def to_f : Float","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Attempts to parse the content of this string into a float value, assuming a base 10 representation.\nIf the conversion to a Float fails for any reason, this method will raise a RuntimeError."}],"doc":null},"to_s":{"kind":"METHOD","name":"to_s","full_name":"String#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns this string."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"String#==","separator":"#","clauses":[{"head":"def ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is also a String with the same content as this string. Returns `false` otherwise."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"String#!=","separator":"#","clauses":[{"head":"def !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `false` if `other` is also a String with the same content as this string. Returns `true` otherwise."}],"doc":null},"split":{"kind":"METHOD","name":"split","full_name":"String#split","separator":"#","clauses":[{"head":"def split(delimiter : String) : List","arity":1,"parameters":["delimiter : String"],"splat_index":null,"block_parameter":null,"doc":"Returns a new List created by scanning this string for occurrences of `delimiter` and making a new String from the content between each occurrence. The occurrences of `delimiter` will _not_ be included in the resulting list."},{"head":"def split : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Same as above, but defaulting the delimiter to `\" \"`."}],"doc":null},"size":{"kind":"METHOD","name":"size","full_name":"String#size","separator":"#","clauses":[{"head":"def size : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the number of unicode codepoints contained in this string. Note that this is not _necessarily_ the same as the number of bytes in the string."}],"doc":null},"chars":{"kind":"METHOD","name":"chars","full_name":"String#chars","separator":"#","clauses":[{"head":"def chars : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a List of the individual characters in the content of this string. If this string is empty, the return value will be an empty list."}],"doc":null},"downcase":{"kind":"METHOD","name":"downcase","full_name":"String#downcase","separator":"#","clauses":[{"head":"def downcase : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Return a copy of this string with all uppercase characters converted to their lowercase counterparts."}],"doc":null},"upcase":{"kind":"METHOD","name":"upcase","full_name":"String#upcase","separator":"#","clauses":[{"head":"def upcase : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Return a copy of this string with all lowercase characters converted to their uppercase counterparts."}],"doc":null},"chomp":{"kind":"METHOD","name":"chomp","full_name":"String#chomp","separator":"#","clauses":[{"head":"def chomp(suffix : String) : String","arity":1,"parameters":["suffix : String"],"splat_index":null,"block_parameter":null,"doc":"Returns a copy of this string with the given suffix removed from the end of the content. If the string does not contain the suffix, an unmodified copy of the string is returned."},{"head":"def chomp : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a copy of this string with the last newline/carriage-return removed. If the string ends with multiple newlines/carriage-returns, only the last occurrence will be removed, though the special case `\\r\\n` will be completely removed."}],"doc":null},"strip":{"kind":"METHOD","name":"strip","full_name":"String#strip","separator":"#","clauses":[{"head":"def strip : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a copy of this string with all leading and trailing whitespace removed."}],"doc":null},"rstrip":{"kind":"METHOD","name":"rstrip","full_name":"String#rstrip","separator":"#","clauses":[{"head":"def rstrip : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a copy of this string with all trailing whitespace removed."}],"doc":null},"lstrip":{"kind":"METHOD","name":"lstrip","full_name":"String#lstrip","separator":"#","clauses":[{"head":"def lstrip : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a copy of this string with all leading whitespace removed."}],"doc":null},"includes?":{"kind":"METHOD","name":"includes?","full_name":"String#includes?","separator":"#","clauses":[{"head":"def includes?(other : String) : Boolean","arity":1,"parameters":["other : String"],"splat_index":null,"block_parameter":null,"doc":"Returns true if this string contains the content of `other` anywhere in its content."}],"doc":null},"at":{"kind":"METHOD","name":"at","full_name":"String#at","separator":"#","clauses":[{"head":"def at(index : Integer, length : Integer) : String","arity":2,"parameters":["index : Integer","length : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns a new String containing the `length` characters at and after position `index` in this string."}],"doc":null},"reverse":{"kind":"METHOD","name":"reverse","full_name":"String#reverse","separator":"#","clauses":[{"head":"def reverse : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a copy of this string with the order of the characters reversed."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}},"Object":{"kind":"TYPE","name":"Object","full_name":"Object","doc":"`Object` is the base type for every object in Myst. It provides some basic, default behavior for common operations to simplify prototyping of new types and allow algorithms to assume some common ground for all objects in the program.\nWhile these implementations do ensure that all objects have _some_ default behavior, subtypes should almost always provide specializations that provide more accurate (and potentially more efficient) behavior.\n`Object` is automatically added to the ancestry of every type and module, and can also be used as a generic type restriction to explicitly show that a method may accept or return any type of object.\n**Note:** While `Type` is not part of `Object`s ancestry, it does have access to the static methods defined on `Type` (e.g., `.ancestors` and `.to_s`).","constants":{},"instance_methods":{"to_s":{"kind":"METHOD","name":"to_s","full_name":"Object#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a new String with some debug information about the object. This method should be overridden by any type that wants to serialize its contents."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"Object#==","separator":"#","clauses":[{"head":"def ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` only if `other` represents the same object as this object. Two different instances with the same content will _not_ be considered equal by this method."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"Object#!=","separator":"#","clauses":[{"head":"def !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `false` only if `other` represents the same object as this object. Two different instances with the same content will _not_ be considered equal by this method."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}},"Boolean":{"kind":"TYPE","name":"Boolean","full_name":"Boolean","doc":"A Boolean is an object representing either `true` or `false` values. The only way to create new Boolean objects is to use the boolean literals `true` and `false`.","constants":{},"instance_methods":{"to_s":{"kind":"METHOD","name":"to_s","full_name":"Boolean#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns either `\"true\"` or `\"false\"` depending on this Boolean's value."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"Boolean#==","separator":"#","clauses":[{"head":"def ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` has the same value as this Boolean (i.e., both are `true` or both are `false`). If `other` is _not_ a Boolean, this method will return `false`."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"Boolean#!=","separator":"#","clauses":[{"head":"def !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` has any value other than the value of this Boolean. Only returns `false` if `other` is a Boolean and has the same value as this Boolean."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}},"Type":{"kind":"TYPE","name":"Type","full_name":"Type","doc":"`Type` is the base type for all types in Myst. It provides default implementations for common operations on types, such as getting the type name, comparing with other types, and accessing the list of ancestors.\nType is a subtype of Object, though all of the functionality of Object is specialized by this type","constants":{},"instance_methods":{},"static_methods":{"to_s":{"kind":"METHOD","name":"to_s","full_name":"Type.to_s","separator":".","clauses":[{"head":"defstatic to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the original name given to this type as a String."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"Type.==","separator":".","clauses":[{"head":"defstatic ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` represents the same Type as this type."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"Type.!=","separator":".","clauses":[{"head":"defstatic !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `false` if `other` represents the same Type as this type."}],"doc":null},"ancestors":{"kind":"METHOD","name":"ancestors","full_name":"Type.ancestors","separator":".","clauses":[{"head":"defstatic ancestors : List","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a flat list of supertypes, included modules, and extended modules for this type. This list will _always_ contain the base `Type`, but will _not_ contain the original type itself."}],"doc":null}},"initializers":{},"submodules":{},"subtypes":{}},"TCPSocket":{"kind":"TYPE","name":"TCPSocket","full_name":"TCPSocket","doc":"A Transmission Control Protocol (TCP/IP) socket.\nThis type inherits from `IO`.","constants":{},"instance_methods":{"read":{"kind":"METHOD","name":"read","full_name":"TCPSocket#read","separator":"#","clauses":[{"head":"def read(size : Integer) : String","arity":1,"parameters":["size : Integer"],"splat_index":null,"block_parameter":null,"doc":"Reads `size` bytes from the socket and returns them as a new String."}],"doc":null},"write":{"kind":"METHOD","name":"write","full_name":"TCPSocket#write","separator":"#","clauses":[{"head":"def write(content : String) : Nil","arity":1,"parameters":["content : String"],"splat_index":null,"block_parameter":null,"doc":"Writes the bytes of `content` to the socket. The socket is not guaranteed to be flushed after this operation."}],"doc":null}},"static_methods":{},"initializers":{"initialize":{"kind":"METHOD","name":"initialize","full_name":"TCPSocket#initialize","separator":"#","clauses":[{"head":"def initialize(host : String, port : Integer) : TCPSocket","arity":2,"parameters":["host : String","port : Integer"],"splat_index":null,"block_parameter":null,"doc":"Initializes a new socket to reference the TCP server specified at `host` on the given `port`."}],"doc":null}},"submodules":{},"subtypes":{}},"Symbol":{"kind":"TYPE","name":"Symbol","full_name":"Symbol","doc":"A Symbol is a string-like, constant value that gives a name to a unique integer. Every usage of the same symbol in a program will resolve to the same backing object. Since that backing object is an integer, comparisons with Symbols are very efficient.\nBecause of this, Symbols are the default key-types for Maps, and are best used when there is a strict set of expected values (e.g. like an Enum).","constants":{},"instance_methods":{"to_s":{"kind":"METHOD","name":"to_s","full_name":"Symbol#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the name used to identify this symbol as a String."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"Symbol#==","separator":"#","clauses":[{"head":"def ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is the same Symbol as this symbol."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"Symbol#!=","separator":"#","clauses":[{"head":"def !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `false` if `other` is the same Symbol as this symbol."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}},"Functor":{"kind":"TYPE","name":"Functor","full_name":"Functor","doc":"A Functor is an object representing a group of function clauses under the same name. Every function/method in Myst is stored as a Functor.\nCalling a Functor (generally referred to as \"invoking\" the Functor), will attempt to match the given arguments with the parameters of each clause, in the order that the clauses were added to the Functor. If no match is found, a `NoMatchingClause` RuntimeError is raised.","constants":{},"instance_methods":{"to_s":{"kind":"METHOD","name":"to_s","full_name":"Functor#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a String object with the name of this functor and the number of clauses it contains. The string will have the format `&<name>/<clauses>`.\nThis method is mainly intended for debugging purposes where the name of the Functor may be useful. It is _not_ a serialization of the Functor."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}},"Float":{"kind":"TYPE","name":"Float","full_name":"Float","doc":"A Float is an object representing a 64-bit floating point number, as defined by IEEE 754.\nNew Float objects are created using float literals, which are represented as a series of one or more digits, a dot, and another series of one or more digits. Float literals may also contain underscore characters between any two digits to improve legibility.\nThe following are all valid float literals: `0.0`, `123.456`, `10_000.00_000`.\nThe following are not considered float literals: `.0`, `1.`, `1.2.3`.","constants":{},"instance_methods":{"+":{"kind":"METHOD","name":"+","full_name":"Float#+","separator":"#","clauses":[{"head":"def +(other : Integer) : Float","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the result of adding the value of `other` to this float. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError."},{"head":"def +(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"-":{"kind":"METHOD","name":"-","full_name":"Float#-","separator":"#","clauses":[{"head":"def -(other : Integer) : Float","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the result of subtracting the value of `other` from this float. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError."},{"head":"def -(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"*":{"kind":"METHOD","name":"*","full_name":"Float#*","separator":"#","clauses":[{"head":"def *(other : Integer) : Float","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the result of multiplying the value of `other` with this float. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError."},{"head":"def *(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"/":{"kind":"METHOD","name":"/","full_name":"Float#/","separator":"#","clauses":[{"head":"def /(other : Integer) : Float","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the result of dividing this float by the value of `other`. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError.\nThis method will also raise a RuntimeError if the value of `other` would cause a division by zero."},{"head":"def /(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"%":{"kind":"METHOD","name":"%","full_name":"Float#%","separator":"#","clauses":[{"head":"def %(other : Integer) : Float","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns the remainder of the result of dividing this float by the value of `other`. This method is only valid when `other` is a float or an integer. Any other type will cause this method to raise a RuntimeError.\nThis method will also raise a RuntimeError if the value of `other` would cause a division by zero."},{"head":"def %(other : Float) : Float","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"to_i":{"kind":"METHOD","name":"to_i","full_name":"Float#to_i","separator":"#","clauses":[{"head":"def to_i : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the integer portion of this float as a new Integer object by truncating the decimal portion from the value. As such, this method will always \"round down\" to the largest integer not greater than this value."}],"doc":null},"round":{"kind":"METHOD","name":"round","full_name":"Float#round","separator":"#","clauses":[{"head":"def round : Integer","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a new Integer object representing the integer that is nearest to the value of this float. This method considers `.5` decimals nearer to the upper integer."}],"doc":null},"to_s":{"kind":"METHOD","name":"to_s","full_name":"Float#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a new String object representing this float in base 10. This method does _not_ preserve underscores from float literals."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"Float#==","separator":"#","clauses":[{"head":"def ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` has the same value as this float. This method considers integer-value Float objects as equal to their Integer counterparts.\nIf `other` is not either a Float or an Integer, this method will always return `false`."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"Float#!=","separator":"#","clauses":[{"head":"def !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` has any value other than the value of this float. This method considers integer-value Float objects as equal to their Integer counterparts.\nIf `other` is not either a Float or an Integer, this method will always return `true`."}],"doc":null},"negate":{"kind":"METHOD","name":"negate","full_name":"Float#negate","separator":"#","clauses":[{"head":"def negate : Float","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns a new Float object representing the result of multiplying this float's value by `-1`."}],"doc":null},"<":{"kind":"METHOD","name":"<","full_name":"Float#<","separator":"#","clauses":[{"head":"def <(other : Integer) : Boolean","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is a Float or an Integer, and has a value that is mathematically less than this float.\nIf `other` is not a Float or an Integer, this method will raise a RuntimeError."},{"head":"def <(other : Float) : Boolean","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},"<=":{"kind":"METHOD","name":"<=","full_name":"Float#<=","separator":"#","clauses":[{"head":"def <=(other : Integer) : Boolean","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is a Float or an Integer, and has a value that is mathematically less than or equal to this float.\nIf `other` is not a Float or an Integer, this method will raise a RuntimeError."},{"head":"def <=(other : Float) : Boolean","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},">":{"kind":"METHOD","name":">","full_name":"Float#>","separator":"#","clauses":[{"head":"def >(other : Integer) : Boolean","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is a Float or an Integer, and has a value that is mathematically greater than or equal to this float.\nIf `other` is not a Float or an Integer, this method will raise a RuntimeError."},{"head":"def >(other : Float) : Boolean","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null},">=":{"kind":"METHOD","name":">=","full_name":"Float#>=","separator":"#","clauses":[{"head":"def >=(other : Integer) : Boolean","arity":1,"parameters":["other : Integer"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` if `other` is a Float or an Integer, and has a value that is mathematically greater than this float.\nIf `other` is not a Float or an Integer, this method will raise a RuntimeError."},{"head":"def >=(other : Float) : Boolean","arity":1,"parameters":["other : Float"],"splat_index":null,"block_parameter":null,"doc":null}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}},"Nil":{"kind":"TYPE","name":"Nil","full_name":"Nil","doc":"Nil is a singleton object normally used to represent that a value is not present. The Nil object can be accessed using the nil literal: `nil`.\nEven though Nil does not represent a real value, the type still implements some basic methods to make dealing with nil easier.\nUsage of `nil` is generally discouraged in favor of explicitly handling the absence of a value immediately, either by raising an error or providing a default.","constants":{},"instance_methods":{"to_s":{"kind":"METHOD","name":"to_s","full_name":"Nil#to_s","separator":"#","clauses":[{"head":"def to_s : String","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Returns the string object `\"nil\"`."}],"doc":null},"==":{"kind":"METHOD","name":"==","full_name":"Nil#==","separator":"#","clauses":[{"head":"def ==(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `false` unless `other` is also the value `nil`."}],"doc":null},"!=":{"kind":"METHOD","name":"!=","full_name":"Nil#!=","separator":"#","clauses":[{"head":"def !=(other) : Boolean","arity":1,"parameters":["other"],"splat_index":null,"block_parameter":null,"doc":"Returns `true` unless `other` is also the value `nil`."}],"doc":null}},"static_methods":{},"initializers":{},"submodules":{},"subtypes":{}}},"constants":{},"methods":{"assert":{"kind":"METHOD","name":"assert","full_name":"assert","separator":".","clauses":[{"head":"def assert(value) : Assert.Assertion","arity":1,"parameters":["value"],"splat_index":null,"block_parameter":null,"doc":"The global entrypoint to writing assertions about objects. This clause accepts any value as an argument, and returns an `Assertion` object to use for executing assertions about that object."},{"head":"def assert(&block) : Assert.BlockAssertion","arity":0,"parameters":[],"splat_index":null,"block_parameter":"block","doc":"The global entrypoint for writing assertions about blocks of code. This clause accepts a block argument containing the code to test and returns a `BlockAssertion` object to use for setting up calls and making assertions about the block of code.\nThis clause also accepts function captures of pre-defined methods:\n`assert(&Foo.might_raise!).called_with_arguments(1, 2).raises(:some_error)`"}],"doc":null},"doc":{"kind":"METHOD","name":"doc","full_name":"doc","separator":".","clauses":[{"head":"def doc(value) : String","arity":1,"parameters":["value"],"splat_index":null,"block_parameter":null,"doc":"Returns the documentation attached to the given value as a String."}],"doc":null},"exit":{"kind":"METHOD","name":"exit","full_name":"exit","separator":".","clauses":[{"head":"def exit(status : Integer) : Nil","arity":1,"parameters":["status : Integer"],"splat_index":null,"block_parameter":null,"doc":"Immediately exits the program, returning the given status code to the system."},{"head":"def exit : Nil","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Immediately exits the program with a successful status code (`0`)."}],"doc":null},"sleep":{"kind":"METHOD","name":"sleep","full_name":"sleep","separator":".","clauses":[{"head":"def sleep(time : Integer) : Nil","arity":1,"parameters":["time : Integer"],"splat_index":null,"block_parameter":null,"doc":"Causes the program to sleep for `time` seconds."},{"head":"def sleep(time : Float) : Nil","arity":1,"parameters":["time : Float"],"splat_index":null,"block_parameter":null,"doc":"Causes the program to sleep for `time` seconds."},{"head":"def sleep : Nil","arity":0,"parameters":[],"splat_index":null,"block_parameter":null,"doc":"Causes the program to sleep forever until woken up by an external source."}],"doc":null}}}