论坛发代码时可以指定语言了

  1. 去年

    京斯

    1楼 2017年12月17日 管理员
    上周京斯 重新编辑
    [code=语言名称]
    ...
    [/code]

    目前理论上支持的语言有:

    "actionscript", "ada", "apache", "autohotkey", "bash", "basic", "clojure", "coffeescript", "coq", "cpp", "csharp", "css", "dart", "delphi", "django", "elixir", "erlang", "fortran", "go", "haskell", "html", "http", "ini", "java", "javascript", "json", "julia", "kotlin", "less", "lisp", "lua", "mathematica", "matlab", "nginx", "objectivec", "ocaml", "perl", "php", "postgresql", "powershell", "python", "r", "ruby", "rust", "scala", "scheme", "smalltalk", "sql", "swift", "tex", "typescript", "vbnet", "vbscript", "verilog", "xml"

    为代码块指定语言本身没有特殊显示效果,但可以配合论坛的代码高亮插件,得到更准确的渲染结果。论坛使用 highlight.js 实现代码高亮功能,不排除其本身存在 bug ,故不能保证每种语言的渲染结果都完全正确。

    语言名称填 nohighlight plaintext 的时候将不进行高亮,另外行内代码不支持高亮。指定不支持的语言不会报错,但不会有任何效果,和不填一样。不填时能够自动识别语言。自动识别不一定准确,否则就不需要这个功能了。

    (二周前写出的功能,现在才发公告,请原谅我


    2019-01-06 重要更新:

    现在论坛新支持以下几种语言:

    "accesslog", "asciidoc", "diff", "markdown", "yaml"

    可以看出,这些并不属于编程语言,而是标记语言、日志文件等。以往试着支持它们时,容易造成自动识别出错。利用新版本的接口,能方便地将其排除在自动识别之外,因此,论坛虽然现在支持这几种语言,但要手动指定才有效。

  2. 京斯

    2楼 2017年12月17日 管理员
    5周前京斯 重新编辑

    一些示例,来自 https://highlightjs.org/static/demo/

    @requires_authorization
    def somefunc(param1='', param2=0):
        r'''A docstring'''
        if param1 > param2: # interesting
            print 'Gre\'ater'
        return (param2 - param1 + 1 + 0b10l) or None
    
    class SomeClass:
        pass
    
    >>> message = '''interpreter
    ... prompt'''
    function $initHighlight(block, cls) {
      try {
        if (cls.search(/\bno\-highlight\b/) != -1)
          return process(block, true, 0x0F) +
                 ` class="${cls}"`;
      } catch (e) {
        /* handle exception */
      }
      for (var i = 0 / 2; i < classes.length; i++) {
        if (checkCondition(classes[i]) === undefined)
          console.log('undefined');
      }
    }
    # hello world
    
    you can write text [with links](http://example.com) inline or [link references][1].
    
    * one _thing_ has *em*phasis
    * two __things__ are **bold**
    
    [1]: http://example.com
    
    ---
    
    hello world
    ===========
    
    <this_is inline="xml"></this_is>
    
    > markdown is so cool
    
        so are code segments
    
    1. one thing (yeah!)
    2. two thing `i can write code`, and `more` wipee!
  3. 天马行空

    3楼 2017年12月17日 数学版主

    没有brainfuck差评 /asnowwolf-amuse

  4. @天马行空 没有brainfuck差评 /asnowwolf-amuse

    BrainF***还需要高亮?

  5. 去年Sakura 重新编辑
    #include <iostream>
    using namespace std;
    class A {
    private:
    	int * a;
    public:
    	A(int aa = 0) {
    		a = new int(aa);
    		cout << "Co" << *a << endl;
    	}
    	int GetValue() { return *a; }
    };
    //注释
    /*************
    注释
    *************/
    int main() {
    	A x[2];
    	A *p = new A(5);
    	int a = p -> GetValue() * 3;
    	cout << a << endl;
    	delete p;
    	return 0;
    }
  6. 去年Sakura 重新编辑

    测试下指定错误的语言会怎么样,下面语言是rust,指定为cpp

    #[derive(Debug)]
    pub enum State {
        Start,
        Transient,
        Closed,
    }
    
    impl From<&'a str> for State {
        fn from(s: &'a str) -> Self {
            match s {
                "start" => State::Start,
                "closed" => State::Closed,
                _ => unreachable!(),
            }
        }
    }

    不指定

    #[derive(Debug)]
    pub enum State {
        Start,
        Transient,
        Closed,
    }
    
    impl From<&'a str> for State {
        fn from(s: &'a str) -> Self {
            match s {
                "start" => State::Start,
                "closed" => State::Closed,
                _ => unreachable!(),
            }
        }
    }
  7. zhonglingshan1

    7楼 2017年12月20日 化学版主, 技术版主
    去年zhonglingshan1 重新编辑
    async function() {
        let r = await fetch("index.php?action=get_post");
        let j = await r.json();
        alert(j.data);
    }
    https://www.baidu.com/?action="123"
    var a, i: longint;
    b: array [1..100] of longint;
    begin
        read(a);
        for i := 1 to 100 do begin
            b[i] := i*i;
        end;
        writeln(b[100]);
    end.
  8. 去年Andy_Henry 重新编辑
    # code=r
    local({
        info <- loadingNamespaceInfo()
        pkg <- info$pkgname
        ns <- .getNamespace(as.name(pkg))
        if (is.null(ns))
            stop("cannot find namespace environment for ", pkg, domain = NA);
        dbbase <- file.path(info$libname, pkg, "R", pkg)
        lazyLoad(dbbase, ns, filter = function(n) n != ".__NAMESPACE__.")
    })
  9. 5周前

    京斯

    9楼 1月6日 管理员

    有重要更新,顶上来

  10. 上周

    京斯

    10楼 2月3日 管理员
    BEGIN;
    SELECT sum(salary) OVER w, avg(salary) OVER w
      FROM empsalary
      WINDOW w AS (PARTITION BY depname ORDER BY salary DESC);
    END;
    
    CREATE FUNCTION days_of_week() RETURNS SETOF text AS $$
    BEGIN
      FOR i IN 7 .. 13 LOOP
        RETURN NEXT to_char(to_date(i::text,'J'),'TMDy');
      END LOOP;
    END;
    $$ STABLE LANGUAGE plpgsql;
 

后才能发言