summaryrefslogtreecommitdiff
path: root/public/vendor/codemirror/mode/ruby/index.html
diff options
context:
space:
mode:
authorWu Cheng-Han2015-05-04 15:53:29 +0800
committerWu Cheng-Han2015-05-04 15:53:29 +0800
commit4b0ca55eb79e963523eb6c8197825e9e8ae904e2 (patch)
tree574f3923af77b37b41dbf1b00bcd7827ef724a28 /public/vendor/codemirror/mode/ruby/index.html
parent61eb11d23c65c9e5c493c67d055f785cbec139e2 (diff)
First commit, version 0.2.7
Diffstat (limited to 'public/vendor/codemirror/mode/ruby/index.html')
-rwxr-xr-xpublic/vendor/codemirror/mode/ruby/index.html183
1 files changed, 183 insertions, 0 deletions
diff --git a/public/vendor/codemirror/mode/ruby/index.html b/public/vendor/codemirror/mode/ruby/index.html
new file mode 100755
index 00000000..97544bab
--- /dev/null
+++ b/public/vendor/codemirror/mode/ruby/index.html
@@ -0,0 +1,183 @@
+<!doctype html>
+
+<title>CodeMirror: Ruby mode</title>
+<meta charset="utf-8"/>
+<link rel=stylesheet href="../../doc/docs.css">
+
+<link rel="stylesheet" href="../../lib/codemirror.css">
+<script src="../../lib/codemirror.js"></script>
+<script src="../../addon/edit/matchbrackets.js"></script>
+<script src="ruby.js"></script>
+<style>
+ .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
+ .cm-s-default span.cm-arrow { color: red; }
+ </style>
+<div id=nav>
+ <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
+
+ <ul>
+ <li><a href="../../index.html">Home</a>
+ <li><a href="../../doc/manual.html">Manual</a>
+ <li><a href="https://github.com/codemirror/codemirror">Code</a>
+ </ul>
+ <ul>
+ <li><a href="../index.html">Language modes</a>
+ <li><a class=active href="#">Ruby</a>
+ </ul>
+</div>
+
+<article>
+<h2>Ruby mode</h2>
+<form><textarea id="code" name="code">
+# 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] < 0 then "-" else "" end) + term_to_str(*p[0])
+
+ # Convert the rest of the terms, in each case adding the appropriate
+ # + or - separating them.
+ for term in p[1...p.length]
+ # Add the separator then the rep. of the term.
+ result += (if term[0] < 0 then " - " else " + " end) +
+ term_to_str(*term)
+ end
+
+ return result
+end
+
+#
+# Run until some kind of endfile.
+begin
+ # Repeat until an exception or quit gets us out.
+ while true
+ # Read a poly until it works. An EOF will except out of the
+ # program.
+ print "\n"
+ begin
+ poly = readints("Enter a polynomial coefficients: ")
+ rescue TypeError
+ print "Try again.\n"
+ retry
+ end
+ break if poly.empty?
+
+ # Read and evaluate x values until the user types a blank line.
+ # Again, an EOF will except out of the pgm.
+ while true
+ # Request an integer.
+ print "Enter x value or blank line: "
+ x = readline.chomp
+ break if x == ''
+ raise EOFError.new if x == 'quit'
+
+ # If it looks bad, let's try again.
+ if x !~ /^\-?\d+$/
+ print "That doesn't look like an integer. Please try again.\n"
+ next
+ end
+
+ # Convert to an integer and print the result.
+ x = x.to_i
+ print "p(x) = ", polystr(poly), "\n"
+ print "p(", x, ") = ", polyval(x, poly), "\n"
+ end
+ end
+rescue EOFError
+ print "\n=== EOF ===\n"
+rescue Interrupt, SignalException
+ print "\n=== Interrupted ===\n"
+else
+ print "--- Bye ---\n"
+end
+</textarea></form>
+ <script>
+ var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
+ mode: "text/x-ruby",
+ matchBrackets: true,
+ indentUnit: 4
+ });
+ </script>
+
+ <p><strong>MIME types defined:</strong> <code>text/x-ruby</code>.</p>
+
+ <p>Development of the CodeMirror Ruby mode was kindly sponsored
+ by <a href="http://ubalo.com/">Ubalo</a>.</p>
+
+ </article>