sexp_path 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,8 +1,3 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gemspec
4
-
5
- group :development do
6
- gem 'jeweler'
7
- end
8
-
3
+ gemspec
@@ -86,6 +86,10 @@ into SexpPath.
86
86
  -s(:a) => s(:a,:b), s(:b), but not s(:a)
87
87
  s(is_not :a) => s(:b), s(:c), but not s(:a) or s(:a, :b)
88
88
 
89
+ [Remaining] Matches the remainder of an s-expression.
90
+
91
+ s(:a, ___) => s(:a), s(:a, :b, :c), but not s(:b)
92
+
89
93
  == Searching
90
94
 
91
95
  You may use any SexpPath to search an S-Expression. SexpPath defines the `/` operator as search,
@@ -127,7 +131,6 @@ in `method_name`.
127
131
  Here is an example of using SexpPath to grab all the classes and their methods from
128
132
  a file:
129
133
 
130
- require 'rubygems'
131
134
  require 'sexp_path'
132
135
  require 'ruby_parser' # `gem install ruby_parser`
133
136
 
@@ -164,4 +167,5 @@ Ideas for Hacking on SexpPath:
164
167
 
165
168
  I'd love to see what people do with this library, let me know if you find it useful.
166
169
 
167
- Adam Sanderson, netghost@gmail.com
170
+ Adam Sanderson, netghost@gmail.com
171
+ http://monkeyandcrow.com
@@ -1,5 +1,4 @@
1
- require 'rubygems'
2
- require File.dirname(__FILE__) + '/../lib/sexp_path'
1
+ require_relative '../lib/sexp_path'
3
2
  require 'ruby_parser'
4
3
 
5
4
  path = ARGV.shift
@@ -1,11 +1,9 @@
1
- require 'rubygems'
2
- require File.dirname(__FILE__) + '/../lib/sexp_path'
1
+ require_relative '../lib/sexp_path'
3
2
  require 'ruby_parser'
4
3
 
5
4
  # Example program, this will scan a file for anything
6
5
  # matching the Sexp passed in.
7
6
 
8
-
9
7
  pattern = ARGV.shift
10
8
  paths = ARGV
11
9
 
@@ -1,4 +1,3 @@
1
- require 'rubygems'
2
1
  require 'sexp_processor'
3
2
 
4
3
  module SexpPath
@@ -10,14 +9,13 @@ module SexpPath
10
9
  end
11
10
  end
12
11
 
13
- sexp_path_root = File.dirname(__FILE__)+'/sexp_path/'
14
12
  %w[
15
13
  traverse
16
14
  sexp_query_builder
17
15
  ruby_query_builder
18
16
  sexp_result
19
17
  sexp_collection
20
-
18
+
21
19
  matcher/base
22
20
  matcher/any
23
21
  matcher/all
@@ -33,7 +31,7 @@ sexp_path_root = File.dirname(__FILE__)+'/sexp_path/'
33
31
  matcher/sibling
34
32
 
35
33
  ].each do |path|
36
- require sexp_path_root+path
34
+ require_relative "./sexp_path/#{path}"
37
35
  end
38
36
 
39
37
  # Pattern building helper, see SexpQueryBuilder
@@ -1,5 +1,5 @@
1
1
  require 'test/unit'
2
- require File.dirname(__FILE__) + '/../lib/sexp_path'
2
+ require_relative '../lib/sexp_path'
3
3
 
4
4
  class SexpPathCaptureTest < Test::Unit::TestCase
5
5
  def setup
@@ -1,5 +1,5 @@
1
1
  require 'test/unit'
2
- require File.dirname(__FILE__) + '/../lib/sexp_path'
2
+ require_relative '../lib/sexp_path'
3
3
 
4
4
  class SexpMatchingPathTest < Test::Unit::TestCase
5
5
  def setup
@@ -1,5 +1,5 @@
1
1
  require 'test/unit'
2
- require File.dirname(__FILE__) + '/../lib/sexp_path'
2
+ require_relative '../lib/sexp_path'
3
3
 
4
4
  class SexpReplacementTest < Test::Unit::TestCase
5
5
  def test_replacing_exact_matches
@@ -1,5 +1,6 @@
1
1
  require 'test/unit'
2
- require File.dirname(__FILE__) + '/../lib/sexp_path'
2
+ require_relative '../lib/sexp_path'
3
+
3
4
  require 'ruby_parser'
4
5
  require 'set'
5
6
 
metadata CHANGED
@@ -1,109 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sexp_path
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 5
8
- - 0
9
- version: 0.5.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.1
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Adam Sanderson
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2013-06-26 00:00:00 -07:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: sexp_path
12
+ date: 2013-07-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sexp_processor
22
16
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '4.2'
24
22
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
31
23
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ version: '4.2'
29
+ none: false
30
+ - !ruby/object:Gem::Dependency
34
31
  name: ruby_parser
35
32
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
37
- none: false
38
- requirements:
33
+ requirement: !ruby/object:Gem::Requirement
34
+ requirements:
39
35
  - - ~>
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 3
43
- - 1
44
- version: "3.1"
45
- type: :development
46
- version_requirements: *id002
47
- - !ruby/object:Gem::Dependency
48
- name: jeweler
49
- prerelease: false
50
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ - !ruby/object:Gem::Version
37
+ version: '3.2'
51
38
  none: false
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- segments:
56
- - 0
57
- version: "0"
58
39
  type: :development
59
- version_requirements: *id003
60
- - !ruby/object:Gem::Dependency
61
- name: sexp_processor
62
- prerelease: false
63
- requirement: &id004 !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
66
42
  - - ~>
67
- - !ruby/object:Gem::Version
68
- segments:
69
- - 3
70
- - 0
71
- version: "3.0"
72
- type: :runtime
73
- version_requirements: *id004
74
- - !ruby/object:Gem::Dependency
75
- name: ruby_parser
76
- prerelease: false
77
- requirement: &id005 !ruby/object:Gem::Requirement
43
+ - !ruby/object:Gem::Version
44
+ version: '3.2'
78
45
  none: false
79
- requirements:
80
- - - ~>
81
- - !ruby/object:Gem::Version
82
- segments:
83
- - 2
84
- - 0
85
- version: "2.0"
86
- type: :development
87
- version_requirements: *id005
88
- description: " Allows you to do example based pattern matching and queries against S Expressions (sexp).\n"
46
+ description: Example based structural pattern matching for S-Expressions
89
47
  email: netghost@gmail.com
90
48
  executables: []
91
-
92
49
  extensions: []
93
-
94
- extra_rdoc_files:
50
+ extra_rdoc_files:
95
51
  - README.rdoc
96
- - TODO
97
- files:
98
- - Gemfile
99
- - Gemfile.lock
100
- - README.rdoc
101
- - Rakefile
102
- - TODO
103
- - VERSION.yml
104
- - examples/print_methods.rb
105
- - examples/sexp_grep.rb
106
- - lib/sexp_path.rb
52
+ files:
107
53
  - lib/sexp_path/matcher/all.rb
108
54
  - lib/sexp_path/matcher/any.rb
109
55
  - lib/sexp_path/matcher/atom.rb
@@ -122,45 +68,41 @@ files:
122
68
  - lib/sexp_path/sexp_query_builder.rb
123
69
  - lib/sexp_path/sexp_result.rb
124
70
  - lib/sexp_path/traverse.rb
71
+ - lib/sexp_path.rb
72
+ - examples/print_methods.rb
73
+ - examples/sexp_grep.rb
125
74
  - test/sample.rb
126
75
  - test/sexp_path_capture_test.rb
127
76
  - test/sexp_path_matching_test.rb
128
77
  - test/sexp_replacement_test.rb
129
78
  - test/use_case_test.rb
130
- has_rdoc: true
131
- homepage: http://github.com/adamsanderson/sexp_path
132
- licenses: []
133
-
79
+ - README.rdoc
80
+ - Gemfile
81
+ homepage: https://github.com/adamsanderson/sexp_path
82
+ licenses:
83
+ - MIT
134
84
  post_install_message:
135
- rdoc_options: []
136
-
137
- require_paths:
85
+ rdoc_options:
86
+ - --main
87
+ - README.rdoc
88
+ require_paths:
138
89
  - lib
139
- required_ruby_version: !ruby/object:Gem::Requirement
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '1.9'
140
95
  none: false
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- segments:
145
- - 0
146
- version: "0"
147
- required_rubygems_version: !ruby/object:Gem::Requirement
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
148
101
  none: false
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- segments:
153
- - 0
154
- version: "0"
155
102
  requirements: []
156
-
157
103
  rubyforge_project:
158
- rubygems_version: 1.3.7
104
+ rubygems_version: 1.8.24
159
105
  signing_key:
160
106
  specification_version: 3
161
- summary: Pattern matching for S-Expressions (sexp).
162
- test_files:
163
- - test/sexp_path_capture_test.rb
164
- - test/sexp_path_matching_test.rb
165
- - test/sexp_replacement_test.rb
166
- - test/use_case_test.rb
107
+ summary: Pattern matching for S-Expressions
108
+ test_files: []
@@ -1,30 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- sexp_path (0.4.6)
5
- sexp_processor (~> 4.2)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- git (1.2.5)
11
- jeweler (1.8.4)
12
- bundler (~> 1.0)
13
- git (>= 1.2.5)
14
- rake
15
- rdoc
16
- json (1.8.0)
17
- rake (10.1.0)
18
- rdoc (4.0.1)
19
- json (~> 1.4)
20
- ruby_parser (3.1.3)
21
- sexp_processor (~> 4.1)
22
- sexp_processor (4.2.1)
23
-
24
- PLATFORMS
25
- ruby
26
-
27
- DEPENDENCIES
28
- jeweler
29
- ruby_parser (~> 3.1)
30
- sexp_path!
data/Rakefile DELETED
@@ -1,41 +0,0 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rdoc/task'
4
-
5
- begin
6
- require 'jeweler'
7
-
8
- Jeweler::Tasks.new do |s|
9
- s.name = "sexp_path"
10
- s.summary = "Pattern matching for S-Expressions (sexp)."
11
- s.description = <<-DESC
12
- Allows you to do example based pattern matching and queries against S Expressions (sexp).
13
- DESC
14
- s.email = "netghost@gmail.com"
15
- s.homepage = "http://github.com/adamsanderson/sexp_path"
16
- s.authors = ["Adam Sanderson"]
17
- s.files = FileList["[A-Z]*", "{bin,lib,test,examples}/**/*"]
18
-
19
- s.add_dependency 'sexp_processor', '~> 3.0'
20
-
21
- # Testing
22
- s.test_files = FileList["test/**/*_test.rb"]
23
- s.add_development_dependency 'ruby_parser', '~> 2.0'
24
- end
25
-
26
- rescue LoadError
27
- puts "Jeweler not available. Install it for jeweler-related tasks with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
28
- end
29
-
30
- Rake::RDocTask.new do |t|
31
- t.main = "README.rdoc"
32
- t.rdoc_files.include("README.rdoc", "lib/**/*.rb")
33
- end
34
-
35
- Rake::TestTask.new do |t|
36
- t.libs << 'lib'
37
- t.pattern = 'test/**/*_test.rb'
38
- t.verbose = false
39
- end
40
-
41
- task :default => :test
data/TODO DELETED
@@ -1,3 +0,0 @@
1
- * Document extending SexpPath
2
- * Add examples of extending matchers
3
- * AssertSanity!
@@ -1,5 +0,0 @@
1
- ---
2
- :major: 0
3
- :minor: 5
4
- :patch: 0
5
- :build: