halunke 0.9.0 → 0.10.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.
@@ -39,12 +39,15 @@ module Halunke
39
39
  end
40
40
 
41
41
  context[name] = HClass.new(name, allowed_attributes, instance_methods, class_methods, false)
42
+ rescue FrozenError
43
+ assigned_value = context[name].inspect(context)
44
+ raise HBarewordAlreadyAssigned.new("Bareword '#{name} is already assigned to #{assigned_value}. In Halunke, you can only assign once.", message_value[0].source_code_position)
42
45
  end
43
46
 
44
47
  private
45
48
 
46
- def determine_name(hstring)
47
- hstring.ruby_value
49
+ def determine_name(unassigned_bareword)
50
+ unassigned_bareword.ruby_value
48
51
  end
49
52
 
50
53
  def determine_allowed_attributes(harray)
@@ -64,6 +67,12 @@ module Halunke
64
67
  })
65
68
  }
66
69
  hdictionary.ruby_value.each_pair do |method_name, fn|
70
+ raise HInvalidMessageName.new("Message name must be a String", method_name.source_code_position) unless method_name.runtime_class.name == "String"
71
+ raise HInvalidMessageName.new("An empty String is not a valid message", method_name.source_code_position) if method_name.ruby_value == ""
72
+ raise HInvalidMessageName.new("A message can't start with a space", method_name.source_code_position) if method_name.ruby_value.start_with? " "
73
+ raise HInvalidMessageName.new("A message can't stop with a space", method_name.source_code_position) if method_name.ruby_value.end_with? " "
74
+ raise HInvalidMessageName.new("The parts of the message need to be separated by a single space", method_name.source_code_position) if method_name.ruby_value.match(/ {2,}/)
75
+
67
76
  instance_methods[method_name.ruby_value] = fn
68
77
  end
69
78
  instance_methods
@@ -26,7 +26,7 @@ module Halunke
26
26
  context["self"].receive_message(
27
27
  context,
28
28
  "new",
29
- [HDictionary.create_instance(HString.create_instance("string") => context["str"])]
29
+ [HDictionary.create_instance({HString.create_instance("string") => context["str"]})]
30
30
  )
31
31
  })
32
32
  },
@@ -5,17 +5,17 @@ module Halunke
5
5
  [],
6
6
  {
7
7
  "run on" => HFunction.new([:self, :app, :host_port], lambda { |context|
8
- require "rack"
8
+ require "rackup"
9
9
 
10
10
  host, port = context["host_port"].ruby_value.split(":")
11
11
 
12
12
  # TODO: Body, Headers
13
- Rack::Handler::WEBrick.run(lambda { |env|
14
- henv = context["Dictionary"].create_instance(
13
+ Rackup::Handler::WEBrick.run(lambda { |env|
14
+ henv = context["Dictionary"].create_instance({
15
15
  context["String"].create_instance("request_method") => context["String"].create_instance(env["REQUEST_METHOD"]),
16
16
  context["String"].create_instance("path") => context["String"].create_instance(env["PATH_INFO"]),
17
17
  context["String"].create_instance("query") => context["String"].create_instance(env["QUERY_STRING"])
18
- )
18
+ })
19
19
  result = context["app"].receive_message(context, "call", [henv]).ruby_value
20
20
 
21
21
  status = result[0].ruby_value
@@ -27,8 +27,8 @@ module Halunke
27
27
 
28
28
  body = result[2].ruby_value.map(&:ruby_value)
29
29
 
30
- [status, headers, body]
31
- }, { Host: host, Port: port })
30
+ [status.to_i, headers, body]
31
+ }, Host: host, Port: port)
32
32
 
33
33
  env["host_port"]
34
34
  }),
@@ -156,11 +156,10 @@ self.tokenizer_en_main = 2;
156
156
  end
157
157
 
158
158
  def tokenize(data)
159
- data.chomp!
160
- eof = data.length
159
+ eof = data.chomp.length
161
160
 
162
161
 
163
- # line 164 "lib/halunke/tokenizer.rb"
162
+ # line 163 "lib/halunke/tokenizer.rb"
164
163
  begin
165
164
  p ||= 0
166
165
  pe ||= data.length
@@ -170,9 +169,9 @@ begin
170
169
  act = 0
171
170
  end
172
171
 
173
- # line 55 "lib/halunke/tokenizer.rl"
172
+ # line 54 "lib/halunke/tokenizer.rl"
174
173
 
175
- # line 176 "lib/halunke/tokenizer.rb"
174
+ # line 175 "lib/halunke/tokenizer.rb"
176
175
  begin
177
176
  _klen, _trans, _keys, _acts, _nacts = nil
178
177
  _goto_level = 0
@@ -202,7 +201,7 @@ begin
202
201
  begin
203
202
  ts = p
204
203
  end
205
- # line 206 "lib/halunke/tokenizer.rb"
204
+ # line 205 "lib/halunke/tokenizer.rb"
206
205
  end # from state action switch
207
206
  end
208
207
  if _trigger_goto
@@ -406,7 +405,7 @@ when 24 then
406
405
  raise "Could not lex '#{ data[ts...te] }'" end
407
406
  end
408
407
  end
409
- # line 410 "lib/halunke/tokenizer.rb"
408
+ # line 409 "lib/halunke/tokenizer.rb"
410
409
  end # action switch
411
410
  end
412
411
  end
@@ -426,7 +425,7 @@ when 0 then
426
425
  # line 1 "NONE"
427
426
  begin
428
427
  ts = nil; end
429
- # line 430 "lib/halunke/tokenizer.rb"
428
+ # line 429 "lib/halunke/tokenizer.rb"
430
429
  end # to state action switch
431
430
  end
432
431
  if _trigger_goto
@@ -453,7 +452,7 @@ end
453
452
  end
454
453
  end
455
454
 
456
- # line 56 "lib/halunke/tokenizer.rl"
455
+ # line 55 "lib/halunke/tokenizer.rl"
457
456
 
458
457
  @tokens
459
458
  end
@@ -48,8 +48,7 @@ module Halunke
48
48
  end
49
49
 
50
50
  def tokenize(data)
51
- data.chomp!
52
- eof = data.length
51
+ eof = data.chomp.length
53
52
 
54
53
  %% write init;
55
54
  %% write exec;
@@ -1,3 +1,3 @@
1
1
  module Halunke
2
- VERSION = "0.9.0"
2
+ VERSION = "0.10.1"
3
3
  end
metadata CHANGED
@@ -1,99 +1,56 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: halunke
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Dohmen
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2019-03-05 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: rack
13
+ name: rackup
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: 2.0.4
18
+ version: '2.3'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: 2.0.4
25
+ version: '2.3'
27
26
  - !ruby/object:Gem::Dependency
28
- name: warning
27
+ name: webrick
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 0.10.1
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 0.10.1
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 1.17.2
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 1.17.2
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 12.3.2
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 12.3.2
69
- - !ruby/object:Gem::Dependency
70
- name: minitest
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
30
+ - - ">="
74
31
  - !ruby/object:Gem::Version
75
- version: 5.11.3
76
- type: :development
32
+ version: '0'
33
+ type: :runtime
77
34
  prerelease: false
78
35
  version_requirements: !ruby/object:Gem::Requirement
79
36
  requirements:
80
- - - "~>"
37
+ - - ">="
81
38
  - !ruby/object:Gem::Version
82
- version: 5.11.3
39
+ version: '0'
83
40
  - !ruby/object:Gem::Dependency
84
- name: racc
41
+ name: reline
85
42
  requirement: !ruby/object:Gem::Requirement
86
43
  requirements:
87
- - - "~>"
44
+ - - ">="
88
45
  - !ruby/object:Gem::Version
89
- version: 1.4.15
90
- type: :development
46
+ version: '0'
47
+ type: :runtime
91
48
  prerelease: false
92
49
  version_requirements: !ruby/object:Gem::Requirement
93
50
  requirements:
94
- - - "~>"
51
+ - - ">="
95
52
  - !ruby/object:Gem::Version
96
- version: 1.4.15
53
+ version: '0'
97
54
  description: A dynamic OO language with ideas traditionally described as "functional"
98
55
  email:
99
56
  - lucas@dohmen.io
@@ -104,7 +61,8 @@ extra_rdoc_files: []
104
61
  files:
105
62
  - ".editorconfig"
106
63
  - ".gitignore"
107
- - ".travis.yml"
64
+ - ".ruby-version"
65
+ - ".woodpecker/test.yml"
108
66
  - CODE_OF_CONDUCT.md
109
67
  - Dockerfile
110
68
  - Gemfile
@@ -168,7 +126,6 @@ homepage: http://halunke.jetzt
168
126
  licenses:
169
127
  - MIT
170
128
  metadata: {}
171
- post_install_message:
172
129
  rdoc_options: []
173
130
  require_paths:
174
131
  - lib
@@ -183,8 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
140
  - !ruby/object:Gem::Version
184
141
  version: '0'
185
142
  requirements: []
186
- rubygems_version: 3.0.1
187
- signing_key:
143
+ rubygems_version: 4.0.18
188
144
  specification_version: 4
189
145
  summary: The Halunke programming language
190
146
  test_files: []
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4.3
5
- before_install: gem install bundler -v 1.16.1