ProductPromotion
Logo

Elm

made by https://0x3d.site

GitHub - johannesvollmer/regex-nodes: Visualize and edit regular expressions for use in javascript.
Visualize and edit regular expressions for use in javascript.  - GitHub - johannesvollmer/regex-nodes: Visualize and edit regular expressions for use in javascript.
Visit Site

GitHub - johannesvollmer/regex-nodes: Visualize and edit regular expressions for use in javascript.

GitHub - johannesvollmer/regex-nodes: Visualize and edit regular expressions for use in javascript.

Regex Nodes

This node-based regular expression editor helps you understand and edit regular expressions for use in your Javascript code.

If your regular expressions are complex enough to give this editor relevance, you probably should consider not using regular expressions, haha.

Why Nodes?

One of the problems with regular expressions is that they get quite messy very quickly. Operator precedence is not always obvious and can be misleading. Nodes, on the other hand, are a visual hierarchy. A text-based regex cannot simply be broken into several lines or indented, because that would alter the meaning of the expression.

The other major benefit of nodes is that the editor will prevent you from producing invalid expressions. Other regex editors analyze the possibly incorrect regular expression that the user has come up with. The node editor will allow you to enter your intention and generate a correct regular expression.

In addition, nodes offer various other advantages, such as reusing subexpressions, automatic character escaping, grouping and parameterizing expressions, and automatic optimizations.

Core Features

  • Construct regular expressions using a visual editor
  • Load existing regular expressions from your Javascript code into the editor and edit it utilizing nodes
  • Use the generated expression in Javascript
  • See effects of the regular expression live using a customizable example text
  • Coming Soon: Reuse common patterns to not spend time reinventing the regex wheel

How to use

See this blog post. It explains how to handle the nodes and what the buttons do.

Build

With elm installed on your system, run elm make src/Main.elm --output=html/built.js. Also, see compiling elm with optimization enabled.

Alternatively, use modd or npm run watch in this directory to compile on every file save.

Roadmap

  1. As I have realized that node groups would not be worth development time right now, the editor should offer common regex patterns as hard-coded nodes. When parsing a regular expression, those patterns should be recognized.
  2. To fully quality as an editor, the parser must support repetition ranges in curly braces and Unicode literals at all costs.
  3. Simply connecting and rearranging properties of set nodes and sequence nodes.

Project Songs (archived here for future nostalgia)

  • Sorsari: Children of Gaia
  • Barnacle Boi: Downpour
  • Yedgar: Asura

Shoutout

BrowserStack Logo

Thanks to BrowserStack, we can make sure this website runs on any browser, for free. BrowserStack loves Open Source, and Open Source loves BrowserStack.

To Do

  • Add automated tests
  • Example text for instant feedback
  • Implement all node types
  • Automatic node width calculation
  • Initial node setup for an easy start
    • After improving parsing, add a more interesting start setup
  • Build Scripts + Build to Github Pages
    • Use optimized builds instead of debug builds for github pages
  • Use node width and property count when layouting parsed nodes Or use iterative physics approach (force-directed layout)
  • While in "Add Nodes", press enter to pick the first option
  • Parse regex code in "Add Nodes"
    • Charset [abc]
      • Char ranges [a-bc-d][^a-b]
      • Fix composed negation being ignored
    • Alternation (a|b)
    • Escaped Characters \W
      • Unicode literals? \x01
    • Sequences the( |_)
    • Look Ahead a(?!b)
    • Quantifiers a?b{0,3}
      • a?b??c+?d*?
      • b{0,3} c{1,} d{5}
    • Positioning (^, $)
  • How to delete nodes
    • Option: Delete with children
    • Option: When deleting a node, try to retain connections (If the deleted node is a single property node, connect the otherwise now opened connections)
  • Do not adjust example for every node move
  • Middle mouse button view movement
    • Blur text input on non-middle-mouse-clicking anywhere
  • Simplify UX of changing order in "Set Node"s
  • Prevent cyclic connections
  • Tooltips
    • Custom, styled tooltips?
  • Live Explanations!!
  • Move node including all input nodes? (Next to duplicate and delete)
  • Iterative Auto-layout using physics simulation?
    • UX: Animate while holding button down instead of once per click
  • Reconnect replaced connections when reverting connection prototype
  • Instantiate Nodes centered to the screen
    • Using the real window size
  • Consider rewriting Css to Sass
  • On input focus select container node
  • Premade Reusable Node Patterns!
    • UX: A node, which by default is collapsed, and on click reveals all connected nodes which are otherwise hidden (Think of it more like a section in a wiki which is summarized by the header)
  • Unicode in the output regex
  • Unicode literal node?
  • Support mobile devices
  • Enable sharing node graphs by url?
    • Do not always update URI, but only when user wants to share?
  • Reset view button when panned too far away
  • Deduplicate parsed node graph
  • Turn this whole project into a NodeJS monster just for testing and minification of the generated javascript.... or wait until a better solution arrives.

More Resources
to explore the angular.

mail [email protected] to add your project or resources here ๐Ÿ”ฅ.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here ๐Ÿ”.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory