sexp_processor 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ === 3.0.1 / 2009-01-20
2
+
3
+ * 3 minor enhancements:
4
+
5
+ * Filled out README
6
+ * Promoted file/line/comments from ruby_parser.
7
+ * Added sexp_type to compliment sexp_body.
8
+
1
9
  === 3.0.0 / 2008-10-22
2
10
 
3
11
  * 2 major enhancements:
data/README.txt CHANGED
@@ -1,32 +1,45 @@
1
1
  = SexpProcessor
2
2
 
3
- * FIX (url)
3
+ * http://rubyforge.org/projects/parsetree/
4
4
 
5
5
  == DESCRIPTION:
6
6
 
7
- FIX (describe your package)
7
+ sexp_processor branches from ParseTree bringing all the generic sexp
8
+ processing tools with it. Sexp, SexpProcessor, Environment, etc... all
9
+ for your language processing pleasure.
8
10
 
9
11
  == FEATURES/PROBLEMS:
10
12
 
11
- * FIX (list of features or problems)
13
+ * Includes SexpProcessor and CompositeSexpProcessor.
14
+
15
+ * Allows you to write very clean filters.
12
16
 
13
17
  == SYNOPSIS:
14
18
 
15
- FIX (code sample of usage)
19
+ class MyProcessor < SexpProcessor
20
+ def initialize
21
+ super
22
+ self.strict = false
23
+ end
24
+ def process_lit(exp)
25
+ val = exp.shift
26
+ return val
27
+ end
28
+ end
16
29
 
17
30
  == REQUIREMENTS:
18
31
 
19
- * FIX (list of requirements)
32
+ * rubygems
20
33
 
21
34
  == INSTALL:
22
35
 
23
- * FIX (sudo gem install, anything else)
36
+ * sudo gem install sexp_processor
24
37
 
25
38
  == LICENSE:
26
39
 
27
40
  (The MIT License)
28
41
 
29
- Copyright (c) 2008 FIX
42
+ Copyright (c) 2008 Ryan Davis, Seattle.rb
30
43
 
31
44
  Permission is hereby granted, free of charge, to any person obtaining
32
45
  a copy of this software and associated documentation files (the
data/lib/sexp.rb CHANGED
@@ -9,6 +9,9 @@ $TESTING ||= false # unless defined $TESTING
9
9
 
10
10
  class Sexp < Array # ZenTest FULL
11
11
 
12
+ attr_writer :line
13
+ attr_accessor :file, :comments
14
+
12
15
  @@array_types = [ :array, :args, ]
13
16
 
14
17
  ##
@@ -131,7 +134,11 @@ class Sexp < Array # ZenTest FULL
131
134
 
132
135
  def inspect # :nodoc:
133
136
  sexp_str = self.map {|x|x.inspect}.join(', ')
134
- return "s(#{sexp_str})"
137
+ if line && ENV['VERBOSE'] then
138
+ "s(#{sexp_str}).line(#{line})"
139
+ else
140
+ "s(#{sexp_str})"
141
+ end
135
142
  end
136
143
 
137
144
  def find_node name, delete = false
@@ -149,10 +156,27 @@ class Sexp < Array # ZenTest FULL
149
156
  end
150
157
  end
151
158
 
159
+ ##
160
+ # Find every node with type +name+.
161
+
152
162
  def find_nodes name
153
163
  find_all { | sexp | Sexp === sexp and sexp.first == name }
154
164
  end
155
165
 
166
+ ##
167
+ # If passed a line number, sets the line and returns self. Otherwise
168
+ # returns the line number. This allows you to do message cascades
169
+ # and still get the sexp back.
170
+
171
+ def line(n=nil)
172
+ if n then
173
+ @line = n
174
+ self
175
+ else
176
+ @line ||= nil
177
+ end
178
+ end
179
+
156
180
  ##
157
181
  # Returns the node named +node+, deleting it if +delete+ is true.
158
182
 
@@ -167,7 +191,14 @@ class Sexp < Array # ZenTest FULL
167
191
  end
168
192
 
169
193
  ##
170
- # Returns the Sexp without the node_type.
194
+ # Returns the node type of the Sexp.
195
+
196
+ def sexp_type
197
+ first
198
+ end
199
+
200
+ ##
201
+ # Returns the Sexp body, ie the values without the node type.
171
202
 
172
203
  def sexp_body
173
204
  self[1..-1]
@@ -34,7 +34,7 @@ require 'sexp'
34
34
 
35
35
  class SexpProcessor
36
36
 
37
- VERSION = '3.0.0'
37
+ VERSION = '3.0.1'
38
38
 
39
39
  ##
40
40
  # Automatically shifts off the Sexp type before handing the
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sexp_processor
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-22 00:00:00 -05:00
12
+ date: 2009-01-20 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,9 +20,9 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 1.8.0
23
+ version: 1.8.2
24
24
  version:
25
- description: FIX (describe your package)
25
+ description: sexp_processor branches from ParseTree bringing all the generic sexp processing tools with it. Sexp, SexpProcessor, Environment, etc... all for your language processing pleasure.
26
26
  email:
27
27
  - ryand-ruby@zenspider.com
28
28
  executables: []
@@ -46,7 +46,7 @@ files:
46
46
  - test/test_sexp.rb
47
47
  - test/test_sexp_processor.rb
48
48
  has_rdoc: true
49
- homepage: FIX (url)
49
+ homepage: http://rubyforge.org/projects/parsetree/
50
50
  post_install_message:
51
51
  rdoc_options:
52
52
  - --main
@@ -68,10 +68,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
68
  requirements: []
69
69
 
70
70
  rubyforge_project: parsetree
71
- rubygems_version: 1.3.0
71
+ rubygems_version: 1.3.1
72
72
  signing_key:
73
73
  specification_version: 2
74
- summary: FIX (describe your package)
74
+ summary: sexp_processor branches from ParseTree bringing all the generic sexp processing tools with it
75
75
  test_files:
76
76
  - test/test_composite_sexp_processor.rb
77
77
  - test/test_environment.rb