Seite 1 von 2

Syntax-Highlighting

Verfasst: Sonntag 24. Juni 2018, 12:47
von __blackjack__
Selbst wenn man den [ Python ]-Button verwendet, rät Highlight.js — und das oft falsch. Kann man das Plugin so ändern, dass es wenigstens beim Python-Button fest Python highlightet? Und wie schwer wäre es bei [ code ] ein [ code = irgendwas ] zu erlauben und das `irgendwas` dann einfach als `class` auf dem <code>-Tag im HTML setzen zu lassen? Denn das sollte highlight.js dann dem Raten bevorzugen. Welches phpBB-Plugin wird denn verwendet?

Und für meinen Geschmack kann das eingesetzte highlight.js zu wenige Sprachen. Eigentlich kann es ja laut Webseite 176 Programmier- und Auszeichnungssprachen, das hier im Forum eingesetzte kann aber nur 23 (apache, bash, coffeescript, cpp, cs, css, diff, http, ini, java, javascript, json, makefile, xml, markdown, nginx, objectivec, perl, php, python, ruby, shell, sql). Also für meinen Geschmack kann es da ja gar nicht genug Auswahl geben (kein Basic, Pascal (Delphi), und kein x86-Assembler‽ :-)), aber wirklich fehlen tun hier zum Beispiel Django-Templates, Hy, QML, und YAML.

Re: Syntax-Highlighting

Verfasst: Sonntag 24. Juni 2018, 13:17
von sls
Ich erdreiste mich diesen Thread für die Frage zu nutzen, ob man einen Mechanismus implementieren kann der erkennt wann Leute Python Source-Code in einen Beitrag pasten und diese dann zwingt ihn mit entsprechenden Code-Tags zu formatieren. (Ähnlich wie bei Stackoverflow)

Das ist ja eine der Sachen die wirklich am konsequentesten ignoriert wird.

Re: Syntax-Highlighting

Verfasst: Sonntag 24. Juni 2018, 13:55
von __blackjack__
@sls: Ich schätze ”man” kann, es müsste nur jemanden geben der ein entsprechendes Plugin für phpBB schreibt, oder es zumindest sucht und findet, falls es so etwas schon geben sollte.

Re: Syntax-Highlighting

Verfasst: Sonntag 24. Juni 2018, 14:51
von sls
Stackoverflow scheint Code-prettify (https://github.com/google/code-prettify) zu verwenden. Evtl. ist das eine Option, falls man das mit highlight.js nicht umsetzen kann.

Re: Syntax-Highlighting

Verfasst: Sonntag 24. Juni 2018, 14:52
von ThomasL
sls hat geschrieben: Sonntag 24. Juni 2018, 13:17 Das ist ja eine der Sachen die wirklich am konsequentesten ignoriert wird.
Ist mir seitdem ich hier bin auch aufgefallen. Nachvollziehen kann ich es nicht.
Vielleicht sollten alle "Helper" da mal strikt sein, der erste der antwortet gibt eine Info bzgl [ code][ /code] oder [ Python][ /Python]
und das erst danach geholfen werden kann.
Alle anderen halten sich solange zurück, bis korrekt gepostet wurde.

Re: Syntax-Highlighting

Verfasst: Sonntag 24. Juni 2018, 15:14
von __blackjack__
@sls: highlight.js unterstützt mehr Sprachen und das Problem ist ja auch nicht das highlighten sondern das raten welche Sprache es ist. Das funktioniert bei SO auch nicht so viel besser, nur das dort wohl Tags eine Rolle spielen, das heisst wenn ich den Beitrag bei SO als Python tagge, wird Python mit höherer Wahrscheinlichkeit erkannt. Und wenn es gar nicht klappt kann man auch explizit die Sprache angeben. Letzteres fehlt hier. Und das ist kein highlight.js-Problem, sondern dass das phpBB-Pluging, das hier zum Einsatz kommt, das nicht vorsieht.

Ich fände es halt schön wenn [ Python ] auch tatsächlich nur Python wäre, [ code ] am besten gar nicht highlighted oder rät und es die Möglichkeit für [ code=sprache ] gäbe um die Sprache explizit anzugeben. Und dann wären mehr Sprachen als die 23 genannten nett. Das wäre mir aber letzlich nicht so wichtig wie die Möglichkeit Python-Code auch wirklich als Python-Code setzen zu können und nicht hoffen zu müssen das er als Perl oder C# geraten wird, weil das blöd aussieht wenn beispielsweise aus der Ganzzahldivision mit ``//`` plötzlich ein Kommentar wird.

Re: Syntax-Highlighting

Verfasst: Sonntag 24. Juni 2018, 15:32
von sls
@__black__: ja, das Highlighten ist nicht optimal. Ich bin auch kein Fan davon darauf zu vertrauen dass die Sprache richtig erkannt wird, gar kein Highlightning finde ich jedoch noch viel schlimmer. Wenn ich Damaskus wäre, wäre ich Damaskus, und dann würde ich vielleicht schauen ob man das implementieren kann dass der Nutzer seinen Source-Code in Code-Tags setzen *muss*, das Auswählen der richtigen Sprache sollten die Benutzer dann gerade noch so schaffen.

Re: Syntax-Highlighting

Verfasst: Dienstag 26. Juni 2018, 19:26
von Damaskus
Ja, der Highlighter ist nicht optimal.
Solange aber keiner mir eine fertige und erprobte Extension liefert, muss ich verwenden was es auf dem Markt gibt, bzw sobald ich etwas freie Zeit habe mich darum kümmern.

code-prettify ist durchaus auch einen Versuch Wert!
Kann ich bei Gelegenheit auch mal testen.
Allerdings wird es die nächsten Woche eher nichts.

Re: Syntax-Highlighting

Verfasst: Dienstag 26. Juni 2018, 19:40
von __blackjack__
@Damaskus: Jetzt hast Du immer noch nicht verraten *was* denn verwendet wird. :-) Also welches phpBB-Plugin das highlight.js verwendet. Man kann highlight.js ja durchaus sagen welche Sprache es ist, damit es nicht raten muss.

Re: Syntax-Highlighting

Verfasst: Mittwoch 27. Juni 2018, 14:53
von Damaskus
Achso, sry!
Ich hab die Frage bzw. die Aufgabe komplett überlesen.

Es wird gar kein Plugin mehr verwendet, sonder highlight.js ist manuell eingebaut.
Meine ich...

Ich schaue Morgen in die Doku vom Forum rein, dann kann ich es genau sagen.
Per Default sollte auch Python als Syntax angegeben werden. Aber so aus dem Kopf heraus kann ich es echt nicht sicher sagen.

Re: Syntax-Highlighting

Verfasst: Samstag 7. Juli 2018, 14:46
von __blackjack__
Ping. :-)

Re: Syntax-Highlighting

Verfasst: Montag 9. Juli 2018, 07:14
von Damaskus
Ja ok, vergessen... Schande über mein Haupt!

Re: Syntax-Highlighting

Verfasst: Montag 9. Juli 2018, 15:10
von sls
@Damaskus: brauchst / willst du eigentlich Unterstützung? Ich hätte keinen Stress damit o.g. Plugins zu testen.

Re: Syntax-Highlighting

Verfasst: Donnerstag 26. Juli 2018, 07:44
von __blackjack__
Und aus aktuellem Anlass mal wieder ein Ping. :-) Der Anlass ist dieser Python-Code der in [ Python ]-Tags steht, aber als SQL gehighlighted wird, was ihn im Grunde fast unlesbar macht. Da wäre sogar *kein* Highlighting besser.

Code: Alles auswählen

def change_case(word):
    """Change case to lower if it is a short word (≤5) or upper if it
    is a long word (≥7).  Otherwise return word unchanged.

    >>> change_case('SPAM')
    'spam'
    >>> change_case('Mississippi')
    'MISSISSIPPI'
    >>> 'Python'
    'Python'
    """
    if len(word) <= 5:
        word = word.lower()
    elif len(word) >= 7:
        word = word.upper()
    return word


def mix_words(words):
    """Return the words in the given iterable shuffled in a
    deterministically way.
    
    >>> words = ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff']
    >>> mix_words(words)
    ['bbb', 'aaa', 'fff']

    In contrast to the specification the given words can be any iterable
    and if it is a sequence it is not changed by this implementation.
    
    >>> words  # Not changed!
    ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff']

    .. warning::
        
        The algorithm from the specification drops up to five words
        from the input.  Especially when there are less than six words,
        all the input is dropped.  That is a bug in the specification,
        not in the implementation!

        Technically there is even one word too many dropped if the goal
        was to avoid an :exc:`IndexError` in the shuffle algorithm.
        Also per specification.
    
    >>> [(i, mix_words(words[:i])) for i in range(1, len(words) + 1)]
    [(1, []), (2, []), (3, []), (4, []), (5, []), (6, ['bbb', 'aaa', 'fff'])]
    
    The order of the given words doesn't matter at all.
    
    >>> import random
    >>> random.shuffle(words)
    >>> mix_words(words)
    ['bbb', 'aaa', 'fff']
    
    .. todo::
    
        An improvement would be to extend the result by the remaining,
        currently dropped words.
    """
    words = sorted(words)
    indices = [-5, 0, -1]
    # 
    # Determine minimum length of `words` so that indexing is still
    # guaranteed to work.
    # 
    min_length = max((-index if index < 0 else index + 1) for index in indices)

    result = list()
    # 
    # Could be ``>=`` to drop less words but specification says otherwise.
    # 
    while len(words) > min_length:  
        result.extend(words.pop(index) for index in indices)
    return result


def main():
    words = map(change_case, input('Enter a saying or poem: ').split())
    print(' '.join(mix_words(words)))


if __name__ == '__main__':
    main()

Re: Syntax-Highlighting

Verfasst: Dienstag 31. Juli 2018, 14:55
von Damaskus
Highlighting sollte gefixt sein, bitte testen!

Re: Syntax-Highlighting

Verfasst: Dienstag 31. Juli 2018, 15:01
von Sirius3
Über die Farben läßt sich ja streiten, aber __blackjacks__ Beispiel sieht jetzt lesbar aus. Vielen Dank!

Re: Syntax-Highlighting

Verfasst: Samstag 15. September 2018, 11:02
von jens
Hm. Also python code Highlighting geht nicht. Ist immer alles grün. Oder mach ich was falsch?

Wie ist denn jetzt die Syntax?

Code: Alles auswählen

[code=python]
oder

Code: Alles auswählen

[python]
?!?

Es wäre auch gut, wenn es ein direkten Button dafür gibt ;) Oder zumindest einen Hinweis Text unter den Buttons ;)

Re: Syntax-Highlighting

Verfasst: Samstag 15. September 2018, 11:36
von __blackjack__
@jens: Blockst Du oder Dein Browser eventuell *.cloudflare.com? Die Syntax ist [ code ] oder [ code=sprache ].

Wenn man im Browser in der JavaScript-Console folgendes eingibt:

Code: Alles auswählen

hljs.listLanguages().forEach(x => console.log(x))
Wird momentan diese Liste ausgespuckt:
  • apache
  • bash
  • coffeescript
  • cpp
  • cs
  • css
  • diff
  • http
  • ini
  • java
  • javascript
  • json
  • makefile
  • xml
  • markdown
  • nginx
  • objectivec
  • perl
  • php
  • python
  • ruby
  • shell
  • sqlapache
  • bash
  • coffeescript
  • cpp
  • cs
  • css
  • diff
  • http
  • ini
  • java
  • javascript
  • json
  • makefile
  • xml
  • markdown
  • nginx
  • objectivec
  • perl
  • php
  • python
  • ruby
  • shell
  • sql

Re: Syntax-Highlighting

Verfasst: Sonntag 16. September 2018, 17:32
von ThomasL
__blackjack__ hat geschrieben: Samstag 15. September 2018, 11:36 @jens: Blockst Du oder Dein Browser eventuell *.cloudflare.com? Die Syntax ist [ code ] oder [ code=sprache ].
Ich bin zwar nicht Jens aber Danke für diesen Hinweis, mein Umatrix hat das doch tatsächlich "ungewünscht" so gemacht. Gefixt.

Re: Syntax-Highlighting

Verfasst: Freitag 21. September 2018, 08:40
von Damaskus
Warum wird das schon wieder von Cloudflare ausgeliefert....?!
Ich hab das doch extra lokal abgelegt, damit es nicht via cdn von irgendwo ausgeliefert wird.
Werde ich an einem der nächsten Wochenende fixen.