Sha256: 7588d0951565bf52da3d72ca53209d4060f60d2da6fa9e7e53ba7d2787f4ece4

Contents?: true

Size: 648 Bytes

Versions: 1

Compression:

Stored size: 648 Bytes

Contents

# frozen_string_literal: true

require 'muina'
require 'zeitwerk'
loader = Zeitwerk::Loader::for_gem
loader.setup

module Farseer
  WS_REGEX = /^(\s*)(.*)$/
  Maybe = Muina::Maybe

  module_function

  def char_parser
    ->(char, input) { Farseer.__send__(:char_parser_helper, char, input) }.curry
  end

  def ws_parser
    ->(input) {
      match = input.match(WS_REGEX)

      Maybe.return(Result.new(match[1], match[2]))
    }
  end

  def char_parser_helper(char, input)
    case input[0]
    when char then Maybe.return(Result.new(input[0], input[1..]))
    else Maybe.none
    end
  end
  private :char_parser_helper
end

loader.eager_load

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
farseer-0.3.0 lib/farseer.rb