CMIContent Marketing InstituteContent directory

News · General · Archive

CodeMirror: Ruby mode

Conversion Home News

.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;} .cm-s-default span.cm-arrow { color: red; }

CodeMirror

Home Manual Code

Language modes Ruby

Ruby mode

# Code from http://sandbox.mc.edu/~bennet/ruby/code/poly_rb.html # # This program evaluates polynomials. It first asks for the coefficients # of a polynomial, which must be entered on one line, highest-order first. # It then requests values of x and will compute the value of the poly for # each x. It will repeatly ask for x values, unless you the user enters # a blank line. It that case, it will ask for another polynomial. If the # user types quit for either input, the program immediately exits. #

# # Function to evaluate a polynomial at x. The polynomial is given # as a list of coefficients, from the greatest to the least. def polyval(x, coef) sum = 0 coef = coef.clone # Don't want to destroy the original while true sum += coef.shift # Add and remove the next coef break if coef.empty? # If no more, done entirely. sum *= x # This happens the right number of times. end return sum end

# # Function to read a line containing a list of integers and return # them as an array of integers. If the string conversion fails, it # throws TypeError. If the input line is the word 'quit', then it # converts it to an end-of-file exception def readints(prompt) # Read a line print prompt line = readline.chomp raise EOFError.new if line == 'quit' # You can also use a real EOF.

# Go through each item on the line, converting each one and adding it # to retval. retval = [ ] for str in line.split(/\s+/) if str =~ /^\-?\d+$/ retval.push(str.to_i) else raise TypeError.new end end

return retval end

# # Take a coeff and an exponent and return the string representation, ignoring # the sign of the coefficient. def term_to_str(coef, exp) ret = ""

# Show coeff, unless it's 1 or at the right coef = coef.abs ret = coef.to_s unless coef == 1 && exp > 0 ret += "x" if exp > 0 # x if exponent not 0 ret += "^" + exp.to_s if exp > 1 # ^exponent, if > 1.

return ret end

# # Create a string of the polynomial in sort-of-readable form. def polystr(p) # Get the exponent of first coefficient, plus 1. exp = p.length

# Assign exponents to each term, making pairs of coeff and exponent, # Then get rid of the zero terms. p = (p.map { |c| exp -= 1; [ c, exp ] }).select { |p| p[0] != 0 }

# If there's nothing left, it's a zero return "0" if p.empty?

# *** Now p is a non-empty list of [ coef, exponent ] pairs. ***

# Convert the first term, preceded by a "-" if it's negative. result = (if p[0][0]

var editor = CodeMirror.fromTextArea(document.getElementById("code"), { mode: "text/x-ruby", matchBrackets: true, indentUnit: 4 });

MIME types defined: text/x-ruby .

Development of the CodeMirror Ruby mode was kindly sponsored by Ubalo .

More in Archive · More in General · More in News