玛氪宕·梦魔(Markdown Memo),使用Markdown的云端备忘录,百度IFE的RIA启航班的不合格的作业,才……才没有什么阴谋呢!
源gitee链接https://gitee.com/arathi/MarkdownMemo?_from=gitee_search
				
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							183 lines
						
					
					
						
							5.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							183 lines
						
					
					
						
							5.6 KiB
						
					
					
				
								<!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>
							 |