Our great sponsors
Monocle | escodegen | |
---|---|---|
5 | 3 | |
1,629 | 2,614 | |
0.1% | 0.5% | |
8.3 | 1.2 | |
2 days ago | 12 days ago | |
Scala | JavaScript | |
MIT License | BSD 2-clause "Simplified" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Monocle
-
Ref in cats-effect. When should I use it, and when should I not?
Without concurrency, using a Ref doesn't buy you anything over just using a var. If you want the benefits of immutability with an API that resembles mutability, you have to use something like Monocle.
-
Show HN: Monocle – bidirectional code generation library
A very popular Scala optics library is also called Monocle. I’ve been a happy user for a few years:
-
Monocle 3 release candidate - a super useful and simple library for optics with poetic api
See example https://www.optics.dev/Monocle/
- Monocle 3.0.0-M1 is released for Scala 2.13 and Scala 3
-
Monocle 3 Roadmap
We always have work to do, for example to define scalfix rules to automate the migration https://github.com/optics-dev/Monocle/issues/1001
escodegen
-
How to make your own programming language in JavaScript
What's cool about Esprima syntax is that there are tools that generate code based on their AST. An example is escodegen which takes Esprima AST as input and outputs JavaScript code. You can think that you can use just strings to generate code, but this solution will not scale. In this tutorial, I show only a single if statement but you will run into a lot of problems if you will have more complex code.
- Show HN: Monocle – bidirectional code generation library
-
Abstract Syntax Trees: They're Actually Used Everywhere -- But What Are They?
Unparse the modified AST back into Javascript: Escodegen
What are some alternatives?
Quicklens - Modify deeply nested case class fields
recast - JavaScript syntax tree transformer, nondestructive pretty-printer, and automatic source map generator
Shapeless - Generic programming for Scala
esprima - ECMAScript parsing infrastructure for multipurpose analysis
Chimney - Scala library for boilerplate-free, type-safe data transformations
espree - An Esprima-compatible JavaScript parser
cats - Lightweight, modular, and extensible library for functional programming.
astring - 🌳 Tiny and fast JavaScript code generator from an ESTree-compliant AST.
Scalaz - Principled Functional Programming in Scala
estree - The ESTree Spec
Scala Graph - Graph for Scala is intended to provide basic graph functionality seamlessly fitting into the Scala Collection Library. Like the well known members of scala.collection, Graph for Scala is an in-memory graph library aiming at editing and traversing graphs, finding cycles etc. in a user-friendly way.
estraverse - ECMAScript JS AST traversal functions