weskit 0.1.0 → 0.2.0

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.
@@ -1,6 +1,3 @@
1
- require 'polyglot'
2
- require 'treetop'
3
-
4
1
  require 'open-uri'
5
2
  require 'stringio'
6
3
  require 'zlib'
@@ -18,7 +15,7 @@ module Weskit::WML
18
15
  begin
19
16
  str = open(uri).read
20
17
  rescue
21
- raise Errrors::ReadError, "Coldn't open URI"
18
+ raise Errrors::ReadError, "Couldn't open URI"
22
19
  ensure
23
20
  str = Zlib::GzipReader.new(StringIO.new str).read rescue str
24
21
  end
@@ -29,19 +26,15 @@ module Weskit::WML
29
26
  private
30
27
 
31
28
  def parse data
32
- parsed = parser.parse data.strip, :consume_all_input => false
29
+ parser = KPEGParser.new "#{data}\n"
33
30
 
34
- unless parsed
35
- msg = parser.failure_reason or 'Invalid data'
31
+ unless parser.parse
32
+ msg = "#{parser.failure_character} #{parser.failure_info}"
36
33
  raise Errors::ParseError, msg
37
34
  end
38
35
 
39
- parsed.wml
40
- end
41
-
42
- def parser
43
- @parser ||= WesnothMarkupLanguageParser.new
36
+ parser.result
44
37
  end
45
38
  end
46
39
  end
47
- end
40
+ end
@@ -1,5 +1,4 @@
1
1
  require 'wml_spec_helper'
2
- require 'awesome_print'
3
2
 
4
3
  describe Weskit::WML::Parser do
5
4
  include WMLHelpers
@@ -21,12 +20,28 @@ describe Weskit::WML::Parser do
21
20
  parsed[:a].should match_value_of(:b)
22
21
  end
23
22
 
23
+ specify 'concated' do
24
+ parsed = Weskit::WML::Parser.string ' a= _ "a" + 1 '
25
+ parsed[:a].attribute.should be_translatable
26
+ parsed[:a].should match_value_of(:a1)
27
+ end
28
+
24
29
  specify 'multiline' do
25
30
  parsed = Weskit::WML::Parser.string %Q{a= "b \n c"}
26
31
  parsed[:a].attribute.should be_multiline
27
32
  parsed[:a].should match_value_of("b \n c")
28
33
  end
29
34
 
35
+ specify 'multiple' do
36
+ parsed = Weskit::WML::Parser.string %Q{ a, b = _"a", <<b>> }
37
+
38
+ parsed[:a].attribute.should be_translatable
39
+ parsed[:a].should match_value_of(:a)
40
+
41
+ parsed[:b].attribute.should be_code
42
+ parsed[:b].should match_value_of(:b)
43
+ end
44
+
30
45
  specify 'escape sequence' do
31
46
  parsed = Weskit::WML::Parser.string %Q{ a= "b "" c" }
32
47
  parsed[:a].should match_value_of('b " c')
@@ -40,12 +55,6 @@ describe Weskit::WML::Parser do
40
55
  end
41
56
 
42
57
  context 'element' do
43
- specify 'tags' do
44
- expect {
45
- Weskit::WML::Parser.string "[foo]\n[/bar]"
46
- }.to raise_error Weskit::WML::Errors::ParseError
47
- end
48
-
49
58
  specify 'default' do
50
59
  parsed = Weskit::WML::Parser.string "[foo]\n[/foo]"
51
60
  parsed[0].should have_identifier_of(:foo)
data/weskit.gemspec CHANGED
@@ -18,10 +18,8 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename f }
19
19
  s.require_paths = ['lib']
20
20
 
21
- s.add_development_dependency 'awesome_print'
22
- s.add_development_dependency 'rake'
23
- s.add_development_dependency 'rspec'
24
- s.add_runtime_dependency 'polyglot'
25
- s.add_runtime_dependency 'term-ansicolor'
26
- s.add_runtime_dependency 'treetop'
21
+ s.add_development_dependency 'kpeg', '~>0.10.0'
22
+ s.add_development_dependency 'rake', '>=0.9.2.2'
23
+ s.add_development_dependency 'rspec', '~>2.11.0'
24
+ s.add_runtime_dependency 'term-ansicolor', '>=1.0.7'
27
25
  end
metadata CHANGED
@@ -1,119 +1,97 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: weskit
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - f6p
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-09-24 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: awesome_print
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
17
+
18
+ date: 2012-10-05 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: kpeg
23
22
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: rake
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 55
29
+ segments:
30
+ - 0
31
+ - 10
32
+ - 0
33
+ version: 0.10.0
38
34
  type: :development
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
39
38
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
41
40
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 11
45
+ segments:
46
+ - 0
47
+ - 9
48
+ - 2
49
+ - 2
50
+ version: 0.9.2.2
54
51
  type: :development
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec
55
55
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: polyglot
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
56
+ requirement: &id003 !ruby/object:Gem::Requirement
73
57
  none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ hash: 35
62
+ segments:
63
+ - 2
64
+ - 11
65
+ - 0
66
+ version: 2.11.0
67
+ type: :development
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
79
70
  name: term-ansicolor
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :runtime
87
71
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: treetop
96
- requirement: !ruby/object:Gem::Requirement
72
+ requirement: &id004 !ruby/object:Gem::Requirement
97
73
  none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 25
78
+ segments:
79
+ - 1
80
+ - 0
81
+ - 7
82
+ version: 1.0.7
102
83
  type: :runtime
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
84
+ version_requirements: *id004
110
85
  description: Tools for interacting with Wesnoth Markup Language, MP Server and such.
111
- email:
86
+ email:
112
87
  - filip.pyda@gmail.com
113
88
  executables: []
89
+
114
90
  extensions: []
91
+
115
92
  extra_rdoc_files: []
116
- files:
93
+
94
+ files:
117
95
  - .gitignore
118
96
  - .rspec
119
97
  - .travis.yml
@@ -150,16 +128,16 @@ files:
150
128
  - lib/weskit/wml/formatters/attribute.rb
151
129
  - lib/weskit/wml/formatters/element.rb
152
130
  - lib/weskit/wml/formatters/item_formatter.rb
153
- - lib/weskit/wml/grammars/wml.treetop
131
+ - lib/weskit/wml/grammars/wml.kpeg
154
132
  - lib/weskit/wml/item.rb
155
133
  - lib/weskit/wml/items.rb
134
+ - lib/weskit/wml/kpeg_parser.rb
156
135
  - lib/weskit/wml/mixins/container.rb
157
136
  - lib/weskit/wml/mixins/grammar.rb
158
137
  - lib/weskit/wml/mixins/searchable.rb
159
138
  - lib/weskit/wml/mixins/validator.rb
160
139
  - lib/weskit/wml/parser.rb
161
140
  - lib/weskit/wml/root.rb
162
- - lib/weskit/wml/wml.rb
163
141
  - spec/spec_helper.rb
164
142
  - spec/wml/attribute_spec.rb
165
143
  - spec/wml/attributes_spec.rb
@@ -178,35 +156,38 @@ files:
178
156
  - weskit.gemspec
179
157
  homepage: https://github.com/f6p/weskit
180
158
  licenses: []
159
+
181
160
  post_install_message:
182
161
  rdoc_options: []
183
- require_paths:
162
+
163
+ require_paths:
184
164
  - lib
185
- required_ruby_version: !ruby/object:Gem::Requirement
165
+ required_ruby_version: !ruby/object:Gem::Requirement
186
166
  none: false
187
- requirements:
188
- - - ! '>='
189
- - !ruby/object:Gem::Version
190
- version: '0'
191
- segments:
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ hash: 3
171
+ segments:
192
172
  - 0
193
- hash: -4565766782065065646
194
- required_rubygems_version: !ruby/object:Gem::Requirement
173
+ version: "0"
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
195
175
  none: false
196
- requirements:
197
- - - ! '>='
198
- - !ruby/object:Gem::Version
199
- version: '0'
200
- segments:
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ hash: 3
180
+ segments:
201
181
  - 0
202
- hash: -4565766782065065646
182
+ version: "0"
203
183
  requirements: []
184
+
204
185
  rubyforge_project:
205
- rubygems_version: 1.8.24
186
+ rubygems_version: 1.8.11
206
187
  signing_key:
207
188
  specification_version: 3
208
189
  summary: Ruby utilies for BfW
209
- test_files:
190
+ test_files:
210
191
  - spec/spec_helper.rb
211
192
  - spec/wml/attribute_spec.rb
212
193
  - spec/wml/attributes_spec.rb
@@ -222,3 +203,4 @@ test_files:
222
203
  - spec/wml_matchers.rb
223
204
  - spec/wml_shared_examples.rb
224
205
  - spec/wml_spec_helper.rb
206
+ has_rdoc:
@@ -1,195 +0,0 @@
1
- require 'treetop'
2
- require 'weskit/wml'
3
-
4
- grammar WesnothMarkupLanguage
5
- rule document
6
- contents {
7
- def wml
8
- ::Weskit::WML::Root.new.push *::Weskit::WML::Mixins::Grammar.reject_non_wml(elements)
9
- end
10
- }
11
- end
12
-
13
- # parts -------------------------------------------------------------------------------
14
-
15
- rule identifier
16
- [a-z] [a-z_]* {
17
- def name
18
- text_value
19
- end
20
- }
21
- end
22
-
23
- rule raw_string
24
- (!eol .)* {
25
- def data
26
- text_value
27
- end
28
- }
29
- end
30
-
31
- rule code_content
32
- (!'>>' content)* {
33
- def contents
34
- text_value
35
- end
36
- }
37
- end
38
-
39
- rule code_string
40
- '<<' string:code_content '>>' {
41
- def data
42
- string.contents
43
- end
44
- }
45
- end
46
-
47
- rule multiline_content
48
- (!quote content)* {
49
- def contents
50
- text_value
51
- end
52
- }
53
- end
54
-
55
- rule multiline_string
56
- (quote string:multiline_content quote)* {
57
- def data
58
- elements.collect(&:string).collect(&:contents).join '"'
59
- end
60
- }
61
- end
62
-
63
- rule translatable_string
64
- '_' lws string:multiline_string {
65
- def data
66
- string.contents
67
- end
68
- }
69
- end
70
-
71
- rule opening_tag
72
- lws '[' tag:identifier ']' fws {
73
- def name
74
- tag.name
75
- end
76
- }
77
- end
78
-
79
- rule amending_tag
80
- lws '[+' tag:identifier ']' fws {
81
- def name
82
- tag.name
83
- end
84
- }
85
- end
86
-
87
- rule closing_tag
88
- lws '[/' tag:identifier ']' fws {
89
- def name
90
- tag.name
91
- end
92
- }
93
- end
94
-
95
- rule blank_line
96
- ws* "\n"
97
- end
98
-
99
- rule item
100
- code_attribute / multiline_attribute / translatable_attribute / attribute / amending_element / element
101
- end
102
-
103
- rule contents
104
- (blank_line / item)* {
105
- def items
106
- ::Weskit::WML::Mixins::Grammar.reject_non_wml elements
107
- end
108
- }
109
- end
110
-
111
- # items -------------------------------------------------------------------------------
112
-
113
- rule attribute
114
- lws id:identifier lws equals value:raw_string eol {
115
- def item
116
- ::Weskit::WML::Attribute.new id.name, value.data
117
- end
118
- }
119
- end
120
-
121
- rule code_attribute
122
- lws id:identifier lws equals lws value:code_string fws {
123
- def item
124
- ::Weskit::WML::Attribute.new id.name, value.data, :code => true
125
- end
126
- }
127
- end
128
-
129
- rule multiline_attribute
130
- lws id:identifier lws equals lws value:multiline_string fws {
131
- def item
132
- ::Weskit::WML::Attribute.new id.name, value.data
133
- end
134
- }
135
- end
136
-
137
- rule translatable_attribute
138
- lws id:identifier lws equals lws '_' lws value:multiline_string fws {
139
- def item
140
- ::Weskit::WML::Attribute.new id.name, value.data, :translatable => true
141
- end
142
- }
143
- end
144
-
145
- rule element
146
- open:opening_tag nested:contents close:closing_tag {
147
- def item
148
- ::Weskit::WML::Mixins::Grammar.raise_on_mismatching open, close
149
- ::Weskit::WML::Element.new(open.name).push *nested.items
150
- end
151
- }
152
- end
153
-
154
- rule amending_element
155
- open:amending_tag nested:contents close:closing_tag {
156
- def item
157
- ::Weskit::WML::Mixins::Grammar.raise_on_mismatching open, close
158
- ::Weskit::WML::Element.new(open.name, :amendment => true).push *nested.items
159
- end
160
- }
161
- end
162
-
163
- # helpers -----------------------------------------------------------------------------
164
-
165
- rule content
166
- "\n" / .
167
- end
168
-
169
- rule eol
170
- "\n" / !.
171
- end
172
-
173
- rule equals
174
- '='
175
- end
176
-
177
- rule quote
178
- '"'
179
- end
180
-
181
- # whitespace
182
- rule ws
183
- "\s" / "\t"
184
- end
185
-
186
- # leading whitespaces
187
- rule lws
188
- ws*
189
- end
190
-
191
- # following whitespaces
192
- rule fws
193
- ws* eol
194
- end
195
- end