parslet-export 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0337e11572c426a238892a5581608d134cfb97e0
4
+ data.tar.gz: 5687f26d38a1469792f71d6d3073b9a981facfb5
5
+ SHA512:
6
+ metadata.gz: 53375a3cdceddeb9b5c275b671f387b5259d4b4692d4145355ae0b54e49542dc75652917e7cb24049e78230b2fe110724adb3a2bc06e695368ca6f71e9a2c881
7
+ data.tar.gz: 5f1d0d2fbc95bd79cdc09523248e2463254f1552a922ccbe1600fae79bb633f130703425563720d23fbf8a7e96c5763840259e6a04bed98df6c0a94dc36f0fe6
@@ -0,0 +1,22 @@
1
+ class Hash
2
+ def to_parslet
3
+ case fetch("atom")
4
+ when "entity"
5
+ Parslet::Atoms::Entity.new(fetch("name")).tap do |entity|
6
+ entity.instance_variable_set("@parslet", fetch("parslet").to_parslet)
7
+ end
8
+ when "named"
9
+ Parslet::Atoms::Named.new(fetch("parslet").to_parslet, fetch("name"))
10
+ when "repetition"
11
+ Parslet::Atoms::Repetition.new(fetch("parslet").to_parslet, fetch("min"), fetch("max"))
12
+ when "sequence"
13
+ Parslet::Atoms::Sequence.new(*fetch("parslets").map(&:to_parslet))
14
+ when "re"
15
+ Parslet::Atoms::Re.new(fetch("match")).tap do |re|
16
+ re.instance_variable_set("@re", fetch("re"))
17
+ end
18
+ when "str"
19
+ Parslet::Atoms::Str.new(fetch("str"))
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,6 @@
1
+ require "parslet"
2
+
3
+ require_relative "hash"
4
+ require_relative "parslet/export"
5
+ require_relative "parslet/parser"
6
+ require_relative "parslet/atoms"
@@ -0,0 +1,12 @@
1
+ require_relative "atoms/entity"
2
+ require_relative "atoms/named"
3
+ require_relative "atoms/re"
4
+ require_relative "atoms/repetition"
5
+ require_relative "atoms/sequence"
6
+ require_relative "atoms/str"
7
+
8
+ module Parslet
9
+ module Atoms
10
+
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ module Parslet
2
+ module Atoms
3
+ class Entity
4
+ def to_hash
5
+ {
6
+ "atom" => "entity",
7
+ "name" => name,
8
+ "parslet" => parslet.to_hash
9
+ }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Parslet
2
+ module Atoms
3
+ class Named
4
+ def to_hash
5
+ {
6
+ "atom" => "named",
7
+ "name" => name,
8
+ "parslet" => parslet.to_hash
9
+ }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Parslet
2
+ module Atoms
3
+ class Re
4
+ def to_hash
5
+ {
6
+ "atom" => "re",
7
+ "match" => match,
8
+ "re" => re
9
+ }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ module Parslet
2
+ module Atoms
3
+ class Repetition
4
+ def to_hash
5
+ {
6
+ "atom" => "repetition",
7
+ "min" => min,
8
+ "max" => max,
9
+ "parslet" => parslet.to_hash
10
+ }
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ module Parslet
2
+ module Atoms
3
+ class Sequence
4
+ def to_hash
5
+ {
6
+ "atom" => "sequence",
7
+ "parslets" => parslets.map(&:to_hash)
8
+ }
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Parslet
2
+ module Atoms
3
+ class Str
4
+ def to_hash
5
+ {
6
+ "atom" => "str",
7
+ "str" => str
8
+ }
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ require_relative "export/version"
2
+
3
+ module Parslet
4
+ module Export
5
+
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ module Parslet
2
+ module Export
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -0,0 +1,18 @@
1
+ module Parslet
2
+ class Parser
3
+ def to_hash
4
+ {
5
+ "atom" => "root",
6
+ "parslet" => root.to_hash
7
+ }
8
+ end
9
+
10
+ def self.from_hash(hash)
11
+ new.tap do |parser|
12
+ parser.define_singleton_method(hash["atom"]) do
13
+ hash["parslet"].to_parslet
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,151 @@
1
+ require "spec_helper"
2
+
3
+ describe Hash do
4
+ describe "#to_parslet" do
5
+ context "if given Entity" do
6
+ let(:hash) do
7
+ {
8
+ "atom" => "entity",
9
+ "name" => "foo",
10
+ "parslet" => {
11
+ "atom" => "str",
12
+ "str" => "foo"
13
+ }
14
+ }
15
+ end
16
+
17
+ it "should turn into an Entity" do
18
+ expect(hash.to_parslet).to be_kind_of(Parslet::Atoms::Entity)
19
+ end
20
+
21
+ it "should set the name" do
22
+ expect(hash.to_parslet.instance_variable_get("@name")).to eq("foo")
23
+ end
24
+
25
+ it "should set and convert the parslet" do
26
+ expect(hash.to_parslet.instance_variable_get("@parslet")).to be_kind_of(Parslet::Atoms::Str)
27
+ end
28
+ end
29
+
30
+ context "if given Named" do
31
+ let(:hash) do
32
+ {
33
+ "atom" => "named",
34
+ "name" => "foo",
35
+ "parslet" => {
36
+ "atom" => "str",
37
+ "str" => "foo"
38
+ }
39
+ }
40
+ end
41
+
42
+ it "should turn into a Named" do
43
+ expect(hash.to_parslet).to be_kind_of(Parslet::Atoms::Named)
44
+ end
45
+
46
+ it "should set the name" do
47
+ expect(hash.to_parslet.instance_variable_get("@name")).to eq("foo")
48
+ end
49
+
50
+ it "should set and convert the parslet" do
51
+ expect(hash.to_parslet.instance_variable_get("@parslet")).to be_kind_of(Parslet::Atoms::Str)
52
+ end
53
+ end
54
+
55
+ context "if given Re" do
56
+ let(:hash) do
57
+ {
58
+ "atom" => "re",
59
+ "re" => /(?-mix:foo)/m,
60
+ "match" => nil
61
+ }
62
+ end
63
+
64
+ it "should turn into an Entity" do
65
+ expect(hash.to_parslet).to be_kind_of(Parslet::Atoms::Re)
66
+ end
67
+
68
+ it "should set the name" do
69
+ expect(hash.to_parslet.instance_variable_get("@re")).to eq(/(?-mix:foo)/m)
70
+ end
71
+
72
+ it "should set the match" do
73
+ expect(hash.to_parslet.instance_variable_get("@match")).to eq("")
74
+ end
75
+ end
76
+
77
+ context "if given Repetition" do
78
+ let(:hash) do
79
+ {
80
+ "atom" => "repetition",
81
+ "min" => 4,
82
+ "max" => 5,
83
+ "parslet" => {
84
+ "atom" => "str",
85
+ "str" => "foo"
86
+ }
87
+ }
88
+ end
89
+
90
+ it "should turn into an Entity" do
91
+ expect(hash.to_parslet).to be_kind_of(Parslet::Atoms::Repetition)
92
+ end
93
+
94
+ it "should set the min" do
95
+ expect(hash.to_parslet.instance_variable_get("@min")).to eq(4)
96
+ end
97
+
98
+ it "should set the max" do
99
+ expect(hash.to_parslet.instance_variable_get("@max")).to eq(5)
100
+ end
101
+
102
+ it "should set and convert the parslet" do
103
+ expect(hash.to_parslet.instance_variable_get("@parslet")).to be_kind_of(Parslet::Atoms::Str)
104
+ end
105
+ end
106
+
107
+ context "if given Sequence" do
108
+ let(:hash) do
109
+ {
110
+ "atom" => "sequence",
111
+ "parslets" => [
112
+ {
113
+ "atom" => "str",
114
+ "str" => "foo"
115
+ },
116
+ {
117
+ "atom" => "str",
118
+ "str" => "foo"
119
+ }
120
+ ]
121
+ }
122
+ end
123
+
124
+ it "should turn into an Entity" do
125
+ expect(hash.to_parslet).to be_kind_of(Parslet::Atoms::Sequence)
126
+ end
127
+
128
+ it "should set and convert the parslets" do
129
+ expect(hash.to_parslet.instance_variable_get("@parslets").first).to be_kind_of(Parslet::Atoms::Str)
130
+ expect(hash.to_parslet.instance_variable_get("@parslets").last).to be_kind_of(Parslet::Atoms::Str)
131
+ end
132
+ end
133
+
134
+ context "if given Str" do
135
+ let(:hash) do
136
+ {
137
+ "atom" => "str",
138
+ "str" => "foo"
139
+ }
140
+ end
141
+
142
+ it "should turn into an Entity" do
143
+ expect(hash.to_parslet).to be_kind_of(Parslet::Atoms::Str)
144
+ end
145
+
146
+ it "should set the name" do
147
+ expect(hash.to_parslet.instance_variable_get("@str")).to eq("foo")
148
+ end
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,24 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Atoms::Entity do
4
+ describe "#to_hash" do
5
+ let(:atom) do
6
+ described_class.new("foo").tap do |entity|
7
+ entity.instance_variable_set("@parslet", Parslet::Atoms::Str.new("foo"))
8
+ end
9
+ end
10
+
11
+ it "returns a Hash object" do
12
+ expect(atom.to_hash).to be_kind_of(Hash)
13
+ end
14
+
15
+ it "contains the name" do
16
+ expect(atom.to_hash["name"]).to eq("foo")
17
+ end
18
+
19
+ it "contains the parslet" do
20
+ expect(atom.to_hash["parslet"]).to be_kind_of(Hash)
21
+ expect(atom.to_hash["parslet"]).to have_key("atom")
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Atoms::Named do
4
+ describe "#to_hash" do
5
+ let(:atom) { described_class.new(Parslet::Atoms::Str.new("foo"), "foo") }
6
+
7
+ it "returns a Hash object" do
8
+ expect(atom.to_hash).to be_kind_of(Hash)
9
+ end
10
+
11
+ it "contains the name" do
12
+ expect(atom.to_hash["name"]).to eq("foo")
13
+ end
14
+
15
+ it "contains the parslet" do
16
+ expect(atom.to_hash["parslet"]).to be_kind_of(Hash)
17
+ expect(atom.to_hash["parslet"]).to have_key("atom")
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Atoms::Re do
4
+ describe "#to_hash" do
5
+ let(:atom) { described_class.new(/foo/) }
6
+ it "returns a Hash object" do
7
+ expect(atom.to_hash).to be_kind_of(Hash)
8
+ end
9
+
10
+ it "contains the formatted regular expression" do
11
+ expect(atom.to_hash["re"]).to eq(/(?-mix:foo)/m)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,24 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Atoms::Repetition do
4
+ describe "#to_hash" do
5
+ let(:atom) { described_class.new(Parslet::Atoms::Str.new("foo"), 1, 2) }
6
+
7
+ it "returns a Hash object" do
8
+ expect(atom.to_hash).to be_kind_of(Hash)
9
+ end
10
+
11
+ it "should contain the min" do
12
+ expect(atom.to_hash["min"]).to eq(1)
13
+ end
14
+
15
+ it "should contain the max" do
16
+ expect(atom.to_hash["max"]).to eq(2)
17
+ end
18
+
19
+ it "should contain the parslet" do
20
+ expect(atom.to_hash["parslet"]).to be_kind_of(Hash)
21
+ expect(atom.to_hash["parslet"]).to have_key("atom")
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Atoms::Sequence do
4
+ describe "#to_hash" do
5
+ let(:atom) do
6
+ described_class.new(Parslet::Atoms::Str.new("str"))
7
+ end
8
+
9
+ it "returns a Hash object" do
10
+ expect(atom.to_hash).to be_kind_of(Hash)
11
+ end
12
+
13
+ it "contains a parslet" do
14
+ expect(atom.to_hash["parslets"]).to be_kind_of(Array)
15
+ expect(atom.to_hash["parslets"].first).to have_key("atom")
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Atoms::Str do
4
+ describe "#to_hash" do
5
+ let(:atom) { described_class.new("foo") }
6
+ it "returns a Hash object" do
7
+ expect(atom.to_hash).to be_kind_of(Hash)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Atoms do
4
+
5
+ end
@@ -0,0 +1,7 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Export::VERSION do
4
+ it "should be a string" do
5
+ expect(Parslet::Export::VERSION).to be_kind_of(String)
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Export do
4
+
5
+ end
@@ -0,0 +1,44 @@
1
+ require "spec_helper"
2
+
3
+ describe Parslet::Parser do
4
+ describe "to_hash" do
5
+ let(:parser) do
6
+ described_class.new.tap do |parser|
7
+ parser.define_singleton_method(:root) do
8
+ Parslet::Atoms::Str.new("foo")
9
+ end
10
+ end
11
+ end
12
+
13
+ it "should return the root object as a Hash" do
14
+ expect(parser.to_hash).to be_kind_of(Hash)
15
+ expect(parser.to_hash["atom"]).to eq("root")
16
+ expect(parser.to_hash["parslet"]).to eq({ "atom" => "str", "str" => "foo" })
17
+ end
18
+ end
19
+
20
+ describe ".from_hash" do
21
+ let(:hash) do
22
+ {
23
+ "atom" => "root",
24
+ "parslet" => {
25
+ "atom" => "str",
26
+ "str" => "foo"
27
+ }
28
+ }
29
+ end
30
+ let(:parser) { Parslet::Parser.from_hash(hash) }
31
+
32
+ it "should return a Parslet::Parser" do
33
+ expect(parser).to be_kind_of(Parslet::Parser)
34
+ end
35
+
36
+ it "should have a root" do
37
+ expect(parser).to be_respond_to(:root)
38
+ end
39
+
40
+ it "should return a root with the right atom" do
41
+ expect(parser.root).to be_kind_of(Parslet::Atoms::Str)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,9 @@
1
+ require "coveralls"
2
+ Coveralls.wear! do
3
+ add_filter "/spec/"
4
+ end
5
+
6
+ require "pry"
7
+ require "rspec"
8
+ require "mocha/api"
9
+ require "parslet-export"
metadata ADDED
@@ -0,0 +1,221 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: parslet-export
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kurtis Rainbolt-Greene
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: parslet
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mocha
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: kramdown
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: coveralls
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: m
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: Turn Parslet::Parser into other things
154
+ email:
155
+ - me@kurtisrainboltgreene.name
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - lib/hash.rb
161
+ - lib/parslet/atoms/entity.rb
162
+ - lib/parslet/atoms/named.rb
163
+ - lib/parslet/atoms/re.rb
164
+ - lib/parslet/atoms/repetition.rb
165
+ - lib/parslet/atoms/sequence.rb
166
+ - lib/parslet/atoms/str.rb
167
+ - lib/parslet/atoms.rb
168
+ - lib/parslet/export/version.rb
169
+ - lib/parslet/export.rb
170
+ - lib/parslet/parser.rb
171
+ - lib/parslet-export.rb
172
+ - spec/lib/hash_spec.rb
173
+ - spec/lib/parslet/atoms/entity_spec.rb
174
+ - spec/lib/parslet/atoms/named_spec.rb
175
+ - spec/lib/parslet/atoms/re_spec.rb
176
+ - spec/lib/parslet/atoms/repetition_spec.rb
177
+ - spec/lib/parslet/atoms/sequence_spec.rb
178
+ - spec/lib/parslet/atoms/str_spec.rb
179
+ - spec/lib/parslet/atoms_spec.rb
180
+ - spec/lib/parslet/export/version_spec.rb
181
+ - spec/lib/parslet/export_spec.rb
182
+ - spec/lib/parslet/parser_spec.rb
183
+ - spec/spec_helper.rb
184
+ homepage: http://krainboltgreene.github.com/parslet-export
185
+ licenses:
186
+ - MIT
187
+ metadata: {}
188
+ post_install_message:
189
+ rdoc_options: []
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - '>='
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ required_rubygems_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ requirements: []
203
+ rubyforge_project:
204
+ rubygems_version: 2.0.5
205
+ signing_key:
206
+ specification_version: 4
207
+ summary: Turn Parslet::Parser into other things
208
+ test_files:
209
+ - spec/lib/hash_spec.rb
210
+ - spec/lib/parslet/atoms/entity_spec.rb
211
+ - spec/lib/parslet/atoms/named_spec.rb
212
+ - spec/lib/parslet/atoms/re_spec.rb
213
+ - spec/lib/parslet/atoms/repetition_spec.rb
214
+ - spec/lib/parslet/atoms/sequence_spec.rb
215
+ - spec/lib/parslet/atoms/str_spec.rb
216
+ - spec/lib/parslet/atoms_spec.rb
217
+ - spec/lib/parslet/export/version_spec.rb
218
+ - spec/lib/parslet/export_spec.rb
219
+ - spec/lib/parslet/parser_spec.rb
220
+ - spec/spec_helper.rb
221
+ has_rdoc: