עזרה:קוד מקור

מתוך המכלול, האנציקלופדיה היהודית
קפיצה אל: ניווט, חיפוש
עריכת ערכים

דף זה מסביר כיצד ניתן לעצב ולהציג קוד מקור של תוכנה.

תג syntaxhighlight (או source)

השימוש בתגי syntaxhighlight נוח במיוחד בעת הצגת קוד מקור בשפות מחשב שונות. להלן אופן השימוש:

<syntaxhighlight lang="text">

טקסט

</syntaxhighlight>

כאשר את המילה "טקסט" ניתן להחליף בזיהוי השפה. לדוגמה:

קוד ויקי תוצאה
<syntaxhighlight lang="csharp">
// Hello World program in Microsoft C#

using System;
class HelloWorld
{
    public static int Main(String[] args)
    {
        Console.WriteLine("Hello, World!");
        return 0;
    }
}
</syntaxhighlight>
// Hello World program in Microsoft C#

using System;
class HelloWorld
{
    public static int Main(String[] args)
    {
        Console.WriteLine("Hello, World!");
        return 0;
    }
}


רשימת השפות הנתמכות
6502acme, 6502kickass, 6502tasm, 68000devpac, abap, abl, abnf, aconf, actionscript, actionscript3, ada, ada2005, ada95, adl, agda, ahk, alloy, ambienttalk, ambienttalk/2, antlr, antlr-actionscript, antlr-as, antlr-c#, antlr-cpp, antlr-csharp, antlr-java, antlr-objc, antlr-perl, antlr-python, antlr-rb, antlr-ruby, apache, apacheconf, apl, applescript, arduino, arexx, arm, as, as3, asm, asp, aspectj, aspx-cs, aspx-vb, asy, asymptote, at, autohotkey, autoit, awk, b3d, bascomavr, basemake, bash, basic, basic4gl, bat, batch, bbcode, bc, befunge, bf, bibtex, blitzbasic, blitzmax, bmax, bnf, bnf, boo, boogie, bplus, brainfuck, bro, bsdmake, bugs, c, c#, c_loadrunner, c_mac, c_winapi, c++, c++-objdumb, ca65, cadl, cadlisp, camkes, cbmbas, ceylon, cf3, cfc, cfengine3, cfg, cfm, cfs, chai, chaiscript, chapel, cheetah, chpl, cirru, cl, clay, clipper, clj, cljs, clojure, clojurescript, cmake, c-objdump, cobol, cobolfree, coffee, coffeescript, coffee-script, common-lisp, componentpascal, console, control, coq, cp, cpp, cpp-objdump, cpp-qt, cpp-winapi, cpsa, crmsh, croc, cry, cryptol, csh, csharp, csound, csound-csd, csound-document, csound-orc, csound-sco, csound-score, css, css+django, css+erb, css+genshi, css+genshitext, css+jinja, css+lasso, css+mako, css+mako, css+mozpreproc, css+myghty, css+php, css+ruby, css+smarty, cu, cucumber, cuda, cxx-objdump, cypher, cython, d, dart, dcl, dcpu16, debcontrol, debsources, delphi, dg, diff, django, d-objdump, docker, dockerfile, dos, dosbatch, doscon, dosini, dpatch, dtd, duby, duel, dylan, dylan-console, dylan-lid, dylan-repl, earl-grey, earlgrey, easytrieve, ebnf, ec, ecl, ecmascript, eg, eiffel, elisp, elixir, elm, emacs, emacs-lisp, erb, erl, erlang, evoque, ex, exs, ezhil, factor, fan, fancy, felix, fish, fishshell, flx, fortran, fortranfixed, foxpro, freebasic, fsharp, fy, gambas, gap, gas, gawk, genshi, genshitext, gettext, gherkin, glsl, gnuplot, go, golo, gooddata-cl, gosu, groff, groovy, gst, gwbasic, haml, handlebars, haskell, haxe, haxeml, hexdump, hs, html, html+cheetah, html+django, html+erb, html+evoque, html+genshi, html+handlebars, html+jinja, html+kid, html+lasso, html+mako, html+mako, html+myghty, html+php, html+ruby, html+smarty, html+spitfire, html+twig, html+velocity, html4strict, html5, htmlcheetah, htmldjango, http, hx, hxml, hxsl, hy, hybris, hylang, i6, i6t, i7, idl, idl4, idr, idris, iex, igor, igorpro, ik, inform6, inform7, ini, io, ioke, ipython, ipython2, ipython3, ipythonconsole, irb, irc, isabelle, j, j, jade, jags, jasmin, jasminxt, java, java5, javascript, javascript+cheetah, javascript+django, javascript+erb, javascript+genshi, javascript+genshitext, javascript+jinja, javascript+lasso, javascript+mako, javascript+mako, javascript+mozpreproc, javascript+myghty, javascript+php, javascript+ruby, javascript+smarty, javascript+spitfire, jbst, jcl, jinja, jl, jlcon, jproperties, jquery, js, js+cheetah, js+django, js+erb, js+genshi, js+genshitext, js+jinja, js+lasso, js+mako, js+mako, js+myghty, js+php, js+ruby, js+smarty, js+spitfire, json, jsonld, json-ld, jsonml+bst, jsp, julia, kal, kconfig, kernel-config, kid, koka, kotlin, ksh, lagda, lasso, lassoscript, latex, lcry, lcryptol, lean, less, lhaskell, lhs, lid, lidr, lidris, lighttpd, lighty, limbo, linux-config, liquid, lisp, literate-agda, literate-cryptol, literate-haskell, literate-idris, livescript, live-script, llvm, locobasic, logos, logtalk, lsl, lua, m2, m68k, make, makefile, mako, mako, man, mapbasic, maql, mask, mason, mathematica, matlab, matlabsession, mawk, menuconfig, mf, minid, mma, mmix, modelica, modula2, modula3, moin, monkey, moo, moocode, moon, moonscript, mozhashpreproc, mozpercentpreproc, mpasm, mq4, mq5, mql, mql4, mql5, msc, mscgen, mupad, mxml, myghty, mysql, nasm, nawk, nb, nemerle, nesc, netrexx, newlisp, newspeak, nginx, nim, nimrod, nit, nix, nixos, nroff, nsh, nsi, nsis, numpy, oberon2, objc, obj-c, objc++, obj-c++, objdump, objdump-nasm, objectivec, objective-c, objectivec++, objective-c++, objectivej, objective-j, objectpascal, objj, obj-j, ocaml, ocaml-brief, octave, odin, oobas, ooc, oorexx, opa, openbugs, openedge, oracle11, oracle8, pacmanconf, pan, parasail, pas, pascal, pawn, pcmk, perl, perl6, php, php3, php4, php5, php-brief, pic16, pig, pike, pkgconfig, pl, pl6, plpgsql, plsql, po, posh, postgres, postgres-console, postgresql, postgresql-console, postscr, postscript, pot, pov, povray, powershell, praat, progress, prolog, properties, proto, protobuf, ps1, ps1con, psm1, psql, puppet, purebasic, py, py3, py3tb, pycon, pypy, pypylog, pyrex, pys60, pytb, python, python3, pyx, qbasic, qbs, qml, qvt, qvto, r, racket, ragel, ragel-c, ragel-cpp, ragel-d, ragel-em, ragel-java, ragel-objc, ragel-rb, ragel-ruby, rails, raw, rb, rbcon, rconsole, rd, rebol, red, red/system, redcode, reg, registry, resource, resourcebundle, rest, restructuredtext, rexx, rhtml, rkt, roboconf-graph, roboconf-instances, robotframework, rout, rpmspec, rql, rsl, rsplus, rst, rts, ruby, rust, s, sage, salt, sass, sc, scala, scaml, scheme, scilab, scm, scss, sdlbasic, sh, shell, shell-session, shen, slim, sls, smali, smalltalk, smarty, sml, snobol, sources.list, sourceslist, sp, sparql, spec, spitfire, splus, sql, sqlite3, squeak, squid, squid.conf, squidconf, ssp, st, stan, standardml, supercollider, sv, swift, swig, systemverilog, tads3, tap, tcl, tcsh, tcshcon, tea, termcap, terminfo, terraform, tex, text, tf, thinbasic, thrift, todotxt, trac-wiki, trafficscript, treetop, ts, tsql, turtle, twig, typescript, udiff, upc, urbi, urbiscript, v, vala, vapi, vb, vb.net, vbnet, vctreestatus, velocity, verilog, vfp, vgl, vhdl, vim, visualfoxpro, visualprolog, winbatch, winbugs, x10, xbase, xbasic, xml, xml+cheetah, xml+django, xml+erb, xml+evoque, xml+genshi, xml+jinja, xml+kid, xml+lasso, xml+mako, xml+mako, xml+myghty, xml+php, xml+ruby, xml+smarty, xml+spitfire, xml+velocity, xpp, xq, xql, xqm, xquery, xqy, xslt, xten, xtend, xul+mozpreproc, yaml, yaml+jinja, z80, zephir, zxbasic

הערות

  • במידה ונעשה שימוש בשפה לא קיימת או פרמטר lang חסר, הדף ישויך אוטומטית לקטגוריה:דפים עם שגיאות בצביעת קוד.
  • התג <syntaxhighlight> נכנס לשימוש לאחרונה. עד כה היה שימוש זהה בתג <source>, אך הוא עובר מן העולם מכיוון שניתן להתבלבל בקלות בין </source> של צביעת קוד, לתג זהה בתוך הקוד, למשל בשפת html.
  • ניתן להוסיף צביעה באמצעות כפתור עיצוב קוד.
  • שפת הוויקי לא נתמכת. אם הטקסט כולל תגים (למשל, <div>), ניתן להשתמש בשפת html, אחרת מומלץ להשתמש בשפת text.

עיצוב תגי syntaxhighlight

בנוסף לפרמטר lang שבו נעשה שימוש לעיל, לתגי syntaxhighlight מספר פרמטרים נוספים:

  • פרמטר line: הוספת הפרמטר (בלי ערך) מוסיפה מספרי שורות לכל שורה. למשל,
קוד ויקי תוצאה
<syntaxhighlight lang="csharp" line>
using system;
namespace HelloWordExample
{
class HelloWorld
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}
}
</syntaxhighlight>
 1 using system;
 2 namespace HelloWordExample
 3 {
 4 class HelloWorld
 5 {
 6     static void Main(string[] args)
 7     {
 8         Console.WriteLine("Hello, World!");
 9     }
10 }
11 }
  • פרמטר start: בעת השימוש בפרמטר line לעיל, ניתן להשתמש גם בפרמטר start לציון מספר השורה הראשונה. למשל, ניתן להתחיל את המספור בספרה 6, והשורות הבאות יהיו 7, 8 וכולי.
  • פרמטר highlight: הדגשת שורה אחת מתוך כלל הקוד. למשל, העברת הספרה "4" בפרמטר זה תוסיף הדגשה כתומה לשורה הרביעית (בלי קשר למספר שנקבע בפרמטר start).
קוד ויקי תוצאה
<syntaxhighlight lang="csharp" line start=33 highlight="1,4,8">
using system;
namespace HelloWordExample
{
class HelloWorld
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}
}
</syntaxhighlight>
33 using system;
34 namespace HelloWordExample
35 {
36 class HelloWorld
37 {
38     static void Main(string[] args)
39     {
40         Console.WriteLine("Hello, World!");
41     }
42 }
43 }
  • פרמטר inline מאפשר שילוב הקוד בתוך הטקסט. למשל, הקוד <syntaxhighlight lang=java inline>return a.b[35] + 114</syntaxhighlight> ישלב את הטקסט return a.b[35] + 114 בתוך השורה. במקרה כזה פרמטר line לא יעבוד, ופרמטר highlight ימנע את ההכנסה התקינה לתוך השורה. כדאי לשקול שימוש בפרמטר |class=nowrap, למשל <syntaxhighlight lang=java inline class=nowrap>return a.b[35] + 114</syntaxhighlight>. זה ימנע את שבירת הקוד לשתי שורות במידה ואין מספיק מקום, ויתחיל במקרה כזה הישר בשורה החדשה.
  • ניתן להוסיף פרמטרים רגילים של שפת html, למשל style או class (ראו דוגמה בסעיף הקודם).

תגי code

כאשר עולה הצורך להציג קוד מקור בגוף הטקסט (ולא בשורה חדשה), רצוי להבליט את הקוד ולהבדילו מהטקסט עצמו. ניתן לעשות זאת באמצעות תגי code. להלן אופן השימוש:

<code>טקסט</code>

השורה הנ"ל עצמה מוקפת בתגי קוד וניתן להבחין בשינוי הגופן וברקע האפרפר.

ניתן לשלב תגי code עם תגי nowiki כאשר עולה הצורך להציג קוד ויקי. למשל, הקוד

"ניתן להוסיף קישורים לערכים באופן הבא: <code><nowiki>[[קישור]]</nowiki></code>".

יביא לתוצאה הבאה:

"ניתן להוסיף קישורים לערכים באופן הבא: [[קישור]]".

שימו לב שתגי nowiki הם הפנימיים, ומחוצה להם יש תגי code.

קישורים חיצוניים