Class: ORI::Request
Overview
something.ri [something] request logic.
NOTE: This class DOES NOT validate particular options to be passed to get_list_methods.
Defined Under Namespace
Classes: ParseError
Instance Attribute Summary (collapse)
-
- (Object) glm_options
Options for Internals::get_list_methods.
-
- (Object) kind
:self, :list, :method or :error.
-
- (Object) message
Message.
Class Method Summary (collapse)
-
+ (Object) parse(*args)
Parse arguments into a new Request object.
Instance Method Summary (collapse)
- - (Boolean) error?
-
- (Request) initialize(attrs = {})
constructor
A new instance of Request.
- - (Boolean) list?
- - (Boolean) method?
- - (Boolean) self?
Constructor Details
- (Request) initialize(attrs = {})
A new instance of Request
18 19 20 21 |
# File 'lib/ori/request.rb', line 18 def initialize(attrs = {}) @glm_options = {} attrs.each {|k, v| send("#{k}=", v)} end |
Instance Attribute Details
- (Object) glm_options
Options for Internals::get_list_methods.
10 11 12 |
# File 'lib/ori/request.rb', line 10 def @glm_options end |
- (Object) kind
:self, :list, :method or :error.
13 14 15 |
# File 'lib/ori/request.rb', line 13 def kind @kind end |
- (Object) message
Message. E.g. for :error kind this is the message for the user.
16 17 18 |
# File 'lib/ori/request.rb', line 16 def @message end |
Class Method Details
+ (Object) parse(*args)
Parse arguments into a new Request object.
parse()
parse(//)
parse(//, :all)
parse(//, :all => true, :access => "#")
parse(:puts)
parse("#puts")
parse("::puts")
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/ori/request.rb', line 50 def self.parse(*args) r = new(:glm_options => {:objs => []}) begin if args.size < 1 # Fixnum.ri # 5.ri r.kind = :self else # At least 1 argument is present. arg1 = args.shift case arg1 when Symbol, String # ri :meth # ri "#meth" # ri "::meth" r.kind = :method if args.size > 0 raise ParseError, "Unexpected arguments after #{arg1.inspect}" end # This is important -- look through all available methods. r.[:all] = true method_name = if arg1.to_s.match /\A(::|#)(.+)\z/ r.[:access] = $1 $2 else arg1.to_s end r.[:re] = /\A#{Regexp.escape(method_name)}\z/ when Regexp # ri // # ri //, :all # ri /kk/, :option => value etc. r.kind = :list r.[:re] = arg1 args.each do |arg| if arg.is_a? Hash if arg.has_key?(k = :join) r.[:objs] += [arg.delete(k)].flatten(1) end r..merge! arg elsif [String, Symbol].include? arg.class r..merge! arg.to_sym => true else raise ParseError, "Unsupported argument #{arg.inspect}" end end # Don't bother making `objs` unique, we're just the request parser. else raise ParseError, "Unsupported argument #{arg1.inspect}" end # case arg1 end # if args.size < 1 rescue ParseError => e r.kind = :error r. = e. end r end |
Instance Method Details
- (Boolean) error?
23 24 25 |
# File 'lib/ori/request.rb', line 23 def error? @kind == :error end |
- (Boolean) list?
27 28 29 |
# File 'lib/ori/request.rb', line 27 def list? @kind == :list end |
- (Boolean) method?
31 32 33 |
# File 'lib/ori/request.rb', line 31 def method? @kind == :method end |
- (Boolean) self?
35 36 37 |
# File 'lib/ori/request.rb', line 35 def self? @kind == :self end |