Parent

Rack::Mount::StrexpParser

Constants

REGEXP_NAMED_CAPTURE
REGEXP_NAMED_CAPTURE
Racc_arg
Racc_token_to_s_table
Racc_debug_parser

Attributes

anchor[RW]
requirements[RW]
lineno[R]
filename[R]
state[RW]

Public Instance Methods

_reduce_1(val, _values, result) click to toggle source

reduce 0 omitted

     # File lib/rack/mount/strexp/parser.rb, line 116
116: def _reduce_1(val, _values, result)
117:  result = anchor ? "\\A#{val.join}\\Z" : "\\A#{val.join}" 
118:     result
119: end
_reduce_2(val, _values, result) click to toggle source
     # File lib/rack/mount/strexp/parser.rb, line 121
121: def _reduce_2(val, _values, result)
122:  result = val.join 
123:     result
124: end
_reduce_4(val, _values, result) click to toggle source

reduce 3 omitted

     # File lib/rack/mount/strexp/parser.rb, line 128
128: def _reduce_4(val, _values, result)
129:            name = val[0].to_sym
130:            requirement = requirements[name]
131:            result = REGEXP_NAMED_CAPTURE % [name, requirement]
132: 
133:     result
134: end
_reduce_5(val, _values, result) click to toggle source
     # File lib/rack/mount/strexp/parser.rb, line 136
136: def _reduce_5(val, _values, result)
137:            name = val[0].to_sym
138:            requirement = requirements[name]
139:            result = REGEXP_NAMED_CAPTURE % [name, '.+' || requirement]
140: 
141:     result
142: end
_reduce_6(val, _values, result) click to toggle source
     # File lib/rack/mount/strexp/parser.rb, line 144
144: def _reduce_6(val, _values, result)
145:  result = "(?:#{val[1]})?" 
146:     result
147: end
_reduce_7(val, _values, result) click to toggle source
     # File lib/rack/mount/strexp/parser.rb, line 149
149: def _reduce_7(val, _values, result)
150:  result = Regexp.escape(val[0]) 
151:     result
152: end
_reduce_none(val, _values, result) click to toggle source
     # File lib/rack/mount/strexp/parser.rb, line 154
154: def _reduce_none(val, _values, result)
155:   val[0]
156: end
action() click to toggle source
    # File lib/rack/mount/strexp/tokenizer.rb, line 23
23:   def action
24:     yield
25:   end
load_file( filename ) click to toggle source
    # File lib/rack/mount/strexp/tokenizer.rb, line 33
33:   def load_file( filename )
34:     @filename = filename
35:     open(filename, "r") do |f|
36:       scan_setup(f.read)
37:     end
38:   end
next_token() click to toggle source
    # File lib/rack/mount/strexp/tokenizer.rb, line 46
46:   def next_token
47:     return if @ss.eos?
48: 
49:     text = @ss.peek(1)
50:     @lineno  +=  1  if text == "\n"
51:     token = case @state
52:     when nil
53:       case
54:       when (text = @ss.scan(/\\(\(|\)|:|\*)/))
55:          action { [:CHAR,  @ss[1]] }
56: 
57:       when (text = @ss.scan(/\:([a-zA-Z_]\w*)/))
58:          action { [:PARAM, @ss[1]] }
59: 
60:       when (text = @ss.scan(/\*([a-zA-Z_]\w*)/))
61:          action { [:GLOB,  @ss[1]] }
62: 
63:       when (text = @ss.scan(/\(/))
64:          action { [:LPAREN, text]  }
65: 
66:       when (text = @ss.scan(/\)/))
67:          action { [:RPAREN, text]  }
68: 
69:       when (text = @ss.scan(/./))
70:          action { [:CHAR,   text]  }
71: 
72:       else
73:         text = @ss.string[@ss.pos .. 1]
74:         raise  ScanError, "can not match: '" + text + "'"
75:       end  # if
76: 
77:     else
78:       raise  ScanError, "undefined state: '" + state.to_s + "'"
79:     end  # case state
80:     token
81:   end
scan(str) click to toggle source
Alias for: scan_str
scan_file( filename ) click to toggle source
    # File lib/rack/mount/strexp/tokenizer.rb, line 40
40:   def scan_file( filename )
41:     load_file(filename)
42:     do_parse
43:   end
scan_setup(str) click to toggle source
    # File lib/rack/mount/strexp/tokenizer.rb, line 17
17:   def scan_setup(str)
18:     @ss = StringScanner.new(str)
19:     @lineno =  1
20:     @state  = nil
21:   end
scan_str(str) click to toggle source
    # File lib/rack/mount/strexp/tokenizer.rb, line 27
27:   def scan_str(str)
28:     scan_setup(str)
29:     do_parse
30:   end
Also aliased as: scan

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.