* Cleaning up public/ and documenting js/css libs. This commit mostly addresses #1484 by moving vendor'ed plugins into a vendor/ directory and documenting their upstream source and license in vendor/librejs.html. This also proves gitea is using only open source js/css libraries which helps toward reaching #1524. * Removing unused css file. The version of this file in use is located at: vendor/plugins/highlight/github.css * Cleaned up librejs.html and added javascript header A SafeJS function was added to templates/helper.go to allow keeping comments inside of javascript. A javascript comment was added in the header of templates/base/head.tmpl to mark all non-inline source as free. The librejs.html file was updated to meet the current librejs spec. I have now verified that the librejs plugin detects most of the scripts included in gitea and suspect the non-free detections are the result of a bug in the plugin. I believe this commit is enough to meet the C0.0 requirement of #1534. * Updating SafeJS function per lint suggestion * Added VERSIONS file, per request
		
			
				
	
	
		
			119 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!doctype html>
 | |
| 
 | |
| <title>CodeMirror: Crystal 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="crystal.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="#">Crystal</a>
 | |
|   </ul>
 | |
| </div>
 | |
| 
 | |
| <article>
 | |
| <h2>Crystal mode</h2>
 | |
| <form><textarea id="code" name="code">
 | |
| # Features of Crystal
 | |
| # - Ruby-inspired syntax.
 | |
| # - Statically type-checked but without having to specify the type of variables or method arguments.
 | |
| # - Be able to call C code by writing bindings to it in Crystal.
 | |
| # - Have compile-time evaluation and generation of code, to avoid boilerplate code.
 | |
| # - Compile to efficient native code.
 | |
| 
 | |
| # A very basic HTTP server
 | |
| require "http/server"
 | |
| 
 | |
| server = HTTP::Server.new(8080) do |request|
 | |
|   HTTP::Response.ok "text/plain", "Hello world, got #{request.path}!"
 | |
| end
 | |
| 
 | |
| puts "Listening on http://0.0.0.0:8080"
 | |
| server.listen
 | |
| 
 | |
| module Foo
 | |
|   def initialize(@foo); end
 | |
| 
 | |
|   abstract def abstract_method : String
 | |
| 
 | |
|   @[AlwaysInline]
 | |
|   def with_foofoo
 | |
|     with Foo.new(self) yield
 | |
|   end
 | |
| 
 | |
|   struct Foo
 | |
|     def initialize(@foo); end
 | |
| 
 | |
|     def hello_world
 | |
|       @foo.abstract_method
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 | |
| class Bar
 | |
|   include Foo
 | |
| 
 | |
|   @@foobar = 12345
 | |
| 
 | |
|   def initialize(@bar)
 | |
|     super(@bar.not_nil! + 100)
 | |
|   end
 | |
| 
 | |
|   macro alias_method(name, method)
 | |
|     def {{ name }}(*args)
 | |
|       {{ method }}(*args)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def a_method
 | |
|     "Hello, World"
 | |
|   end
 | |
| 
 | |
|   alias_method abstract_method, a_method
 | |
| 
 | |
|   macro def show_instance_vars : Nil
 | |
|     {% for var in @type.instance_vars %}
 | |
|       puts "@{{ var }} = #{ @{{ var }} }"
 | |
|     {% end %}
 | |
|     nil
 | |
|   end
 | |
| end
 | |
| 
 | |
| class Baz < Bar; end
 | |
| 
 | |
| lib LibC
 | |
|   fun c_puts = "puts"(str : Char*) : Int
 | |
| end
 | |
| 
 | |
| $baz = Baz.new(100)
 | |
| $baz.show_instance_vars
 | |
| $baz.with_foofoo do
 | |
|   LibC.c_puts hello_world
 | |
| end
 | |
| </textarea></form>
 | |
| <script>
 | |
|   var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
 | |
|     mode: "text/x-crystal",
 | |
|     matchBrackets: true,
 | |
|     indentUnit: 2
 | |
|   });
 | |
| </script>
 | |
| 
 | |
| <p><strong>MIME types defined:</strong> <code>text/x-crystal</code>.</p>
 | |
| </article>
 |