12 releases

0.0.14 Jul 28, 2024
0.0.13 Apr 28, 2024
0.0.12 Mar 28, 2024
0.0.9 Feb 9, 2024
0.0.3 Jul 31, 2023

#648 in Web programming

23 downloads per month

Apache-2.0 OR MIT

460KB
4.5K SLoC

JavaScript 3.5K SLoC // 0.0% comments Rust 697 SLoC // 0.0% comments FreeMarker 2 SLoC

PageTop HighlightJS

PageTop package to display beautiful code snippets on web pages.

License API Docs Crates.io Downloads

Overview

  • Utilizes the versatile highlight.js JavaScript library.
  • Supports 90+ coding languages.
  • Choose from all 95+ available themes.
  • Provides a component for adding code snippets.
  • Highlight multi-line blocks of code.
  • Detects language- and lang- class prefixes.
  • Customize the highlight.js init JavaScript.
  • Smart loading of CSS & JS assets.

Usage

Add pagetop-hljs to your Cargo.toml:

[dependencies]
pagetop-hljs = "<Version>"

Add pagetop_hljs::HighlightJS to your dependencies package:

use pagetop::prelude::*;

impl PackageTrait for MyPackage {
    // ...
    fn dependencies(&self) -> Vec<PackageRef> {
        vec![
            // ...
            &pagetop_hljs::HighlightJS,
            // ...
        ]
    }

    fn configure_service(&self, cfg: &mut service::web::ServiceConfig) {
        cfg.route("/", service::web::get().to(hljs_sample));
    }
    // ...
}

And put your code snippets on web pages:

use pagetop_hljs::prelude::*;

#[service::get("/")]
async fn hljs_sample(request: HttpRequest) -> ResultPage<Markup, ErrorPage> {
    Page::new(request)
        .with_component(Snippet::with(
            HljsLang::Rust,
            r###"
// This is the main function.
fn main() {
    // Print text to the console.
    println!("Hello World!");
}
            "###,
        ))
        .render()
}

📦 About PageTop

PageTop is an opinionated web framework to build modular Server-Side Rendering web solutions.

🚧 Warning

PageTop framework is currently in active development. The API is unstable and subject to frequent changes. Production use is not recommended until version 0.1.0.

📜 License

All code in this project is dual-licensed under either:

at your option. This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem.

Dependencies

~25–37MB
~643K SLoC