Sha256: d1919c3fa486b4ddac87bb142caac9c3c54fbf03651853421378046f104381b1

Contents?: true

Size: 1.46 KB

Versions: 16

Compression:

Stored size: 1.46 KB

Contents

# Author::    Eric Crane  (mailto:eric.crane@mac.com)
# Copyright:: Copyright (c) 2019 Eric Crane.  All rights reserved.
#
# The Parser.
# Can parse single line commands or files.
#

module Gloo
  module Core
    class Parser

      #
      # Set up the parser.
      #
      def initialize( engine )
        @engine = engine
        @engine.log.debug 'parser intialized...'
      end

      #
      # Parse a command from the immediate execution context.
      #
      def parse_immediate( cmd )
        cmd, params = split_params cmd
        params = Gloo::Core::Tokens.new( params ) if params
        tokens = Gloo::Core::Tokens.new( cmd )
        dic = Gloo::Core::Dictionary.instance
        verb = dic.find_verb( tokens.verb )
        return verb.new( @engine, tokens, params ) if verb

        @engine.log.error "Verb '#{tokens.verb}' was not found."
        return nil
      end

      #
      # If additional params were provided, split them out
      # from the token list.
      #
      def split_params( cmd )
        params = nil
        i = cmd.rindex( '(' )
        if i && cmd.strip.end_with?( ')' )
          pstr = cmd[ i + 1..-1 ]
          params = pstr.strip[ 0..-2 ] if pstr
          cmd = cmd[ 0, i - 1 ]
        end
        return cmd, params
      end

      #
      # Parse a command and then run it if it parsed correctly.
      #
      def run( cmd )
        v = parse_immediate( cmd )
        Gloo::Exec::Runner.go( @engine, v ) if v
      end

    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
gloo-3.2.0 lib/gloo/core/parser.rb
gloo-3.1.1 lib/gloo/core/parser.rb
gloo-3.1.0 lib/gloo/core/parser.rb
gloo-3.0.1 lib/gloo/core/parser.rb
gloo-3.0.0 lib/gloo/core/parser.rb
gloo-2.5.0 lib/gloo/core/parser.rb
gloo-2.4.3 lib/gloo/core/parser.rb
gloo-2.4.2 lib/gloo/core/parser.rb
gloo-2.4.1 lib/gloo/core/parser.rb
gloo-2.4.0 lib/gloo/core/parser.rb
gloo-2.3.1 lib/gloo/core/parser.rb
gloo-2.2.0 lib/gloo/core/parser.rb
gloo-2.1.0 lib/gloo/core/parser.rb
gloo-2.0.2 lib/gloo/core/parser.rb
gloo-2.0.1 lib/gloo/core/parser.rb
gloo-2.0.0 lib/gloo/core/parser.rb