• This repository has been archived on 23/Apr/2020
  • Stars
    star
    5,768
  • Rank 7,046 (Top 0.2 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An embeddable script that makes source-code snippets in HTML prettier.

Status: Archived

status: inactive

This repository has been archived and is no longer maintained.


JavaScript code prettifier

Announcement: Action required rawgit.com is going away.

An embeddable script that makes source-code snippets in HTML prettier.

  • Works on HTML pages.
  • Works even if code contains embedded links, line numbers, etc.
  • Simple API: include some JS & CSS and add an onload handler.
  • Lightweights: small download and does not block page from loading while running.
  • Customizable styles via CSS. See the themes gallery.
  • Supports all C-like, Bash-like, and XML-like languages. No need to specify the language.
  • Extensible language handlers for other languages. You can specify the language.
  • Widely used with good cross-browser support. Powers https://code.google.com/ and http://stackoverflow.com/

See an example.

Setup

  • Include the script tag below in your document:
<script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>

Usage

Put code snippets in <pre class="prettyprint">...</pre> or <code class="prettyprint">...</code> and it will automatically be pretty-printed.

<pre class="prettyprint">class Voila {
public:
  // Voila
  static const string VOILA = "Voila";

  // will not interfere with embedded <a href="#voila2">tags</a>.
}</pre>

FAQ

For which languages does it work?

The comments in prettify.js are authoritative but the lexer should work on a number of languages including C and friends, Java, Python, Bash, SQL, HTML, XML, CSS, JavaScript, Makefile, and Rust.

It works passably on Ruby, PHP, VB, and Awk and a decent subset of Perl and Ruby, but because of commenting conventions, doesn't work on Smalltalk, OCaml, etc. without a language extension.

Other languages are supported via extensions:

Apollo; Basic; Clojure; CSS; Dart; Erlang; Go; Haskell; Lasso; Lisp, Scheme; LLVM; Logtalk; Lua; MATLAB; MLs: F#, Ocaml,SML; Mumps; Nemerle; Pascal; Protocol buffers; R, S; RD; Rust; Scala; SQL; Swift; TCL; LaTeX; Visual Basic; VHDL; Wiki; XQ; YAML

If you'd like to add an extension for your favorite language, please look at src/lang-lisp.js and submit a pull request.

How do I specify the language of my code?

You don't need to specify the language since PR.prettyPrint() will guess. You can specify a language by specifying the language extension along with the prettyprint class:

<pre class="prettyprint lang-html">
  The lang-* class specifies the language file extensions.
  File extensions supported by default include:
    "bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html", "java",
    "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh", "xhtml", "xml",
    "xsl".
</pre>

You may also use the HTML 5 convention of embedding a <code> element inside the <pre> and using language-java style classes:

<pre class="prettyprint"><code class="language-java">...</code></pre>

It doesn't work on "obfuscated code sample"?

Yes. Prettifying obfuscated code is like putting lipstick on a pig — i.e. outside the scope of this tool.

Which browsers does it work with?

It's been tested with IE 6, Firefox 1.5 & 2, and Safari 2.0.4. Look at the tests to see if it works in your browser.

What's changed?

See the changelog.

Why doesn't Prettyprinting of strings work on WordPress?

Apparently wordpress does "smart quoting" which changes close quotes. This causes end quotes to not match up with open quotes.

This breaks prettifying as well as copying and pasting of code samples. See WordPress's help center for info on how to stop smart quoting of code snippets.

How do I put line numbers in my code?

You can use the linenums class to turn on line numbering. If your code doesn't start at line number 1, you can add a colon and a line number to the end of that class as in linenums:52. For example:

<pre class="prettyprint linenums:4"
>// This is line 4.
foo();
bar();
baz();
boo();
far();
faz();
</pre>

How do I prevent a portion of markup from being marked as code?

You can use the nocode class to identify a span of markup that is not code:

<pre class="prettyprint">
int x = foo();  /* This is a comment  <span class="nocode">This is not code</span>
  Continuation of comment */
int y = bar();
</pre>

For a more complete example see the issue #22 testcase.

I get an error message "a is not a function" or "opt_whenDone is not a function"

If you are calling prettyPrint via an event handler, wrap it in a function. Instead of doing:

addEventListener('load', PR.prettyPrint, false);

wrap it in a closure like:

addEventListener('load', function(event) { PR.prettyPrint(); }, false);

so that the browser does not pass an event object to PR.prettyPrint which will confuse it.

How can I customize the colors and styles of my code?

Prettify adds <span> with classes describing the kind of code. You can create CSS styles to matches these classes.

See the theme gallery for examples.

I can't add classes to my code (because it comes from Markdown, etc.)

Instead of <pre class="prettyprint ..."> you can use a comment or processing instructions that survives processing instructions: <?prettify ...?> works as explained in Getting Started.

How can I put line numbers on every line instead of just every fifth line?

Prettify puts lines into an HTML list element so that line numbers aren't caught by copy/paste, and the line numbering is controlled by CSS in the default stylesheet, prettify.css.

The following should turn line numbering back on for the other lines:

<style>
li.L0, li.L1, li.L2, li.L3,
li.L5, li.L6, li.L7, li.L8 {
  list-style-type: decimal !important;
}
</style>

Discussion

Please use the official support group for discussions, suggestions, and general feedback.

License

Apache License 2.0

More Repositories

1

chromedeveditor

Chrome Dev Editor is a developer tool for building apps on the Chrome platform - Chrome Apps and Web Apps, in JavaScript or Dart. (NO LONGER IN ACTIVE DEVELOPMENT)
Dart
2,924
star
2

android-Camera2Basic

Migrated:
Java
2,863
star
3

android-ConstraintLayoutExamples

Migrated:
Java
2,571
star
4

firebase-jobdispatcher-android

DEPRECATED please see the README.md below for details.
Java
1,796
star
5

vrview

Library for embedding immersive media into traditional websites.
JavaScript
1,709
star
6

tiger

Java
1,645
star
7

flipjs

A helper library for doing FLIP animations.
JavaScript
1,409
star
8

android-PictureInPicture

Migrated:
Java
1,393
star
9

android-FingerprintDialog

Migrated:
Java
1,375
star
10

observe-js

A library for observing Arrays, Objects and PathValues
JavaScript
1,357
star
11

PyDrive

Google Drive API Python wrapper library
Python
1,304
star
12

js-marker-clusterer

A marker clustering library for the Google Maps JavaScript API v3.
JavaScript
1,279
star
13

android-RuntimePermissions

This sample has been deprecated/archived. Check this repo for related samples:
Java
1,263
star
14

android-Camera2Video

Migrated:
Java
1,201
star
15

chromium-webview-samples

Useful examples for Developing apps with the Chromium based WebView
Java
1,173
star
16

androidtv-Leanback

Migrated:
Java
1,148
star
17

caja

Caja is a tool for safely embedding third party HTML, CSS and JavaScript in your website.
Java
1,126
star
18

android-ui-toolkit-demos

Migrated:
Java
1,118
star
19

android-ScreenCapture

Migrated:
Java
1,021
star
20

android-BluetoothChat

Migrated:
Java
986
star
21

android-BluetoothLeGatt

Migrated:
Java
911
star
22

sample-media-pwa

A sample video-on-demand media Progressive Web App
JavaScript
889
star
23

ChromeWebLab

The Chrome Web Lab for Makers, Hackers and everyone
JavaScript
877
star
24

big-rig

A proof-of-concept Performance Dashboard, CLI and Node module
CSS
857
star
25

android-instant-apps

Migrated:
Java
847
star
26

cloud-functions-emulator

A local emulator for deploying, running, and debugging Google Cloud Functions.
JavaScript
827
star
27

guitar-tuner

A web-based guitar tuner
JavaScript
822
star
28

android-JobScheduler

This sample has been deprecated/archived. Check this repo for related samples:
Java
773
star
29

flashlight

A pluggable integration with ElasticSearch to provide advanced content searches in Firebase.
JavaScript
757
star
30

friendlypix

FriendlyPix is a cross-platform Firebase example app
726
star
31

voice-memos

A Progressive Web App for recording and playing back voice memos.
JavaScript
724
star
32

android-audio-high-performance

We now recommend you use the Oboe libraries:
C++
715
star
33

android-EmojiCompat

Migrated:
Java
707
star
34

android-RecyclerView

Migrated:
Java
675
star
35

ios-swift-chat-example

FireChat implemented in Swift!
Objective-C
673
star
36

leanback-showcase

Migrated:
Java
639
star
37

android-transition-examples

Migrated:
581
star
38

geofire

Realtime location queries with Firebase
569
star
39

drive-music-player

Fully client side Music Player for Google Drive
JavaScript
566
star
40

android-viewpager2

Migrated:
552
star
41

science-journal-ios

Use the sensors in your mobile devices to perform science experiments. Science doesn’t just happen in the classroom or lab—tools like Science Journal let you see how the world works with just your phone.
Swift
532
star
42

topeka

quiz app
HTML
532
star
43

android-PdfRendererBasic

Migrated:
Java
522
star
44

science-journal

Use the sensors in your mobile devices to perform science experiments. Science doesn’t just happen in the classroom or lab—tools like Science Journal let you see how the world works with just your phone.
Java
508
star
45

tango-examples-java

Example projects for Project Tango [deprecated] Java API
Java
500
star
46

AndroidChat

Demonstrates using the Firebase Android SDK to back a ListView.
Java
499
star
47

android-nearby

Migrated:
Java
494
star
48

android-play-places

Deprecated:
Java
479
star
49

tango-examples-unity

Project Tango [deprecated] UnitySDK Example Projects
C#
475
star
50

easygoogle

Simple wrapper library for Google APIs
Java
471
star
51

firefeed

JavaScript
461
star
52

android-dynamic-features

Migrated:
Kotlin
460
star
53

android-MediaBrowserService

This sample is deprecated.
Java
457
star
54

graphd

The Metaweb graph repository server
C
445
star
55

drive-zipextractor

Extract (decompress) ZIP files into Google Drive using the Google Drive API
JavaScript
435
star
56

android-AutofillFramework

Migrated:
Java
432
star
57

webplatform-samples

HTML5 Samples/Demos
430
star
58

cloud-functions-go

Unofficial Native Go Runtime for Google Cloud Functions
Go
427
star
59

android-unsplash

Deprecated:
424
star
60

android-MultiWindowPlayground

Migrated:
Java
418
star
61

appengine-flask-skeleton

A skeleton for creating Python applications using the Flask framework on App Engine
Python
416
star
62

angularfire-seed

Seed project for AngularFire apps
JavaScript
412
star
63

node-big-rig

A CLI version of Big Rig
JavaScript
410
star
64

firebase-dart

Dart wrapper for Firebase
Dart
409
star
65

android-Camera2Raw

Migrated:
Java
386
star
66

js-store-locator

A library for easily building store-locator-type applications using the Google Maps JavaScript API v3
JavaScript
380
star
67

ADBPlugin

Google Chrome Extension with ADB Daemon
C++
372
star
68

android-fit

Migrated:
Java
372
star
69

android-NotificationChannels

This sample has been deprecated/archived. Check this repo for related samples:
Java
369
star
70

appengine-php-wordpress-starter-project

Starter project for running WordPress on Google Cloud Platform
PHP
368
star
71

android-ActivitySceneTransitionBasic

Migrated:
368
star
72

android-text

Migrated:
Kotlin
363
star
73

android-XYZTouristAttractions

Migrated:
356
star
74

firebase-angular-starter-pack

A Firebase + AngularJS Starter Pack
JavaScript
348
star
75

android-OurStreets

Migrated:
345
star
76

tango-examples-c

JNI example projects for Project Tango [deprecated] C-API
C++
334
star
77

simian

Simian is an enterprise-class Mac OS X software deployment solution. Google App Engine hosted server, with a client powered by the Munki open-source project.
Python
334
star
78

OpenInChrome

Open in Chrome
Objective-C
333
star
79

android-DownloadableFonts

Migrated:
Java
319
star
80

friendlypix-web

FriendlyPix is a cross-platform Firebase example app - This is the web version
JavaScript
312
star
81

pywebsocket

WebSocket server and extension for Apache HTTP Server for testing
Python
310
star
82

android-DarkTheme

migrated:
Java
302
star
83

firereader

Firereader: A feed reader built with Firebase and AngularJS
JavaScript
301
star
84

android-WatchFace

Migrated:
300
star
85

android-MediaRecorder

Migrated:
Java
299
star
86

backbonefire

Backbone bindings for Firebase
JavaScript
291
star
87

TemplateBinding

TemplateBinding Prolyfill
JavaScript
291
star
88

firebase-login-demo-android

Java
280
star
89

Firebase-Unity

Objective-C
279
star
90

seed-element

Polymer element boilerplate
HTML
278
star
91

firebase-util

An experimental toolset for Firebase
JavaScript
276
star
92

android-NavigationDrawer

This sample has been deprecated/archived. Check this repo for related samples:
Java
276
star
93

android-DisplayingBitmaps

Migrated:
Java
272
star
94

wReader-app

RSS Reader written using AngularJS
JavaScript
271
star
95

gcm-playground

CSS
268
star
96

android-CardView

Migrated:
Java
265
star
97

soundstagevr

C#
263
star
98

ShadowDOM

ShadowDOM Polyfill
JavaScript
263
star
99

android-credentials

Migrated:
Java
260
star
100

gamebuilder

Game Builder is an application that allows users to create games with little or no coding experience.
C#
253
star