File: scope_spec.rb

package info (click to toggle)
ruby-parslet 1.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 908 kB
  • ctags: 473
  • sloc: ruby: 5,220; makefile: 2
file content (26 lines) | stat: -rw-r--r-- 577 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
require 'spec_helper'

describe Parslet::Atoms::Scope do
  include Parslet
  include Parslet::Atoms::DSL
  
  
  let(:context) { Parslet::Atoms::Context.new(nil) }
  let(:captures) { context.captures }
  
  def inject string, parser
    source = Parslet::Source.new(string)
    parser.apply(source, context, true)
  end
  
  let(:aabb) { 
    scope {
      match['ab'].capture(:f) >> dynamic { |s,c| str(c.captures[:f]) }
    }
  }
  it "keeps values of captures outside" do
    captures[:f] = 'old_value'
    inject 'aa', aabb
    captures[:f].should == 'old_value'
  end 
end