[HN Gopher] Show HN: A stab at building my own string diffing li...
       ___________________________________________________________________
        
       Show HN: A stab at building my own string diffing library
        
       Took a stab at building my own string diffing JS package.  I built
       an interactive demo for TypeIt's website
       (https://typeitjs.com/build-your-own) a while back. The approach I
       took to handle user input necessitated a way to calculate the
       difference between the versions of a user's text input.  I searched
       around for a package to help me out and found a couple of good ones
       (like fast-diff), but I either didn't really like their API or
       didn't want to take on a huge new dependency. Instead, I thought
       I'd give it a shot myself (famous last words).  I dove into it
       having no real formal knowledge of the algorithmic approaches to
       string diffing, and so things got frustrating real fast. But then I
       figured out a way to build it out using JavaScript symbols to link
       characters that helped ease the complexity a ton. It all resulted
       in "striff," which comes in at just over 600 bytes gzipped, and
       that I've been using in production for a couple of months now.
       It's a little weird looking back now, because I don't think I'd
       recommend someone taking the same path in building your own, but at
       the same time, there's an immense satisfaction knowing I was able
       to figure out a pretty reliable approach. Check it out:
       https://github.com/alexmacarthur/striff
        
       Author : alexmacarthur
       Score  : 23 points
       Date   : 2022-05-19 17:16 UTC (5 hours ago)
        
       | gus_massa wrote:
       | Clicky:
       | 
       | TipeIt demo: https://typeitjs.com/build-your-own
       | 
       | Diff library: https://github.com/alexmacarthur/striff
       | 
       | The demos get's quite slow if I type too much. Is the search
       | method linear or quadratic?
       | 
       | If I type too much without spaces, like "aaaaaaaaaaaaaaaaaaaaaaaa
       | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
       | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"
       | (that is an evil string for search) then in the typing box the
       | text is wrapped but in the reply box the text is all in the same
       | line and goes outside the box.
        
       | gen_greyface wrote:
       | when i type long sentences, it starts visibly lagging, input
       | reflection is delayed by seconds sometimes.
        
       | samatman wrote:
       | Having looked at the code a bit I stumbled onto this:
       | 
       | https://github.com/alexmacarthur/striff/blob/master/src/util...
       | 
       | This... can't be right.
       | 
       | Can you explain how your algorithm differs from, in particular,
       | this one:
       | https://en.wikipedia.org/wiki/Longest_common_subsequence_pro...
       | 
       | Also, _why_ does it differ from that?
        
         | melony wrote:
         | I would recommend using an optimized permutations
         | library/generator on the string start and end indices instead
         | of directly manipulating the slices.
        
       ___________________________________________________________________
       (page generated 2022-05-19 23:02 UTC)