One-point-oh!

@gonzedge gonzedge released this Jan 23, 2017 · 167 commits to master since this release

New methods to match words, new configurable options, saving to/reading from disk and a bunch of other goodies to make this gem ready for production.

1.0.0 compare

Breaking Changes

  • Rename PlainTextReader to Readers::PlainText by @gonzedge
  • Rename Compression to Compressable by @gonzedge
  • Rename Inspect to Inspectable by @gonzedge

Enhancements

Major

  • Add Serializers to dump trie into/load trie from disk
    #10 by @gonzedge

    • Supported formats include Ruby's Marshal (.marshal) with
      Serializers::Marshal and YAML (.yaml or .yml) with
      Serializers::Yaml

    • The format to use is determined by the filepath extension and
      Marshal is used when a format isn't recognized.

      # Save `your_trie` into a file
      Rambling::Trie.dump your_trie, 'a filename'
      
      # Load a trie from a file into memory
      trie = Rambling::Trie.load 'a filename'
  • Add Serializers::Zip to handle zip files by
    @gonzedge

    Automatically detects .marshal and .yaml files, as well as any
    configured Serializer based on filepath extension

  • Add ability to configure rambling-trie #11
    by @gonzedge

      Rambling::Trie.config do |config|
        config.compressor = MyCompressor.new
        config.root_builder = lambda { MyNode.new }
    
        config.readers.add :html, MyHtmlReader.new
        config.readers.default = config.readers[:html]
    
        config.serializers.add :json, MyJsonSerializer.new
        config.serializers.default = config.serializers[:yml]
      end
  • Add #words_within and #words_within? to get all words matched within a
    given string #9 by @gonzedge

    • #words_within returns all the matched words
    • #words_within? returns true as soon as it finds one matching word
  • Add #== to compare nodes by @gonzedge

    Contained in Rambling::Trie::Comparable module. Two nodes are equal to
    each other if they have the same letter, they are both either terminal or
    non-terminal and their children tree is the same

  • Add changelog by @gonzedge

  • Add contributing guide by @gonzedge

Minor

  • Extract modules for peripheral node functionality by @gonzedge
    • Move #to_s to Stringifyable module
    • Move #as_word to Stringifyable module by
    • Move #== to Comparable module
    • Rename Compression to Compressable
    • Rename Inspector to Inspectable
  • Add #terminal? value to inspect output by @gonzedge
  • Display value of #terminal instead of #terminal? when Node is inspected
    by @gonzedge
  • Freeze Rambling::Trie::VERSION by @gonzedge
  • Refactor performance instrumentation tasks by
    @gonzedge
    • Add Performance module
    • Add Performance::Reporter & Performance::Directory classes
    • Move task execution into individual classes
    • Unify all tasks into single entry point rake performance[type,method]
  • Change benchmark report format by @gonzedge
  • Correct supported versions by @gonzedge
  • Only create new Reader instance when filepath is given on initialization by
    @gonzedge
  • Update license year by @gonzedge