Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

code-fns

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

code-fns

A library for visualizing code.

  • 0.11.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
871
increased by2.47%
Maintainers
1
Weekly downloads
 
Created
Source

code-fns

A utility library for visualizing code.

Install

npm install code-fns

Purpose

Most code highlighters in JavaScript output HTML and CSS, but if your intended target isn't a web page, the tags and styles would then need to be translated to the desired form. code-fns outputs raw text and hex colors, making it easy to render the code in whichever form you choose. Specifically, code-fns was built for use in the Motion Canvas project, for visualizing code in videos and animations. code-fns may also compute the transformation between different code blocks, so that you may animate between them.

Compatibility

Supports all browsers and all maintained node versions, though you will need to use your own transpiler, as the package files use modern EcmaScript features. This ensures that you may configure your build as you wish.

Usage

To parse code into highlighted tokens, use language.langName to select your language, and parse to highlight it.

import { ready, language, parse } from './tags';

await ready({ langs: ['tsx'] });
const tsx = language.tsx;
parse(tsx`() => true`);

This will generate the following output.

[
  { code: '() ', color: '#c9d1d9' },
  { code: '=>', color: '#ff7b72' },
  { code: ' ', color: '#c9d1d9' },
  { code: 'true', color: '#79c0ff' },
];

You may then use templating to generate your code dynamically.

import { ready, language, parse } from './tags';

await ready({ langs: ['tsx'] });
const tsx = language.tsx;
const generate = (result: string) => tsx`(${result});`;
parse(generate('false'));
[
  { code: '(', color: '#c9d1d9' },
  { code: 'false', color: '#79c0ff' },
  { code: ');', color: '#c9d1d9' },
];

To compute the difference between two generated chunks of code, use diff.

import { ready, language, diff } from './tags';

await ready({ langs: ['tsx'] });
const tsx = language.tsx;
const generate = (result: string) => tsx`(${result});`;
diff(generate('true'), generate('false'));
[
  { code: '(', color: '#c9d1d9', morph: 'retain' },
  { code: 'true', color: '#79c0ff', morph: 'delete' },
  { code: 'false', color: '#79c0ff', morph: 'create' },
  { code: ');', color: '#c9d1d9', morph: 'retain' },
];

This can be helpful to create transitional animations between code, as in Motion Canvas.

Keywords

FAQs

Package last updated on 07 Apr 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc